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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
def testb_sqrt_neg(): x1 = vt.Variable_b(-5) with pytest.raises(Exception): f = sqrt(x1)
def testb_rtruediv_by_zero(): x1 = vt.Variable_b(0) with pytest.raises(ValueError): f = 1 / x1
def testb_truediv_by_zero_variable(): x1 = vt.Variable_b(4) x2 = vt.Variable_b(0) with pytest.raises(ValueError): f = x1 / x2
def testb_exponential_neg_base(): x1 = vt.Variable_b(5) with pytest.raises(Exception): f = exponential(5, -1)
def testb_equal(): x1 = vt.Variable_b(1) x2 = vt.Variable_b(1) assert x1 == x2, "error with eq"
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"
def testb_equal_type_mismatch(): x1 = vt.Variable_b(4) assert not x1 == 4, "error with eq type mismatch"
def testb_truediv_by_zero(): x1 = vt.Variable_b(4) with pytest.raises(ValueError): f = x1 / 0