Пример #1
0
def test_array_ops_2arrays(ar_x, ar_y):
    assert (ar_x + ar_y)[0].func_val == 4.5
    assert (ar_x + ar_y)[1].func_val == 15
    assert (ar_x + ar_y)[0].partial_dict['x_0'] == 1
    assert (ar_x + ar_y)[0].partial_dict['y_0'] == 1
    assert (ar_x + ar_y)[1].partial_dict['x_1'] == 1
    assert (ar_x + ar_y)[1].partial_dict['y_1'] == 1

    assert (ar_x - ar_y)[0].func_val == -1.5
    assert (ar_x * ar_y)[0].func_val == 4.5
    assert (ar_y / ar_x)[0].func_val == 2

    assert (ar_x - ar_y)[1].partial_dict['x_1'] == 1
    assert (ar_x - ar_y)[1].partial_dict['y_1'] == -1

    assert (ar_x * ar_y)[1].partial_dict['x_1'] == 5
    assert (ar_x * ar_y)[1].partial_dict['y_1'] == 10

    assert (ar_y / ar_x)[1].partial_dict['x_1'] == -0.05
    assert (ar_y / ar_x)[1].partial_dict['y_1'] == 0.1

    assert (AD(1, 'x') +
            AD.from_array(np.array([1, 2, 3, 4])))[1].func_val == 3
    assert (AD(1, 'x') -
            AD.from_array(np.array([1, 2, 3, 4])))[1].func_val == -1
    assert (AD(1, 'x') *
            AD.from_array(np.array([1, 2, 3, 4])))[1].func_val == 2
    assert (AD(1, 'x') /
            AD.from_array(np.array([1, 2, 3, 4])))[1].func_val == 0.5
    assert (AD(10, 'x')**AD.from_array(np.array([1, 2, 3,
                                                 4])))[1].func_val == 100
Пример #2
0
def test_invtrig():
    x = np.array([0.25, 0.5])
    inv_ar = AD.from_array(x, 'p')

    assert [
        np.round(AD.arcsin(inv_ar)[0].func_val, 7),
        np.round(AD.arcsin(inv_ar)[1].func_val, 7)
    ] == [np.round(0.25268025514207865, 7),
          np.round(0.5235987755982989, 7)]
    assert np.round(AD.arcsin(inv_ar)[0].partial_dict['p_0'],
                    7) == np.round(1.0327955589886444, 7)

    assert [
        np.round(AD.arccos(inv_ar)[0].func_val, 7),
        np.round(AD.arccos(inv_ar)[1].func_val, 7)
    ] == [np.round(1.318116071652818, 7),
          np.round(1.0471975511965979, 7)]
    assert np.round(AD.arccos(inv_ar)[0].partial_dict['p_0'],
                    7) == np.round(-1.0327955589886444, 7)

    assert np.round(AD.arctan(inv_ar)[1].func_val,
                    7) == np.round(0.4636476090008061, 7)
    assert AD.arctan(inv_ar)[1].partial_dict['p_1'] == 0.8
Пример #3
0
def test_misc_funcs():
    ar_f = AD.from_array([1, 4], 'f')

    assert AD.sqrt(ar_f)[1].func_val == 2
    assert AD.sqrt(ar_f)[1].partial_dict['f_1'] == 0.25

    assert AD.log(ar_f)[0].func_val == 0
    assert AD.log(ar_f)[1].partial_dict['f_1'] == 0.25

    assert np.round(AD.sinh(ar_f)[0].func_val,
                    7) == np.round(1.1752011936438014, 7)
    assert np.round(AD.sinh(ar_f)[1].partial_dict['f_1'],
                    7) == np.round(27.308232836016487, 7)

    assert np.round(AD.cosh(ar_f)[0].func_val,
                    7) == np.round(1.5430806348152437, 7)
    assert np.round(AD.cosh(ar_f)[1].partial_dict['f_1'],
                    7) == np.round(27.289917197127753, 7)
    assert np.round(AD.cosh(1), 7) == np.round(1.5430806348152437, 7)

    assert np.round(AD.tanh(ar_f)[0].func_val,
                    7) == np.round(0.7615941559557649, 7)
    assert np.round(AD.tanh(ar_f)[1].partial_dict['f_1'],
                    7) == np.round(0.001340950683025897, 7)
Пример #4
0
def ar_2d():
    w_array = np.array([[3.0, 2.4], [1.5, 3.3]])
    AD_w_array = AD.from_array(w_array, 'w')
    return AD_w_array
Пример #5
0
def ar_pi():
    pi_array = np.array([np.pi / 2, np.pi / 4])
    AD_pi_array = AD.from_array(pi_array, 'p')
    return AD_pi_array
Пример #6
0
def ar_y():
    y_array = np.array([3, 5])
    AD_y_array = AD.from_array(y_array, 'y')
    return AD_y_array
Пример #7
0
def ar_x():
    x_array = np.array([1.5, 10])
    AD_x_array = AD.from_array(x_array, 'x')
    return AD_x_array