def test_composite():
    f1 = AutoDiff(name='x', val=np.pi/4)
    f2 = AutoDiff(name='y', val=np.pi / 2)
    u = AutoDiffVector((f1, f2))
    v = AutoDiffVector([f1, np.pi])
    z = AutoDiffVector((f2, -f1))
    np.testing.assert_array_almost_equal(ad.cos(ad.sin(u)),
                                         [0.7602445970756302, 0.5403023058681398]), "Composite failed"
    J, order = (ad.cos(ad.sin(u))).get_jacobian()
    np.testing.assert_array_almost_equal(J, [[-0.4593626849327842, 0], [0, 0]]), "Composite failed"
    np.testing.assert_array_almost_equal(ad.cos(ad.sin(v)),
                                         [0.7602445970756302, 1]), "Composite failed"
    J, order = (ad.cos(ad.sin(v))).get_jacobian()
    np.testing.assert_array_almost_equal(J, [[-0.4593626849327842], [0]]), "Composite failed"
    np.testing.assert_array_almost_equal(u*ad.cos(ad.sin(u)),
                                         [0.597094710276033, 0.8487048774164866]), "Composite failed"
    J, order = (u*ad.cos(ad.sin(u))).get_jacobian()
    np.testing.assert_array_almost_equal(J, [[0.3994619879961, 0], [0, 0.5403023058681397]]), "Composite failed"
    np.testing.assert_array_almost_equal(z*ad.cos(ad.sin(u)),
                                         [1.194189420552066, -0.4243524387082433]), "Composite failed"
    J, order = (z*ad.cos(ad.sin(u))).get_jacobian()
    np.testing.assert_array_almost_equal(J, [[-0.7215652181590587, 0.7602445970756302],
                                             [-0.5403023058681398, 0]]), "Composite failed"
    np.testing.assert_array_almost_equal((z*ad.cos(ad.sin(u)))**2,
                                         [1.4260883721584792, 0.18007499223763337]), "Composite failed"
    J, order = ((z*ad.cos(ad.sin(u)))**2).get_jacobian()
    np.testing.assert_array_almost_equal(J, [[-1.7233710995277831, 1.815752109719],
                                             [0.4585572, 0]]), "Composite failed"
def test_sin():
    f1 = AutoDiffRev(name='x', val=0)
    f2 = AutoDiffRev(name='y', val=np.pi / 2)
    u = AutoDiffRevVector((f1, f2))
    v = AutoDiffRevVector([0, np.pi / 2])
    np.testing.assert_array_almost_equal(ad.sin(u).val, [0, 1]), 'Sine failed'
    J, order = (ad.sin(u)).get_jacobian()
    np.testing.assert_array_almost_equal(J, [[1, 0], [0, 0]]), 'Sine failed'
Exemple #3
0
def test_composition():
    x = AutoDiffRev(name='x', val=4)
    assert np.allclose(ad.sin(ad.exp(x) ** 2).get_value(), 0.4017629715192812,
                       atol=1e-12) is True, "Composition failed"
    g, _ = ad.sin(ad.exp(x) ** 2).get_gradient()
    assert np.allclose(g, -5459.586962682745,
                       atol=1e-12) is True, "Composition failed"
    assert np.allclose(ad.exp(ad.sin(x) ** 2).get_value(), 1.7731365081918968985940,
                       atol=1e-12) is True, "Composition failed"
    g, _ = ad.exp(ad.sin(x) ** 2).get_gradient()
    assert np.allclose(g, 1.75426722676864073577,
                       atol=1e-12) is True, "Composition failed"
Exemple #4
0
def test_composition():
    x = AutoDiff(name='x', val=4)
    assert np.allclose(ad.sin(ad.exp(x)**2).trace['val'],
                       0.4017629715192812,
                       atol=1e-12) is True, "Composition failed"
    assert np.allclose(ad.sin(ad.exp(x)**2).trace['d_x'],
                       -5459.586962682745,
                       atol=1e-12) is True, "Composition failed"
    assert np.allclose(ad.exp(ad.sin(x)**2).trace['val'],
                       1.7731365081918968985940,
                       atol=1e-12) is True, "Composition failed"
    assert np.allclose(ad.exp(ad.sin(x)**2).trace['d_x'],
                       1.75426722676864073577,
                       atol=1e-12) is True, "Composition failed"
def test_sin():
    x = AutoDiffRev(name='x', val=np.pi)
    y = AutoDiffRev(name='y', val=3 * np.pi)
    z = AutoDiffRev(name='z', val=-12)
    q = AutoDiffRev(name='q', val="string")
    assert ad.sin(x) == np.sin(np.pi), "Sine failed"
    assert ad.sin(x).get_gradient()[0][0] == -1, 'Sine failed'
    assert np.allclose(ad.sin(y).get_value(), ad.sin(x).get_value(), atol=1e-12) is True, "Sine failed"
    assert np.allclose(ad.sin(y).get_gradient()[0][0], ad.sin(x).get_gradient()[0][0], atol=1e-12) is True, "Sine failed"
    assert np.allclose(ad.sin(z).get_value(), 0.536572918, atol=1e-12) is True, "Sine failed"
    try:
        ad.sin(q)
    except TypeError:
        print("Caught error as expected")
Exemple #6
0
def test_sin():
    x = AutoDiff(name='x', val=np.pi)
    y = AutoDiff(name='y', val=3 * np.pi)
    z = AutoDiff(name='z', val=-12)
    q = AutoDiff(name='q', val="string")
    assert ad.sin(x) == np.sin(np.pi), "Sine failed"
    assert ad.sin(x).trace['d_x'] == -1, 'Sine failed'
    assert np.allclose(ad.sin(y).trace['val'],
                       ad.sin(x).trace['val'],
                       atol=1e-12) is True, "Sine failed"
    assert np.allclose(ad.sin(y).trace['d_y'],
                       ad.sin(x).trace['d_x'],
                       atol=1e-12) is True, "Sine failed"
    assert np.allclose(ad.sin(z).trace['val'], 0.536572918,
                       atol=1e-12) is True, "Sine failed"
    try:
        ad.sin(q)
    except TypeError:
        print("Caught error as expected")