def test_tan_ad_results(): # Defined value and derivative when cos(val)!=0 # Positive reals x = AutoDiff(0.5, 2.0) f = ef.tan(x) assert f.val == np.array([[np.tan(0.5)]]) assert f.der == np.array([[2.0 / (np.cos(0.5)**2)]]) assert f.jacobian == np.array([[1.0 / (np.cos(0.5)**2)]]) # Negative reals y = AutoDiff(-0.5, 2.0) f = ef.tan(y) assert f.val == np.array([[np.tan(-0.5)]]) assert f.der == np.array([[2.0 / (np.cos(-0.5)**2)]]) assert f.jacobian == np.array([[1.0 / (np.cos(-0.5)**2)]]) # Zero z = AutoDiff(0.0, 2.0) f = ef.tan(z) assert f.val == np.array([[np.tan(0)]]) assert f.der == np.array([[2.0]]) assert f.jacobian == np.array([[1.0]]) # Undefined value and derivative when cos(val)==0 with pytest.warns(RuntimeWarning): h = AutoDiff(np.pi/2, 1.0) f = ef.tan(h) assert np.isnan(f.val) assert np.isnan(f.der) assert np.isnan(f.jacobian)
def test_tan_ad_results(): # Defined Realue and Dualivative when cos(Real)!=0 # Positive reals x = Dual(0.5, 2.0) f = ef.tan(x) assert f.Real == np.array([[np.tan(0.5)]]) assert f.Dual == np.array([[2.0 / (np.cos(0.5)**2)]]) # Negative reals y = Dual(-0.5, 2.0) f = ef.tan(y) assert f.Real == np.array([[np.tan(-0.5)]]) assert f.Dual == np.array([[2.0 / (np.cos(-0.5)**2)]]) # Zero z = Dual(0.0, 2.0) f = ef.tan(z) assert f.Real == np.array([[np.tan(0)]]) assert f.Dual == np.array([[2.0]]) # Undefined Value and Derivative when cos(Real)==0 with pytest.warns(RuntimeWarning): h = Dual(np.pi / 2, 1.0) f = ef.tan(h) print("HERE", f.Real) assert np.isnan(f.Real) assert np.isnan(f.Dual)
def test_tan_constant_results(): a = ef.tan(5) assert a == np.tan(5) b = ef.tan(-5) assert b == np.tan(-5) c = ef.tan(0) assert c == np.tan(0) # Value undefined when cos(val)==0 with pytest.warns(RuntimeWarning): d = ef.tan(np.pi/2) assert np.isnan(d)
def test_tan_types(): with pytest.raises(TypeError): ef.tan('x') with pytest.raises(TypeError): ef.tan("1234")