mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Optimize matrix power
This commit is contained in:
@@ -67,7 +67,7 @@ void testIntPowers(const MatrixType& m, double tol)
|
||||
std::cout << "testIntPower: i = 1 error powerm = " << relerr(m1, m3) << " " << relerr(m1, m4) << '\n';
|
||||
VERIFY(m1 == m3 && m1 == m4);
|
||||
|
||||
m2 = m1 * m1;
|
||||
m2.noalias() = m1 * m1;
|
||||
m3 = m1.pow(2);
|
||||
m4 = m1.pow(2.);
|
||||
std::cout << "testIntPower: i = 2 error powerm = " << relerr(m2, m3) << " " << relerr(m2, m4) << '\n';
|
||||
@@ -111,7 +111,7 @@ void testExponentLaws(const MatrixType& m, double tol)
|
||||
m3 = m1.pow(y);
|
||||
|
||||
m4 = m1.pow(x + y);
|
||||
m5 = m2 * m3;
|
||||
m5.noalias() = m2 * m3;
|
||||
std::cout << "testExponentLaws: error powerm = " << relerr(m4, m5);
|
||||
VERIFY(m4.isApprox(m5, RealScalar(tol)));
|
||||
|
||||
@@ -145,13 +145,13 @@ void testMatrixVectorProduct(const MatrixType& m, const VectorType& v, double to
|
||||
pInt = rand();
|
||||
pInt >>= 2;
|
||||
|
||||
v2 = m1.pow(pReal).eval() * v1;
|
||||
v3 = m1.pow(pReal) * v1;
|
||||
v2.noalias() = m1.pow(pReal).eval() * v1;
|
||||
v3.noalias() = m1.pow(pReal) * v1;
|
||||
std::cout << "testMatrixVectorProduct: error powerm = " << relerr(v2, v3);
|
||||
VERIFY(v2.isApprox(v3, RealScalar(tol)));
|
||||
|
||||
v2 = m1.pow(pInt).eval() * v1;
|
||||
v3 = m1.pow(pInt) * v1;
|
||||
v2.noalias() = m1.pow(pInt).eval() * v1;
|
||||
v3.noalias() = m1.pow(pInt) * v1;
|
||||
std::cout << " " << relerr(v2, v3) << '\n';
|
||||
VERIFY(v2.isApprox(v3, RealScalar(tol)) || v2 == v3);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user