aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/test/matrix_function.cpp
diff options
context:
space:
mode:
authorGravatar Jitse Niesen <jitse@maths.leeds.ac.uk>2010-02-20 14:45:50 +0000
committerGravatar Jitse Niesen <jitse@maths.leeds.ac.uk>2010-02-20 14:45:50 +0000
commit67ce07ea831fa2df4081436c0e8c4bfcd77d6ede (patch)
treeb7bd238e440064099f638dc77bc2ea1542390cca /unsupported/test/matrix_function.cpp
parent4f8773c23af0b3f16d4382494e6802f02b16af09 (diff)
matrix_function test: replace expm(A).inverse() by expm(-A)
The latter is more stable. This fixes one of the issues with the test. Also, make typedef's in MatrixFunctionReturnValue public; this is necessary to get the test to compile.
Diffstat (limited to 'unsupported/test/matrix_function.cpp')
-rw-r--r--unsupported/test/matrix_function.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/unsupported/test/matrix_function.cpp b/unsupported/test/matrix_function.cpp
index 4ff6d7f1e..7a1501da2 100644
--- a/unsupported/test/matrix_function.cpp
+++ b/unsupported/test/matrix_function.cpp
@@ -109,11 +109,10 @@ template<typename MatrixType>
void testHyperbolicFunctions(const MatrixType& A)
{
for (int i = 0; i < g_repeat; i++) {
- MatrixType sinhA = ei_matrix_sinh(A);
- MatrixType coshA = ei_matrix_cosh(A);
MatrixType expA = ei_matrix_exponential(A);
- VERIFY_IS_APPROX(sinhA, (expA - expA.inverse())/2);
- VERIFY_IS_APPROX(coshA, (expA + expA.inverse())/2);
+ MatrixType expmA = ei_matrix_exponential(-A);
+ VERIFY_IS_APPROX(ei_matrix_sinh(A), (expA - expmA) / 2);
+ VERIFY_IS_APPROX(ei_matrix_cosh(A), (expA + expmA) / 2);
}
}
@@ -134,14 +133,15 @@ void testGonioFunctions(const MatrixType& A)
ComplexMatrix Ac = A.template cast<ComplexScalar>();
ComplexMatrix exp_iA = ei_matrix_exponential(imagUnit * Ac);
+ ComplexMatrix exp_miA = ei_matrix_exponential(-imagUnit * Ac);
MatrixType sinA = ei_matrix_sin(A);
ComplexMatrix sinAc = sinA.template cast<ComplexScalar>();
- VERIFY_IS_APPROX(sinAc, (exp_iA - exp_iA.inverse()) / (two*imagUnit));
+ VERIFY_IS_APPROX(sinAc, (exp_iA - exp_miA) / (two*imagUnit));
MatrixType cosA = ei_matrix_cos(A);
ComplexMatrix cosAc = cosA.template cast<ComplexScalar>();
- VERIFY_IS_APPROX(cosAc, (exp_iA + exp_iA.inverse()) / 2);
+ VERIFY_IS_APPROX(cosAc, (exp_iA + exp_miA) / 2);
}
}