aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src
diff options
context:
space:
mode:
Diffstat (limited to 'Eigen/src')
-rw-r--r--Eigen/src/Core/DenseStorageBase.h12
-rw-r--r--Eigen/src/LU/PartialPivLU.h2
-rw-r--r--Eigen/src/QR/ColPivHouseholderQR.h1
-rw-r--r--Eigen/src/QR/FullPivHouseholderQR.h1
-rw-r--r--Eigen/src/QR/HouseholderQR.h1
5 files changed, 7 insertions, 10 deletions
diff --git a/Eigen/src/Core/DenseStorageBase.h b/Eigen/src/Core/DenseStorageBase.h
index dac2142a4..58579b3d3 100644
--- a/Eigen/src/Core/DenseStorageBase.h
+++ b/Eigen/src/Core/DenseStorageBase.h
@@ -232,17 +232,19 @@ class DenseStorageBase : public _Base<Derived>
* remain row-vectors and vectors remain vectors.
*/
template<typename OtherDerived>
- EIGEN_STRONG_INLINE void resizeLike(const DenseBase<OtherDerived>& other)
+ EIGEN_STRONG_INLINE void resizeLike(const EigenBase<OtherDerived>& _other)
{
+ const OtherDerived& other = _other.derived();
+ const int othersize = other.rows()*other.cols();
if(RowsAtCompileTime == 1)
{
ei_assert(other.rows() == 1 || other.cols() == 1);
- resize(1, other.size());
+ resize(1, othersize);
}
else if(ColsAtCompileTime == 1)
{
ei_assert(other.rows() == 1 || other.cols() == 1);
- resize(other.size(), 1);
+ resize(othersize, 1);
}
else resize(other.rows(), other.cols());
}
@@ -343,7 +345,7 @@ class DenseStorageBase : public _Base<Derived>
template<typename OtherDerived>
EIGEN_STRONG_INLINE Derived& operator=(const EigenBase<OtherDerived> &other)
{
- resize(other.derived().rows(), other.derived().cols());
+ _resize_to_match(other);
Base::operator=(other.derived());
return this->derived();
}
@@ -424,7 +426,7 @@ class DenseStorageBase : public _Base<Derived>
* remain row-vectors and vectors remain vectors.
*/
template<typename OtherDerived>
- EIGEN_STRONG_INLINE void _resize_to_match(const DenseBase<OtherDerived>& other)
+ EIGEN_STRONG_INLINE void _resize_to_match(const EigenBase<OtherDerived>& other)
{
#ifdef EIGEN_NO_AUTOMATIC_RESIZING
ei_assert((this->size()==0 || (IsVectorAtCompileTime ? (this->size() == other.size())
diff --git a/Eigen/src/LU/PartialPivLU.h b/Eigen/src/LU/PartialPivLU.h
index df36cb04d..0dc2d0857 100644
--- a/Eigen/src/LU/PartialPivLU.h
+++ b/Eigen/src/LU/PartialPivLU.h
@@ -439,8 +439,6 @@ struct ei_solve_retval<PartialPivLU<_MatrixType>, Rhs>
const int size = dec().matrixLU().rows();
ei_assert(rhs().rows() == size);
- dst.resize(size, rhs().cols());
-
// Step 1
dst = dec().permutationP() * rhs();
diff --git a/Eigen/src/QR/ColPivHouseholderQR.h b/Eigen/src/QR/ColPivHouseholderQR.h
index 1219f1918..be1b22979 100644
--- a/Eigen/src/QR/ColPivHouseholderQR.h
+++ b/Eigen/src/QR/ColPivHouseholderQR.h
@@ -432,7 +432,6 @@ struct ei_solve_retval<ColPivHouseholderQR<_MatrixType>, Rhs>
{
const int rows = dec().rows(), cols = dec().cols(),
nonzero_pivots = dec().nonzeroPivots();
- dst.resize(cols, rhs().cols());
ei_assert(rhs().rows() == rows);
if(nonzero_pivots == 0)
diff --git a/Eigen/src/QR/FullPivHouseholderQR.h b/Eigen/src/QR/FullPivHouseholderQR.h
index 07be47f47..6ba0f45f8 100644
--- a/Eigen/src/QR/FullPivHouseholderQR.h
+++ b/Eigen/src/QR/FullPivHouseholderQR.h
@@ -341,7 +341,6 @@ struct ei_solve_retval<FullPivHouseholderQR<_MatrixType>, Rhs>
template<typename Dest> void evalTo(Dest& dst) const
{
const int rows = dec().rows(), cols = dec().cols();
- dst.resize(cols, rhs().cols());
ei_assert(rhs().rows() == rows);
// FIXME introduce nonzeroPivots() and use it here. and more generally,
diff --git a/Eigen/src/QR/HouseholderQR.h b/Eigen/src/QR/HouseholderQR.h
index 4709e4b77..79d1ea6a0 100644
--- a/Eigen/src/QR/HouseholderQR.h
+++ b/Eigen/src/QR/HouseholderQR.h
@@ -217,7 +217,6 @@ struct ei_solve_retval<HouseholderQR<_MatrixType>, Rhs>
template<typename Dest> void evalTo(Dest& dst) const
{
const int rows = dec().rows(), cols = dec().cols();
- dst.resize(cols, rhs().cols());
const int rank = std::min(rows, cols);
ei_assert(rhs().rows() == rows);