def test_mul_epb(self): x = UTPS(numpy.array([1.,2.,3.]), P = 1) y = UTPS(numpy.array([5.,7.,11.]), P = 1) z = mul(x,y) zbar = UTPS(numpy.random.rand(3), P = 1) xbar = UTPS(numpy.zeros(3), P = 1) ybar = UTPS(numpy.zeros(3), P = 1) epb_mul(x,y,z, zbar, xbar, ybar) assert_array_almost_equal( (zbar*x).data, ybar.data) assert_array_almost_equal( (zbar*y).data, xbar.data)
def test_compare_pushforward_pullback_derivatives(self): x = UTPS(numpy.array([7.,1.,0.]), P = 1) y = UTPS(numpy.array([13.,0.,0.]), P = 1) v1 = mul(x,y) v2 = mul(x,v1) v2bar = UTPS([1.,0.,0.], P = 1) v1bar = UTPS(numpy.zeros(3), P = 1) xbar = UTPS(numpy.zeros(3), P = 1) ybar = UTPS(numpy.zeros(3), P = 1) epb_mul(x,v1,v2, v2bar, xbar, v1bar) epb_mul(x,y,v1, v1bar, xbar, ybar) assert_array_almost_equal(xbar.data[0], v2.data[1]) assert_array_almost_equal(xbar.data[1], 2*v2.data[2])