aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2016-04-13 18:47:12 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2016-04-13 18:47:12 +0200
commit6f960b83ff1396bd46f02672d73e308db497e774 (patch)
tree684c0aa9dda67bc3066b870c71b5763a375710e4 /Eigen/src
parentb7716c032893f4cc6f0e635bcffc2d8bc3d956ab (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.h3
-rw-r--r--Eigen/src/Core/SolveTriangular.h3
-rw-r--r--Eigen/src/Core/TriangularMatrix.h3
-rw-r--r--Eigen/src/Householder/HouseholderSequence.h4
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();