def test_exp_numeric_value():
    assert np.isclose(ef.exp(4), np.exp(4))
def test_log_numeric_input_no_deriv():
    with pytest.raises(AttributeError):
        assert ef.exp(30).der
def test_exp_illegal_arg2():
    with pytest.raises(AttributeError):
        assert ef.exp(" ")
def test_exp_no_sec_derivative_xy():
    x = AutoDiff(4, "x")
    y = AutoDiff(5, "y")
    with pytest.raises(AttributeError):
        assert ef.exp(x * x * y * y).der2['x']
def test_exp_numeric_input_no_val():
    with pytest.raises(AttributeError):
        assert ef.exp(30).val
def test_exp_deriv2_xy():
    x = AutoDiff(0.5, "x", H=True)
    y = AutoDiff(1.1, "y", H=True)
    f = ef.exp(x * x * y * y)
    assert np.isclose(f.der2['xy'], 3.877702561784869)
def test_exp_no_sec_derivative_():
    x = AutoDiff(4, "x")
    with pytest.raises(AttributeError):
        assert ef.exp(x).der2['x']
def test_exp_deriv2_y():
    x = AutoDiff(0.5, "x", H=True)
    y = AutoDiff(1.1, "y", H=True)
    f = ef.exp(x * x * y * y)
    assert np.isclose(f.der2['y'], 1.0859732353279907)
def test_exp_deriv2_x():
    x = AutoDiff(0.5, "x", H=True)
    y = AutoDiff(1.1, "y", H=True)
    f = ef.exp(x * x * y * y)
    assert np.isclose(f.der2['x'], 5.256110458987476)
def test_exp_deriv_y():
    x = AutoDiff(0.5, "x")
    y = AutoDiff(1.1, "y")
    f = ef.exp(x * x * y * y)
    assert np.isclose(f.der['y'], 0.7442807220316447)
def test_exp_deriv_x():
    x = AutoDiff(0.5, "x")
    y = AutoDiff(1.1, "y")
    f = ef.exp(x * x * y * y)
    assert np.isclose(f.der['x'], 1.6374175884696187)
def test_exp_val():
    x = AutoDiff(0.5, "x")
    y = AutoDiff(1.1, "y")
    f = ef.exp(x * x * y * y)
    assert np.isclose(f.val, 1.3532376764211722)