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)
예제 #2
0
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")