diff options
author | Gael Guennebaud <g.gael@free.fr> | 2009-08-16 19:22:15 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2009-08-16 19:22:15 +0200 |
commit | 737bed19c1fdb01568706bca19666531dda681a7 (patch) | |
tree | 8c588f448d34372faba3b9b438d44e6b903c0ffb /Eigen/src/Core | |
parent | ef13c3e754008e507eb67a9c5eab8dcb812777a1 (diff) |
make HouseholderQR uses the Householder module
Diffstat (limited to 'Eigen/src/Core')
-rw-r--r-- | Eigen/src/Core/MatrixBase.h | 9 | ||||
-rw-r--r-- | Eigen/src/Core/NoAlias.h | 10 | ||||
-rw-r--r-- | Eigen/src/Core/Product.h | 4 |
3 files changed, 13 insertions, 10 deletions
diff --git a/Eigen/src/Core/MatrixBase.h b/Eigen/src/Core/MatrixBase.h index 380ac89c0..9e92c043f 100644 --- a/Eigen/src/Core/MatrixBase.h +++ b/Eigen/src/Core/MatrixBase.h @@ -786,15 +786,18 @@ template<typename Derived> class MatrixBase ////////// Householder module /////////// + void makeHouseholderInPlace(RealScalar *tau, Scalar *beta); template<typename EssentialPart> void makeHouseholder(EssentialPart *essential, - RealScalar *beta) const; + RealScalar *tau, Scalar *beta) const; template<typename EssentialPart> void applyHouseholderOnTheLeft(const EssentialPart& essential, - const RealScalar& beta); + const RealScalar& tau, + Scalar* workspace); template<typename EssentialPart> void applyHouseholderOnTheRight(const EssentialPart& essential, - const RealScalar& beta); + const RealScalar& tau, + Scalar* workspace); ///////// Jacobi module ///////// diff --git a/Eigen/src/Core/NoAlias.h b/Eigen/src/Core/NoAlias.h index a45493ddc..66d8d834d 100644 --- a/Eigen/src/Core/NoAlias.h +++ b/Eigen/src/Core/NoAlias.h @@ -48,26 +48,26 @@ class NoAlias /** Behaves like MatrixBase::lazyAssign(other) * \sa MatrixBase::lazyAssign() */ template<typename OtherDerived> - ExpressionType& operator=(const MatrixBase<OtherDerived>& other) + EIGEN_STRONG_INLINE ExpressionType& operator=(const MatrixBase<OtherDerived>& other) { return m_expression.lazyAssign(other.derived()); } /** \sa MatrixBase::operator+= */ template<typename OtherDerived> - ExpressionType& operator+=(const MatrixBase<OtherDerived>& other) + EIGEN_STRONG_INLINE ExpressionType& operator+=(const MatrixBase<OtherDerived>& other) { return m_expression.lazyAssign(m_expression + other.derived()); } /** \sa MatrixBase::operator-= */ template<typename OtherDerived> - ExpressionType& operator-=(const MatrixBase<OtherDerived>& other) + EIGEN_STRONG_INLINE ExpressionType& operator-=(const MatrixBase<OtherDerived>& other) { return m_expression.lazyAssign(m_expression - other.derived()); } #ifndef EIGEN_PARSED_BY_DOXYGEN template<typename ProductDerived, typename Lhs, typename Rhs> - ExpressionType& operator+=(const ProductBase<ProductDerived, Lhs,Rhs>& other) + EIGEN_STRONG_INLINE ExpressionType& operator+=(const ProductBase<ProductDerived, Lhs,Rhs>& other) { other.derived().addTo(m_expression); return m_expression; } template<typename ProductDerived, typename Lhs, typename Rhs> - ExpressionType& operator-=(const ProductBase<ProductDerived, Lhs,Rhs>& other) + EIGEN_STRONG_INLINE ExpressionType& operator-=(const ProductBase<ProductDerived, Lhs,Rhs>& other) { other.derived().subTo(m_expression); return m_expression; } #endif diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h index fba4241b1..e1e106b80 100644 --- a/Eigen/src/Core/Product.h +++ b/Eigen/src/Core/Product.h @@ -187,7 +187,7 @@ class GeneralProduct<Lhs, Rhs, OuterProduct> template<> struct ei_outer_product_selector<ColMajor> { template<typename ProductType, typename Dest> - static void run(const ProductType& prod, Dest& dest, typename ProductType::Scalar alpha) { + EIGEN_DONT_INLINE static void run(const ProductType& prod, Dest& dest, typename ProductType::Scalar alpha) { // FIXME make sure lhs is sequentially stored const int cols = dest.cols(); for (int j=0; j<cols; ++j) @@ -197,7 +197,7 @@ template<> struct ei_outer_product_selector<ColMajor> { template<> struct ei_outer_product_selector<RowMajor> { template<typename ProductType, typename Dest> - static void run(const ProductType& prod, Dest& dest, typename ProductType::Scalar alpha) { + EIGEN_DONT_INLINE static void run(const ProductType& prod, Dest& dest, typename ProductType::Scalar alpha) { // FIXME make sure rhs is sequentially stored const int rows = dest.rows(); for (int i=0; i<rows; ++i) |