diff options
author | Gael Guennebaud <g.gael@free.fr> | 2016-04-13 18:47:12 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2016-04-13 18:47:12 +0200 |
commit | 6f960b83ff1396bd46f02672d73e308db497e774 (patch) | |
tree | 684c0aa9dda67bc3066b870c71b5763a375710e4 /Eigen/src | |
parent | b7716c032893f4cc6f0e635bcffc2d8bc3d956ab (diff) |
Make use of is_same_dense helper instead of extract_data to detect input/outputs are the same.
Diffstat (limited to 'Eigen/src')
-rw-r--r-- | Eigen/src/Core/ProductEvaluators.h | 3 | ||||
-rw-r--r-- | Eigen/src/Core/SolveTriangular.h | 3 | ||||
-rw-r--r-- | Eigen/src/Core/TriangularMatrix.h | 3 | ||||
-rw-r--r-- | Eigen/src/Householder/HouseholderSequence.h | 4 |
4 files changed, 4 insertions, 9 deletions
diff --git a/Eigen/src/Core/ProductEvaluators.h b/Eigen/src/Core/ProductEvaluators.h index 2cdcf1c02..d9fd888cf 100644 --- a/Eigen/src/Core/ProductEvaluators.h +++ b/Eigen/src/Core/ProductEvaluators.h @@ -1006,8 +1006,7 @@ struct transposition_matrix_product const Index size = tr.size(); StorageIndex j = 0; - const typename Dest::Scalar *dst_data = internal::extract_data(dst); - if(!(is_same<MatrixTypeCleaned,Dest>::value && dst_data!=0 && dst_data == extract_data(mat))) + if(!is_same_dense(dst,mat)) dst = mat; for(Index k=(Transposed?size-1:0) ; Transposed?k>=0:k<size ; Transposed?--k:++k) diff --git a/Eigen/src/Core/SolveTriangular.h b/Eigen/src/Core/SolveTriangular.h index 9b52e1b6e..a33356423 100644 --- a/Eigen/src/Core/SolveTriangular.h +++ b/Eigen/src/Core/SolveTriangular.h @@ -213,8 +213,7 @@ template<int Side, typename TriangularType, typename Rhs> struct triangular_solv template<typename Dest> inline void evalTo(Dest& dst) const { - const typename Dest::Scalar *dst_data = internal::extract_data(dst); - if(!(is_same<RhsNestedCleaned,Dest>::value && dst_data!=0 && dst_data == extract_data(m_rhs))) + if(!is_same_dense(dst,m_rhs)) dst = m_rhs; m_triangularMatrix.template solveInPlace<Side>(dst); } diff --git a/Eigen/src/Core/TriangularMatrix.h b/Eigen/src/Core/TriangularMatrix.h index fafc2a0c6..5c5e5028e 100644 --- a/Eigen/src/Core/TriangularMatrix.h +++ b/Eigen/src/Core/TriangularMatrix.h @@ -532,8 +532,7 @@ template<typename _MatrixType, unsigned int _Mode> class TriangularViewImpl<_Mat template<typename RhsType, typename DstType> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void _solve_impl(const RhsType &rhs, DstType &dst) const { - const typename DstType::Scalar *dst_data = internal::extract_data(dst); - if(!(internal::is_same<RhsType,DstType>::value && dst_data!=0 && dst_data == internal::extract_data(rhs))) + if(!internal::is_same_dense(dst,rhs)) dst = rhs; this->solveInPlace(dst); } diff --git a/Eigen/src/Householder/HouseholderSequence.h b/Eigen/src/Householder/HouseholderSequence.h index 3f5f9293b..e9f3ebf88 100644 --- a/Eigen/src/Householder/HouseholderSequence.h +++ b/Eigen/src/Householder/HouseholderSequence.h @@ -243,9 +243,7 @@ template<typename VectorsType, typename CoeffsType, int Side> class HouseholderS { workspace.resize(rows()); Index vecs = m_length; - const typename Dest::Scalar *dst_data = internal::extract_data(dst); - if( internal::is_same<typename internal::remove_all<VectorsType>::type,Dest>::value - && dst_data!=0 && dst_data == internal::extract_data(m_vectors)) + if(is_same_dense(dst,m_vectors)) { // in-place dst.diagonal().setOnes(); |