diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-05-09 12:33:05 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-05-09 12:33:05 +0400 |
commit | 91227ff6d0d49b67f4b332deeb29052502280981 (patch) | |
tree | e7dc3d4cc7baeb759be0f3d8907f6a93107b2fd7 /extern/Eigen3/Eigen/src/Core/ProductBase.h | |
parent | e132098599a8562bec7bff9aeaa69a7891d50708 (diff) |
Update Eigen3 library, would be needed for some further integraiton.
Diffstat (limited to 'extern/Eigen3/Eigen/src/Core/ProductBase.h')
-rw-r--r-- | extern/Eigen3/Eigen/src/Core/ProductBase.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/extern/Eigen3/Eigen/src/Core/ProductBase.h b/extern/Eigen3/Eigen/src/Core/ProductBase.h index 3bd3487d6a2..91975880fdc 100644 --- a/extern/Eigen3/Eigen/src/Core/ProductBase.h +++ b/extern/Eigen3/Eigen/src/Core/ProductBase.h @@ -152,7 +152,8 @@ class ProductBase : public MatrixBase<Derived> #else EIGEN_STATIC_ASSERT_SIZE_1x1(Derived) eigen_assert(this->rows() == 1 && this->cols() == 1); - return derived().coeff(row,col); + Matrix<Scalar,1,1> result = *this; + return result.coeff(row,col); #endif } @@ -160,7 +161,8 @@ class ProductBase : public MatrixBase<Derived> { EIGEN_STATIC_ASSERT_SIZE_1x1(Derived) eigen_assert(this->rows() == 1 && this->cols() == 1); - return derived().coeff(i); + Matrix<Scalar,1,1> result = *this; + return result.coeff(i); } const Scalar& coeffRef(Index row, Index col) const @@ -256,16 +258,16 @@ class ScaledProduct : Base(prod.lhs(),prod.rhs()), m_prod(prod), m_alpha(x) {} template<typename Dest> - inline void evalTo(Dest& dst) const { dst.setZero(); scaleAndAddTo(dst,m_alpha); } + inline void evalTo(Dest& dst) const { dst.setZero(); scaleAndAddTo(dst, Scalar(1)); } template<typename Dest> - inline void addTo(Dest& dst) const { scaleAndAddTo(dst,m_alpha); } + inline void addTo(Dest& dst) const { scaleAndAddTo(dst, Scalar(1)); } template<typename Dest> - inline void subTo(Dest& dst) const { scaleAndAddTo(dst,-m_alpha); } + inline void subTo(Dest& dst) const { scaleAndAddTo(dst, Scalar(-1)); } template<typename Dest> - inline void scaleAndAddTo(Dest& dst,Scalar alpha) const { m_prod.derived().scaleAndAddTo(dst,alpha); } + inline void scaleAndAddTo(Dest& dst,Scalar alpha) const { m_prod.derived().scaleAndAddTo(dst,alpha * m_alpha); } const Scalar& alpha() const { return m_alpha; } |