def test_sqrt_constant_results():
	a = ef.sqrt(5)
	assert a == np.sqrt(5)
	b = ef.sqrt(0)
	assert b == np.sqrt(0)
	# Value undefined when x < 0
	with pytest.warns(RuntimeWarning):
		c = ef.sqrt(-5)
		assert np.isnan(c)
Пример #2
0
def test_sqrt_ad_results():
    # Positive reals
    x = Dual(0.5, 2.0)
    f = ef.sqrt(x)
    assert f.Real == np.array([[np.sqrt(0.5)]])
    assert f.Dual == np.array([[0.5 * 0.5**(-0.5) * 2.0]])

    # Realue defined but Dualivative undefined when x == 0
    with pytest.warns(RuntimeWarning):
        y = Dual(0, 2)
        f = ef.sqrt(y)
        assert f.Real == np.array([[0]])
        assert np.isinf(f.Dual)

    # Realue and Dualivative undefined when x < 0
    with pytest.warns(RuntimeWarning):
        z = Dual(-0.5, 2)
        f = ef.sqrt(z)
        assert np.isnan(f.Real)
        assert np.isnan(f.Dual)
def test_sqrt_ad_results():
	# Positive reals
	x = AutoDiff(0.5, 2.0)
	f = ef.sqrt(x)
	assert f.val == np.array([[np.sqrt(0.5)]])
	assert f.der == np.array([[0.5 * 0.5 ** (-0.5) * 2.0]])
	assert f.jacobian == np.array([[0.5 * 0.5 ** (-0.5) * 1]])
	# Value defined but derivative undefined when x == 0
	with pytest.warns(RuntimeWarning):
		y = AutoDiff(0, 2)
		f = ef.sqrt(y)
		assert f.val == np.array([[0]])
		assert np.isinf(f.der[0][0])
		assert np.isinf(f.jacobian[0][0])
	# Value and derivative undefined when x < 0
	with pytest.warns(RuntimeWarning):
		z = AutoDiff(-0.5, 2)
		f = ef.sqrt(z)
		assert np.isnan(f.val[0][0])
		assert np.isnan(f.der[0][0])
		assert np.isnan(f.jacobian[0][0])
def test_sqrt_types():
	with pytest.raises(TypeError):
		ef.sqrt('x')
	with pytest.raises(TypeError):
		ef.sqrt("1234")