示例#1
0
def testb_log():
    x1 = vt.Variable_b(10)
    x2 = vt.Variable_b(5)
    f = np.log(x1) + np.log(x2)
    f.grad_value = 1.0
    assert f.value == 3.9120230054281464, "error with exp"
    assert x1.grad() == 0.1, "error with exp"
    assert x2.grad() == 0.2, "error with exp"
示例#2
0
def testb_exp():
    x1 = vt.Variable_b(0)
    x2 = vt.Variable_b(5)
    f = np.exp(x1) + x2
    f.grad_value = 1.0
    assert f.value == 6, "error with exp"
    assert x1.grad() == 1, "error with exp"
    assert x2.grad() == 1, "error with exp"
示例#3
0
def testb_cos():
    x1 = vt.Variable_b(math.pi / 2)
    x2 = vt.Variable_b(math.pi / 6)
    f = np.cos(x1) + np.cos(x2)
    f.grad_value = 1.0
    assert f.value == 0.8660254037844388, "error with cos"
    assert abs(x1.grad() - (-1)) < 10**(-8), "error with cos"
    assert abs(x2.grad() - (-0.5)) < 10**(-8), "error with cos"
示例#4
0
def testb_sin():
    x1 = vt.Variable_b(math.pi / 2)
    x2 = vt.Variable_b(math.pi / 6)
    f = np.sin(x1) + np.sin(x2)
    f.grad_value = 1.0
    assert f.value == 1.5, "error with sin"
    assert abs(x1.grad() - 6.12323400e-17) < 10**(-8), "error with sin"
    assert abs(x2.grad() - 8.66025404e-01) < 10**(-8), "error with sin"
示例#5
0
def testb_arcsin():
    x1 = vt.Variable_b(0.5)
    x2 = vt.Variable_b(0.1)
    f = np.arcsin(x1) + np.arcsin(x2)
    f.grad_value = 1.0
    assert abs(f.value - 0.6237661967598587) < 1e-8, "error with arcsin"
    assert abs(x1.grad() - (1.15470054)) < 10**(-8), "error with arcsin"
    assert abs(x2.grad() - (1.00503782)) < 10**(-8), "error with arcsin"
示例#6
0
def testb_arccos():
    x1 = vt.Variable_b(0.5)
    x2 = vt.Variable_b(0.1)
    f = np.arccos(x1) + np.arccos(x2)
    f.grad_value = 1.0
    assert abs(f.value - 2.5178264568299342) < 1e-8, "error with arccos"
    assert abs(x1.grad() - (-1.15470054)) < 10**(-8), "error with arccos"
    assert abs(x2.grad() - (-1.00503782)) < 10**(-8), "error with arccos"
示例#7
0
def testb_arctan():
    x1 = vt.Variable_b(0.5)
    x2 = vt.Variable_b(0.1)
    f = np.arctan(x1) + np.arctan(x2)
    f.grad_value = 1.0
    assert abs(f.value - 0.5633162614919682) < 1e-8, "error with arctan"
    assert abs(x1.grad() - (0.8)) < 10**(-8), "error with arctan"
    assert abs(x2.grad() - (0.99009901)) < 10**(-8), "error with arctan"
示例#8
0
def testb_tan():
    x1 = vt.Variable_b(math.pi / 2)
    x2 = vt.Variable_b(math.pi / 6)
    f = np.tan(x1) + np.tan(x2)
    f.grad_value = 1.0
    assert f.value == 1.633123935319537e+16, "error with tan"
    assert abs(x1.grad() -
               (2.667093788113571e+32)) < 10**(-8), "error with tan"
    assert abs(x2.grad() - (1.33333333e+00)) < 10**(-8), "error with tan"
示例#9
0
def testb_radd():
    x1 = vt.Variable_b(4)
    x2 = vt.Variable_b(5)
    x3 = vt.Variable_b(6)
    f = 4 + x2 + x3
    f.grad_value = 1.0
    assert f.value == 15, "error with radd"
    assert x1.grad() == 0, "error with radd"
    assert x2.grad() == 1, "error with radd"
    assert x3.grad() == 1, "error with radd"
示例#10
0
def testb_rmul():
    x1 = vt.Variable_b(4)
    x2 = vt.Variable_b(5)
    x3 = vt.Variable_b(6)
    f = 2 * x1 * x2 * x3
    f.grad_value = 1.0
    assert f.value == 240, "error with rmul"
    assert x1.grad() == 60, "error with rmul"
    assert x2.grad() == 48, "error with rmul"
    assert x3.grad() == 40, "error with rmul"
示例#11
0
def testb_rsub():
    x1 = vt.Variable_b(4)
    x2 = vt.Variable_b(5)
    x3 = vt.Variable_b(6)
    f = 11 - x1 - x3
    f.grad_value = 1.0
    assert f.value == 1, "error with rsub"
    assert x1.grad() == -1, "error with rsub"
    assert x2.grad() == 0, "error with rsub"
    assert x3.grad() == -1, "error with rsub"
示例#12
0
def testb_truediv():
    x1 = vt.Variable_b(4)
    x2 = vt.Variable_b(5)
    f = x2 / x1
    f.grad_value = 1.0
    assert f.value == 1.25, "error with truediv"
    assert x1.grad() == -0.3125, "error with truediv"
    assert x2.grad() == 0.25, "error with truediv"

    x21 = vt.Variable_b(4)
    x22 = vt.Variable_b(5)
    f2 = x22 / 4
    f2.grad_value = 1.0
    assert f2.value == 1.25, "error with truediv"
    assert x21.grad() == 0, "error with truediv"
    assert x22.grad() == 0.25, "error with truediv"

    x31 = vt.Variable_b(4)
    x32 = vt.Variable_b(5)
    f3 = x32 / (4 * x31)
    f3.grad_value = 1.0
    assert f3.value == 5 / 16, "error with truediv"
    assert x31.grad() == -0.078125, "error with truediv"
    assert x32.grad() == 0.0625, "error with truediv"

    x41 = vt.Variable_b(4)
    x42 = vt.Variable_b(5)
    f4 = x42 / (x41 * x41)
    f4.grad_value = 1.0
    assert f4.value == 0.3125, "error with truediv"
    assert x41.grad() == -0.15625, "error with truediv"
    assert x42.grad() == 0.0625, "error with truediv"
示例#13
0
def testb_logarithm():
    x1 = vt.Variable_b(3)
    f = x1.logarithm(2)
    f.grad_value = 1.0
    assert (f.value - 1.5849625) < 1e-6, "error with logarithm"
    assert (abs(x1.grad() - 0.48089834696298783) <
            1e-6), "error with logarithm"
示例#14
0
def testb_exponential():
    x1 = vt.Variable_b(5)
    f = x1.exponential(2)
    f.grad_value = 1.0
    assert f.value == 32, "error with exponential"
    assert (abs(x1.grad() - 22.18070977791825) <
            1e-6), "error with exponential"
示例#15
0
def testb_rtruediv():
    x1 = vt.Variable_b(4)
    x2 = vt.Variable_b(5)
    f = 5 / x1
    f.grad_value = 1.0
    assert f.value == 1.25, "error with rtruediv"
    assert x1.grad() == -0.3125, "error with rtruediv"
    assert x2.grad() == 0, "error with rtruediv"

    x21 = vt.Variable_b(4)
    x22 = vt.Variable_b(5)
    f2 = 4 / (x21 * x21)
    f2.grad_value = 1.0
    assert f2.value == 0.25, "error with rtruediv"
    assert x21.grad() == -0.125, "error with rtruediv"
    assert x22.grad() == 0, "error with rtruediv"
示例#16
0
def testb_pow():
    x1 = vt.Variable_b(4)
    x2 = vt.Variable_b(5)
    f = (x1 + x2)**2
    f.grad_value = 1.0
    assert f.value == 81, "error with pow"
    assert x1.grad() == 18, "error with pow"
    assert x2.grad() == 18, "error with pow"

    x12 = vt.Variable_b(4)
    x32 = vt.Variable_b(2)
    f = (x12)**x32
    f.grad_value = 1.0
    assert f.value == 16, "error with pow"
    assert x12.grad() == 8, "error with pow"
    assert abs(x32.grad() - 22.1807097779) < 10**(-8), "error with pow"

    x12 = vt.Variable_b(4)
    x22 = vt.Variable_b(5)
    x32 = vt.Variable_b(2)
    f = (x12 + x22)**x32
    f.grad_value = 1.0
    assert f.value == 81, "error with pow"
    assert x12.grad() == 18, "error with pow"
    assert x22.grad() == 18, "error with pow"
    assert abs(x32.grad() - 177.975190764) < 10**(-8), "error with pow"
示例#17
0
def testb_sinh():
    x1 = vt.Variable_b(2)
    f = x1.sinh()
    f.grad_value = 1.0
    assert (f.value - 3.6268604) < 1e-6, "error with sinh"
    assert (abs(x1.grad() - 3.7621956910836314) < 1e-6), "error with sinh"
示例#18
0
def testb_cosh():
    x1 = vt.Variable_b(2)
    f = x1.cosh()
    f.grad_value = 1.0
    assert (f.value - 3.7621957) < 1e-6, "error with cosh"
    assert (abs(x1.grad() - 3.6268604078470186) < 1e-6), "error with cosh"
示例#19
0
def testb_tanh():
    x1 = vt.Variable_b(2)
    f = x1.tanh()
    f.grad_value = 1.0
    assert (f.value - 0.9640276) < 1e-6, "error with tanh"
    assert (abs(x1.grad() - 0.07065082485316443) < 1e-6), "error with tanh"
示例#20
0
def testb_logistic():
    x1 = vt.Variable_b(2)
    f = x1.logistic()
    f.grad_value = 1.0
    assert (f.value - 0.8807971) < 1e-6, "error with logistic"
    assert (abs(x1.grad() - 0.10499358540350652) < 1e-6), "error with logistic"
示例#21
0
def testb_sqrt():
    x1 = vt.Variable_b(5)
    f = x1.sqrt()
    f.grad_value = 1.0
    assert (f.value - 2.2360680) < 1e-6, "error with sqrt"
    assert (abs(x1.grad() - 0.22360679774997896) < 1e-6), "error with sqrt"
示例#22
0
def testb_sqrt_neg():
    x1 = vt.Variable_b(-5)
    with pytest.raises(Exception):
        f = sqrt(x1)
示例#23
0
def testb_rtruediv_by_zero():
    x1 = vt.Variable_b(0)
    with pytest.raises(ValueError):
        f = 1 / x1
示例#24
0
def testb_truediv_by_zero_variable():
    x1 = vt.Variable_b(4)
    x2 = vt.Variable_b(0)
    with pytest.raises(ValueError):
        f = x1 / x2
示例#25
0
def testb_exponential_neg_base():
    x1 = vt.Variable_b(5)
    with pytest.raises(Exception):
        f = exponential(5, -1)
示例#26
0
def testb_equal():
    x1 = vt.Variable_b(1)
    x2 = vt.Variable_b(1)
    assert x1 == x2, "error with eq"
示例#27
0
def testb_neg():
    x1 = vt.Variable_b(4)
    a = -x1
    a.grad_value = 1.0
    assert a.value == -4, "error with neg"
    assert x1.grad() == -1, "error with neg"
示例#28
0
def testb_equal_type_mismatch():
    x1 = vt.Variable_b(4)
    assert not x1 == 4, "error with eq type mismatch"
示例#29
0
def testb_truediv_by_zero():
    x1 = vt.Variable_b(4)
    with pytest.raises(ValueError):
        f = x1 / 0