def test_arctan_deriv_y(): x = AutoDiff(0.5, "x") y = AutoDiff(0.6, "y") f = ef.arctan(x * x * y * y) assert np.isclose(f.der['y'], 0.2975895248487253)
def test_autodiff_negation_secondDer(): a = AutoDiff(3, "a", H=True) b = AutoDiff(1.5, "b", H=True) f = a * a * b assert -1 * f.der2['a'] == -3.0
def test_autodiff_mul_val(): a = AutoDiff(3, "a") b = AutoDiff(2, "b") f = (a * a) * (b * b) assert f.val == 36
def test_autodiff_neq_ad_and_num2(): a = AutoDiff(4, "a") b = "four" assert a != b
def test_autodiff_negation_val(): a = AutoDiff(3, "a") b = AutoDiff(1.5, "b") f = a * b assert -1 * f.val == -4.5
def test_autodiff_variable_name_args(): with pytest.raises(TypeError): assert AutoDiff(6, 'xy', H=True)
def test_autodiff_eq(): a = AutoDiff(2, "a") b = AutoDiff(4, "b") assert ef.power(a, 2).val == b.val
def test_autodiff_mul_der2(): a = AutoDiff(3, "a", H=True) b = AutoDiff(1.5, "b", H=True) f = (a * a) * (b * b) assert f.der2['a'] == (2 * b.val * b.val)
def test_autodiff_mul_illegal_arg(): a = AutoDiff(3, "a") with pytest.raises(AttributeError): assert "AutoDiff(4, 'b')" * a
def test_arctan_no_sec_derivative_xy(): x = AutoDiff(4, "x") y = AutoDiff(5, "y") with pytest.raises(AttributeError): assert ef.arctan(x * x * y * y).der2['x']
def test_cos_deriv_y(): x = AutoDiff(4, "x") y = AutoDiff(5, "y") f = ef.cos(x * y) assert np.isclose(f.der['y'], -3.6517810029105107)
def test_arctan_deriv2_xy(): x = AutoDiff(0.5, "x", H=True) y = AutoDiff(0.6, "y", H=True) f = ef.arctan(x * x * y * y) assert np.isclose(f.der2['xy'], 1.1712292419301682)
def test_arctan_deriv2_y(): x = AutoDiff(0.5, "x", H=True) y = AutoDiff(0.6, "y", H=True) f = ef.arctan(x * x * y * y) assert np.isclose(f.der2['y'], 0.480041826860598)
def test_arctan_deriv2_x(): x = AutoDiff(0.5, "x", H=True) y = AutoDiff(0.6, "y", H=True) f = ef.arctan(x * x * y * y) assert np.isclose(f.der2['x'], 0.6912602306792611)
def test_autodiff_sub_illegal_args(): a = AutoDiff(9, "a") with pytest.raises(AttributeError): assert "AutoDiff(11, 'b')" - a
def test_autodiff_div(): a = AutoDiff(2, "a") b = AutoDiff(5, "b") f = a / b assert f.der['a'] == 1 / b.val
def test_autodiff_hessian_args(): with pytest.raises(TypeError): assert AutoDiff(5, 'x', H=3)
def test_autodiff_div_zerodiv(): a = AutoDiff(3, "a") b = AutoDiff(0, "b") with pytest.raises(ZeroDivisionError): assert a / b
def test_autodiff_variable_name_args_notAlpha_symbol(): with pytest.raises(TypeError): assert AutoDiff(6, '&')
def test_autodiff_div_illegal_args(): a = AutoDiff(2, "a") with pytest.raises(AttributeError): assert a / "AutoDiff(2, 'b')"
def test_autodiff_neq_ad_and_num(): a = AutoDiff(4, "a") b = 4 assert a != b
def test_autodiff_numeric_args(): with pytest.raises(TypeError): assert AutoDiff(5, 3)
def test_autodiff_neq(): a = AutoDiff(2, "a") b = AutoDiff(4, "b") assert a.val != b.val
def test_autodiff_add(): a = AutoDiff(13, "a") b = AutoDiff(22, "b") f = a + b assert f.der['b'] == 0
def test_autodiff_negation_firstDer(): a = AutoDiff(3, "a") b = AutoDiff(1.5, "b") f = a * b assert -1 * f.der['a'] == -b.val
def test_autodiff_add_illegal_args(): a = AutoDiff(9, "a") with pytest.raises(AttributeError): assert a + "AutoDiff(5, 'b')"
def test_autodiff_string_args(): with pytest.raises(TypeError): assert AutoDiff("two", "x")
def test_autodiff_add(): a = AutoDiff(10, "a") b = AutoDiff(22, "b") f = a - b assert f.val == -12
def test_autodiff_mul_der1(): a = AutoDiff(3, "a") b = AutoDiff(1.5, "b") f = (a * a) * (b * b) assert f.der['a'] == (2 * a.val * b.val**2)
def test_arctan_deriv_x(): x = AutoDiff(0.5, "x") y = AutoDiff(0.6, "y") f = ef.arctan(x * x * y * y) assert np.isclose(f.der['x'], 0.3571074298184704)