def test_expm_jacobian_vector_product(self): n = 4 x = numpy.random.randn(n, n) E = numpy.random.randn(n, n) # use algopy to get the jacobian vector product ax = UTPM.init_jac_vec(x.flatten(), E.flatten()) ay = expm(ax.reshape((n, n))).reshape((n * n, )) g1 = UTPM.extract_jac_vec(ay) # compute the jacobian vector product directly using expm_frechet M = expm_frechet(x, E, compute_expm=False).flatten() assert_allclose(g1, M, rtol=1e-6)
def test_expm_jacobian_vector_product(self): n = 4 x = numpy.random.randn(n, n) E = numpy.random.randn(n, n) # use algopy to get the jacobian vector product ax = UTPM.init_jac_vec(x.flatten(), E.flatten()) ay = expm(ax.reshape((n, n))).reshape((n*n,)) g1 = UTPM.extract_jac_vec(ay) # compute the jacobian vector product directly using expm_frechet M = expm_frechet(x, E, compute_expm=False).flatten() assert_allclose(g1, M, rtol=1e-6)