From 43e2bc14fe06186d75580b93ffaf83fde4f4e823 Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Tue, 15 Apr 2008 20:39:27 +0000 Subject: +5% optimization in 4x4 inverse: -only evaluate block expressions for which that is beneficial -don't check for invertibility unless requested --- Eigen/src/LU/Inverse.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'Eigen/src/LU') diff --git a/Eigen/src/LU/Inverse.h b/Eigen/src/LU/Inverse.h index c41a23659..84d419f40 100644 --- a/Eigen/src/LU/Inverse.h +++ b/Eigen/src/LU/Inverse.h @@ -196,13 +196,13 @@ void Inverse::_compute_in_size4_case(const Expre { const Block22 Q = xpr.template block<2,2>(0,2); const Block22 P_inverse_times_Q = P_inverse * Q; - const Block22 R = xpr.template block<2,2>(2,0); + const XprBlock22 R = xpr.template block<2,2>(2,0); const Block22 R_times_P_inverse = R * P_inverse; const Block22 R_times_P_inverse_times_Q = R_times_P_inverse * Q; - const Block22 S = xpr.template block<2,2>(2,2); + const XprBlock22 S = xpr.template block<2,2>(2,2); const Block22 X = S - R_times_P_inverse_times_Q; Block22 Y; - if(ei_compute_size2_inverse(X, &Y)) + if(ei_compute_size2_inverse(X, &Y)) { m_inverse.template block<2,2>(2,2) = Y; m_inverse.template block<2,2>(2,0) = - Y * R_times_P_inverse; -- cgit v1.2.3