def test_power_deriv2_xy3():
    x = AutoDiff(1, "x", H=True)
    y = AutoDiff(2, "y", H=True)
    f = ef.power(3, x * y)
    assert np.isclose(f.der2['xy'], 31.612591892639465)
def test_power_no_sec_derivative():
    x = AutoDiff(4, "x")
    y = AutoDiff(3, "y")
    with pytest.raises(AttributeError):
        assert ef.power(x, y).der2['x']
def test_power_deriv2_x3():
    x = AutoDiff(1, "x", H=True)
    y = AutoDiff(2, "y", H=True)
    f = ef.power(3, x * y)
    assert np.isclose(f.der2['x'], 43.450162589252955)
def test_power_deriv2_y3():
    x = AutoDiff(1, "x", H=True)
    y = AutoDiff(2, "y", H=True)
    f = ef.power(3, x * y)
    assert np.isclose(f.der2['y'], 10.862540647313239)
def test_power_deriv_y():
    x = AutoDiff(1, "x")
    y = AutoDiff(2, "y")
    f = ef.power(x * y, x * y)
    assert np.isclose(f.der['y'], 6.772588722239782)
def test_power_deriv_y3():
    x = AutoDiff(1, "x")
    y = AutoDiff(2, "y")
    f = ef.power(3, x * y)
    assert np.isclose(f.der['y'], 9.887510598012987)
def test_power_deriv2_xy2():
    x = AutoDiff(1, "x", H=True)
    y = AutoDiff(2, "y", H=True)
    f = ef.power(x * y, 3)
    assert np.isclose(f.der2['xy'], 36)
def test_power_numeric_value():
    assert np.isclose(ef.power(4, 3), np.power(4, 3))
def test_power_val2():
    x = AutoDiff(1, "x")
    y = AutoDiff(2, "y")
    f = ef.power(x * y, 3)
    assert np.isclose(f.val, 8)
def test_power_deriv_y2():
    x = AutoDiff(1, "x")
    y = AutoDiff(2, "y")
    f = ef.power(x * y, 3)
    assert np.isclose(f.der['y'], 12)
def test_power_deriv2_xy():
    x = AutoDiff(1, "x", H=True)
    y = AutoDiff(2, "y", H=True)
    f = ef.power(x * y, x * y)
    assert np.isclose(f.der2['xy'], 33.70656772254452)
def test_power_deriv2_y():
    x = AutoDiff(1, "x", H=True)
    y = AutoDiff(2, "y", H=True)
    f = ef.power(x * y, x * y)
    assert np.isclose(f.der2['y'], 13.46698950015237)
def test_power_deriv2_x():
    x = AutoDiff(1, "x", H=True)
    y = AutoDiff(2, "y", H=True)
    f = ef.power(x * y, x * y)
    assert np.isclose(f.der2['x'], 53.86795800060948)
def test_power_no_sec_derivative_xy():
    x = AutoDiff(4, "x")
    y = AutoDiff(5, "y")
    with pytest.raises(AttributeError):
        assert ef.power(x * y, x * y).der2['xy']
def test_power_val3():
    x = AutoDiff(1, "x")
    y = AutoDiff(2, "y")
    f = ef.power(3, x * y)
    assert np.isclose(f.val, 9)
def test_power_numeric_input_no_deriv():
    with pytest.raises(AttributeError):
        assert ef.power(4, 5).der
def test_power_deriv_x3():
    x = AutoDiff(1, "x")
    y = AutoDiff(2, "y")
    f = ef.power(3, x * y)
    assert np.isclose(f.der['x'], 19.775021196025975)
def test_autodiff_eq():
    a = AutoDiff(2, "a")
    b = AutoDiff(4, "b")
    assert ef.power(a, 2).val == b.val
def test_power_deriv_x():
    x = AutoDiff(1, "x")
    y = AutoDiff(2, "y")
    f = ef.power(x * y, x * y)
    assert np.isclose(f.der['x'], 13.545177444479563)