aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/LU
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-05-30 13:43:08 -0400
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-05-30 13:43:08 -0400
commit641d968a9a7ed57a3b8a3f45dea43c5ee6717f97 (patch)
treeecadb1e03dc32f41bed89a72048496c60af31a5e /Eigen/src/LU
parent48b8ace517ac61a214cb7d2ad782c67c8a411744 (diff)
* Make ReturnByValue have the EvalBeforeAssigningBit and explicitly
enforce this mechanism (otherwise ReturnByValue bypasses it). (use .noalias() to get the old behavior.) * Remove a hack in Inverse, futile optimization for 2x2 expressions.
Diffstat (limited to 'Eigen/src/LU')
-rw-r--r--Eigen/src/LU/Inverse.h19
1 files changed, 3 insertions, 16 deletions
diff --git a/Eigen/src/LU/Inverse.h b/Eigen/src/LU/Inverse.h
index 9e0c46094..1e9d69a22 100644
--- a/Eigen/src/LU/Inverse.h
+++ b/Eigen/src/LU/Inverse.h
@@ -281,15 +281,9 @@ struct ei_traits<ei_inverse_impl<MatrixType> >
template<typename MatrixType>
struct ei_inverse_impl : public ReturnByValue<ei_inverse_impl<MatrixType> >
{
- // for 2x2, it's worth giving a chance to avoid evaluating.
- // for larger sizes, evaluating has negligible cost, limits code size,
- // and allows for vectorized paths.
- typedef typename ei_meta_if<
- MatrixType::RowsAtCompileTime == 2,
- typename ei_nested<MatrixType,2>::type,
- typename ei_eval<MatrixType>::type
- >::ret MatrixTypeNested;
+ typedef typename MatrixType::Nested MatrixTypeNested;
typedef typename ei_cleantype<MatrixTypeNested>::type MatrixTypeNestedCleaned;
+
const MatrixTypeNested m_matrix;
ei_inverse_impl(const MatrixType& matrix)
@@ -359,14 +353,7 @@ inline void MatrixBase<Derived>::computeInverseAndDetWithCheck(
{
// i'd love to put some static assertions there, but SFINAE means that they have no effect...
ei_assert(rows() == cols());
- // for 2x2, it's worth giving a chance to avoid evaluating.
- // for larger sizes, evaluating has negligible cost and limits code size.
- typedef typename ei_meta_if<
- RowsAtCompileTime == 2,
- typename ei_cleantype<typename ei_nested<Derived, 2>::type>::type,
- PlainObject
- >::ret MatrixType;
- ei_compute_inverse_and_det_with_check<MatrixType, ResultType>::run
+ ei_compute_inverse_and_det_with_check<PlainObject, ResultType>::run
(derived(), absDeterminantThreshold, inverse, determinant, invertible);
}