Fix numerous nested versus nested_eval shortcomings

This commit is contained in:
Gael Guennebaud
2014-08-01 14:48:22 +02:00
parent fc13b37c55
commit 2a3c3c49a1
4 changed files with 13 additions and 4 deletions

View File

@@ -211,8 +211,13 @@ template<typename OtherDerived>
bool MatrixBase<Derived>::isOrthogonal
(const MatrixBase<OtherDerived>& other, const RealScalar& prec) const
{
#ifndef EIGEN_TEST_EVALUATORS
typename internal::nested<Derived,2>::type nested(derived());
typename internal::nested<OtherDerived,2>::type otherNested(other.derived());
#else
typename internal::nested_eval<Derived,2>::type nested(derived());
typename internal::nested_eval<OtherDerived,2>::type otherNested(other.derived());
#endif
return numext::abs2(nested.dot(otherNested)) <= prec * prec * nested.squaredNorm() * otherNested.squaredNorm();
}

View File

@@ -71,7 +71,11 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
template<typename Derived>
inline explicit AlignedBox(const MatrixBase<Derived>& a_p)
{
#ifndef EIGEN_TEST_EVALUATORS
typename internal::nested<Derived,2>::type p(a_p.derived());
#else
typename internal::nested_eval<Derived,2>::type p(a_p.derived());
#endif
m_min = p;
m_max = p;
}

View File

@@ -422,7 +422,11 @@ inline void MatrixBase<Derived>::computeInverseAndDetWithCheck(
// for larger sizes, evaluating has negligible cost and limits code size.
typedef typename internal::conditional<
RowsAtCompileTime == 2,
#ifndef EIGEN_TEST_EVALUATORS
typename internal::remove_all<typename internal::nested<Derived, 2>::type>::type,
#else
typename internal::remove_all<typename internal::nested_eval<Derived, 2>::type>::type,
#endif
PlainObject
>::type MatrixType;
internal::compute_inverse_and_det_with_check<MatrixType, ResultType>::run