def test_arccosh_constant_results(): a = ef.arccosh(5) assert a == np.arccosh(5) # value not defined at x < 1 with pytest.warns(RuntimeWarning): a = ef.arccosh(0.9) assert np.isnan(a)
def test_arccosh_ad_results(): # Realue defined at positive real numbers x >= 1 # Dualivative defined at positive real numbers x > 1 x = Dual(1.1, 2) f = ef.arccosh(x) assert f.Real == np.arccosh(1.1) assert f.Dual == np.array([[((2) / np.sqrt((1.1)**2 - 1))]]) # Realue defined at x = 1, Dualivative not defined with pytest.warns(RuntimeWarning): y = Dual(1, 2) f = ef.arccosh(y) assert np.isinf(f.Dual) # neither Realue nor Dualivative defined at x < 1 with pytest.warns(RuntimeWarning): z = Dual(0, 2) f = ef.arccosh(z) assert np.isnan(f.Real) assert np.isnan(f.Dual)
def test_arccosh_ad_results(): # value defined at positive real numbers x >= 1 # derivative defined at positive real numbers x > 1 x = AutoDiff(1.1, 2) f = ef.arccosh(x) assert f.val == np.arccosh(1.1) assert f.der == np.array([[((2)/np.sqrt((1.1)**2 - 1))]]) assert f.jacobian == np.array([[((1)/np.sqrt((1.1)**2 - 1))]]) # value defined at x = 1, derivative not defined with pytest.warns(RuntimeWarning): y = AutoDiff(1, 2) f = ef.arccosh(y) assert np.isinf(f.der) assert np.isinf(f.jacobian) # neither value nor derivative defined at x < 1 with pytest.warns(RuntimeWarning): z = AutoDiff(0, 2) f = ef.arccosh(z) assert np.isnan(f.val) assert np.isnan(f.der) assert np.isnan(f.jacobian)
def test_arccosh_types(): with pytest.raises(TypeError): ef.arccosh('x') with pytest.raises(TypeError): ef.arccosh("1234")