Esempio n. 1
0
def test_problematic():
    a = Variable(val=2, name='a')
    with pytest.raises(ZeroDivisionError):
        t1 = Diff().auto_diff(function=div_zero, eval_point=[a])
    with pytest.raises(NotImplementedError):
        t1 = Diff().hessian(functions=[add_function], eval_points=[a])
    with pytest.raises(NotImplementedError):
        print(bm.arcsinh(1))
    with pytest.raises(NotImplementedError):
        print(bm.arccosh(1))
    with pytest.raises(NotImplementedError):
        print(bm.arctanh(1))
def test_non_alphabetical_22():
    x = Variable(val=3, name='z')
    y = Variable(val=5, name='a')
    t1 = Diff().jacobian([f1,f2], [x,y])
    assert(t1.shape == (2,2))
    assert(t1[0][0] == 30)
    assert(t1[0][1] == 9)
    assert(t1[1][0] == 5)
    assert(t1[1][1] == bm.cos(5))
def test_jacobian_22():
    x = Variable(val=3, name='x')
    y = Variable(val=5, name='y')
    t1 = Diff().jacobian([f1,f2], [x,y])
    assert(t1.shape == (2,2))
    assert(t1[0][0] == 30)
    assert(t1[0][1] == 9)
    assert(t1[1][0] == 5)
    assert(t1[1][1] == bm.cos(5))
def test_jacobian_32():
    x = Variable(val=3, name='c')
    y = Variable(val=5, name='a')
    z = Variable(val=5, name='t')
    t1 = Diff().jacobian([f1,f2,f3], [x,y])
    assert(t1.shape == (3,2))
    assert(t1[0][0] == 30)
    assert(t1[0][1] == 9)
    assert(t1[1][0] == 5)
    assert(t1[1][1] == bm.cos(5))
    assert(t1[2][0] == 5)
    assert(t1[2][1] == 4)
def test_jacobian_23():
    x = Variable(val=3, name='x')
    y = Variable(val=5, name='y')
    z = Variable(val=2, name='z')
    t1 = Diff().jacobian([f1,f2], [x,y,z])
    assert(t1.shape == (2,3))
    assert(t1[0][0] == 30)
    assert(t1[0][1] == 9)
    assert(t1[0][2] == 1)
    assert(t1[1][0] == 5)
    assert(t1[1][1] == bm.cos(5))
    assert(t1[0][2] == 1)
Esempio n. 6
0
def test_more_operators():
    a = Variable(val=4, name='a')
    # Power
    t1 = Diff().auto_diff(function=power_scalar, eval_point=[a])
    assert (t1.val == 26)
    assert (t1.der['a'] == 8)

    # Square root
    t2 = Diff().auto_diff(function=sqrt_scalar, eval_point=[a])
    assert (t2.val == 13)
    assert (t2.der['a'] == 1 / 3)

    # Power function
    t3 = Diff().auto_diff(function=power_function, eval_point=[a])
    assert (t3.val == 16)
    assert (t3.der['a'] == bm.log(2) * 16)
    assert (t3.der['a'] == np.log(2) * 16)

    # Power function general
    t4 = Diff().auto_diff(function=power_function_general, eval_point=[a])
    assert (t4.val == 256)
    assert (t4.der['a'] == 256 * (bm.log(4) + 1))
    assert (t4.der['a'] == 256 * (np.log(4) + 1))
Esempio n. 7
0
def test_sanity_checks():
    assert (bm.log(4.1) == np.log(4.1))
    assert (bm.exp(-10.1) == np.exp(-10.1))
    assert (bm.sqrt(112.3) == np.sqrt(112.3))
    assert (bm.sin(4.1) == np.sin(4.1))
    assert (bm.cos(2.2) == np.cos(2.2))
    assert (bm.tan(2) == np.tan(2.0))
    assert (bm.arcsin(0) == np.arcsin(0))
    assert (bm.arccos(0.2) == np.arccos(0.2))
    assert (bm.arctan(2) == np.arctan(2))
    assert (bm.sinh(2) == np.sinh(2))
    assert (bm.cosh(2) == np.cosh(2))
    assert (bm.tanh(2) == np.tanh(2))
    assert (bm.logk(2, np.exp(1)) == np.log(2))
Esempio n. 8
0
def logk_e(x):
    return bm.logk(x, bm.exp(1))
Esempio n. 9
0
def cosh_fn(x, y):
    return -x * y * bm.cosh(x * y)
Esempio n. 10
0
def sinh_cosh(x, y):
    return bm.sinh(x) + bm.cosh(y)
Esempio n. 11
0
def logk_test(x):
    return bm.logk(x * x, base=10)
Esempio n. 12
0
def sqrt_function(x, y):
    return bm.sqrt(x) + bm.sqrt(y)
Esempio n. 13
0
def tan_function(x, y):
    return bm.tan(2 * x * y)
Esempio n. 14
0
def arctan_fn(x, y):
    return -y * bm.arctan(x * y)
Esempio n. 15
0
def sinh_fn(x, y):
    return -x * y * bm.sinh(x * y)
Esempio n. 16
0
def arcsin_fn(x, y):
    return -y * bm.arcsin(x * y)
Esempio n. 17
0
def arccos_fn(x, y):
    return -y * bm.arccos(x * y)
Esempio n. 18
0
def tan_fn(x, y):
    return y * bm.tan(x * y)
Esempio n. 19
0
def sin_cos(x, y):
    return y * bm.sin(x * x * x) + x * bm.cos(y)
Esempio n. 20
0
def sqrt_fn(x, y):
    return x * bm.sqrt(x * y) + x * x * x
Esempio n. 21
0
def sqrt_scalar(x):
    return 10 + bm.sqrt(2 * x + 1)
Esempio n. 22
0
def tanh_fn(x, y):
    return -x * y * bm.tanh(x * y)
Esempio n. 23
0
def log_exp_function(x, y):
    return bm.log(x) + bm.exp(y)
Esempio n. 24
0
def tan_function(x):
    return bm.tan(2 * x)
Esempio n. 25
0
def sin_cos(x, y):
    return bm.sin(x) + bm.cos(y)
Esempio n. 26
0
def inverse_trig(x):
    # arcsin, arccos, arctan
    return bm.arcsin(x) - bm.arccos(x) + bm.arctan(x)
Esempio n. 27
0
def inverse_trig(x, y, z):
    return bm.arcsin(x) - bm.arccos(y) + bm.arctan(z)
Esempio n. 28
0
def logk_none(x):
    return bm.logk(x) + 40 - 40
Esempio n. 29
0
def tanh(x, y):
    return bm.tanh(x * y)
Esempio n. 30
0
def log_exp(x, y):
    return bm.log(x * x) + x * bm.exp(y)