Esempio n. 1
0
def test_single_inputs():
    """
    Test imf.imf_inv_prim_power() with single values (not arrays)
    as input parameters. Make sure the algorithm is properly
    returning:

    ((1 + power) * x) ** (1.0 / (1 + power))
    """

    ###
    # Valid: Negative x and power < -1
    ###
    x = -2.1
    power = -1.3

    val = imf.imf_inv_prim_power(x, power)
    check = ((1.0 + power) * x)**(1.0 / (1.0 + power))

    assert val == check

    ###
    # Valid: Postive x and power > -1
    ###
    x = 2.1
    power = -0.3

    val = imf.imf_inv_prim_power(x, power)
    check = ((1.0 + power) * x)**(1.0 / (1.0 + power))

    assert val == check

    ###
    # Invalid: Postive x and power < -1
    # Should return NAN
    ###
    x = 2.1
    power = -1.3

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_equal(val, np.nan)

    ###
    # Valid: Negative x and power < -1
    # Repeat with power = -1 special case
    ###
    x = -2.1
    power = -1.0

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, 0.12245643)

    ###
    # Valid: Postive x and power > -1
    # Repeat with power = -1 special case
    ###
    x = 2.1
    power = -1.0

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, 8.16616991)
def test_array_inputs():
    """
    Test imf.imf_inv_prim_power() with array input values.
    """

    ###
    # Valid: Negative x and power < -1
    # x is array
    # power is single
    ###
    x = np.array([-2.1])
    power = -1.3

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, np.array([4.66514165]))

    ###
    # Valid: Negative x and power < -1
    # x is single
    # power is array
    ###
    x = -2.1
    power = np.array([-1.3])

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, np.array([4.66514165]))


    ###
    # Valid: Negative x and power < -1
    # x is array
    # power is array
    ###
    x = np.array([-2.1])
    power = np.array([-1.3])

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, np.array([4.66514165]))



    ###
    # Valid: Negative x and power < -1
    # Repeat with power = -1 special case
    # x is array
    # power is single
    ###
    x = np.array([-2.1, -1.9])
    power = -1.0

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, np.array([0.12245643, 0.14956862]))


    ###
    # Valid: Postive x and power > -1
    # Repeat with power = -1 special case
    # power is array
    # x is single
    ###
    x = -2.1
    power = np.array([-1.0, -2.3])

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, np.array([0.12245643, 0.46183865]))

    ###
    # Valid: Postive x and power > -1
    # Repeat with power = -1 special case
    # power is array
    # x is array
    ###
    x = np.array([-2.1, -1.9])
    power = np.array([-1.0, -2.3])

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, np.array([0.12245643, 0.49879882]))

    ###
    # INVALID: Postive x and power > -1
    # Repeat with power = -1 special case
    # power is array
    # x is array
    ###
    # x = np.array([-2.1, -1.9, -2.2])
    # power = np.array([-1.0, -2.3])

    # val = imf.imf_inv_prim_power(x, power)
    # unittest.assertRaises(
    # npt.assert_almost_equal(val, np.array([0.12245643]))

    return imf
def test_single_inputs():
    """
    Test imf.imf_inv_prim_power() with single values (not arrays)
    as input parameters. Make sure the algorithm is properly
    returning:

    ((1 + power) * x) ** (1.0 / (1 + power))
    """

    ###
    # Valid: Negative x and power < -1
    ###
    x = -2.1
    power = -1.3

    val = imf.imf_inv_prim_power(x, power)
    check = ((1.0 + power) * x) ** (1.0 / (1.0 + power))

    assert val == check


    ###
    # Valid: Postive x and power > -1
    ###
    x = 2.1
    power = -0.3

    val = imf.imf_inv_prim_power(x, power)
    check = ((1.0 + power) * x) ** (1.0 / (1.0 + power))

    assert val == check

    ###
    # Invalid: Postive x and power < -1
    # Should return NAN
    ###
    x = 2.1
    power = -1.3

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_equal(val, np.nan)


    ###
    # Valid: Negative x and power < -1
    # Repeat with power = -1 special case
    ###
    x = -2.1
    power = -1.0

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, 0.12245643)


    ###
    # Valid: Postive x and power > -1
    # Repeat with power = -1 special case
    ###
    x = 2.1
    power = -1.0

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, 8.16616991)
Esempio n. 4
0
def test_array_inputs():
    """
    Test imf.imf_inv_prim_power() with array input values.
    """

    ###
    # Valid: Negative x and power < -1
    # x is array
    # power is single
    ###
    x = np.array([-2.1])
    power = -1.3

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, np.array([4.66514165]))

    ###
    # Valid: Negative x and power < -1
    # x is single
    # power is array
    ###
    x = -2.1
    power = np.array([-1.3])

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, np.array([4.66514165]))

    ###
    # Valid: Negative x and power < -1
    # x is array
    # power is array
    ###
    x = np.array([-2.1])
    power = np.array([-1.3])

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, np.array([4.66514165]))

    ###
    # Valid: Negative x and power < -1
    # Repeat with power = -1 special case
    # x is array
    # power is single
    ###
    x = np.array([-2.1, -1.9])
    power = -1.0

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, np.array([0.12245643, 0.14956862]))

    ###
    # Valid: Postive x and power > -1
    # Repeat with power = -1 special case
    # power is array
    # x is single
    ###
    x = -2.1
    power = np.array([-1.0, -2.3])

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, np.array([0.12245643, 0.46183865]))

    ###
    # Valid: Postive x and power > -1
    # Repeat with power = -1 special case
    # power is array
    # x is array
    ###
    x = np.array([-2.1, -1.9])
    power = np.array([-1.0, -2.3])

    val = imf.imf_inv_prim_power(x, power)
    npt.assert_almost_equal(val, np.array([0.12245643, 0.49879882]))

    ###
    # INVALID: Postive x and power > -1
    # Repeat with power = -1 special case
    # power is array
    # x is array
    ###
    # x = np.array([-2.1, -1.9, -2.2])
    # power = np.array([-1.0, -2.3])

    # val = imf.imf_inv_prim_power(x, power)
    # unittest.assertRaises(
    # npt.assert_almost_equal(val, np.array([0.12245643]))

    return imf