def test_arctan_numeric_value():
    assert np.isclose(ef.arctan(4), np.arctan(4))
def test_arctan_numeric_input_no_deriv():
    with pytest.raises(AttributeError):
        assert ef.arctan(30).der
def test_arctan_illegal_arg():
    with pytest.raises(AttributeError):
        assert ef.arctan("thirty")
def test_arctan_deriv2_xy():
    x = AutoDiff(0.5, "x", H=True)
    y = AutoDiff(0.6, "y", H=True)
    f = ef.arctan(x * x * y * y)
    assert np.isclose(f.der2['xy'], 1.1712292419301682)
def test_arctan_no_sec_derivative_xy():
    x = AutoDiff(4, "x")
    y = AutoDiff(5, "y")
    with pytest.raises(AttributeError):
        assert ef.arctan(x * x * y * y).der2['x']
def test_arctan_deriv2_y():
    x = AutoDiff(0.5, "x", H=True)
    y = AutoDiff(0.6, "y", H=True)
    f = ef.arctan(x * x * y * y)
    assert np.isclose(f.der2['y'], 0.480041826860598)
def test_arctan_deriv2_x():
    x = AutoDiff(0.5, "x", H=True)
    y = AutoDiff(0.6, "y", H=True)
    f = ef.arctan(x * x * y * y)
    assert np.isclose(f.der2['x'], 0.6912602306792611)
def test_arctan_deriv_y():
    x = AutoDiff(0.5, "x")
    y = AutoDiff(0.6, "y")
    f = ef.arctan(x * x * y * y)
    assert np.isclose(f.der['y'], 0.2975895248487253)
def test_arctan_deriv_x():
    x = AutoDiff(0.5, "x")
    y = AutoDiff(0.6, "y")
    f = ef.arctan(x * x * y * y)
    assert np.isclose(f.der['x'], 0.3571074298184704)
def test_arctan_val():
    x = AutoDiff(0.5, "x")
    y = AutoDiff(0.6, "y")
    f = ef.arctan(x * x * y * y)
    assert np.isclose(f.val, 0.08975817418995052)