aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2009-08-16 19:22:15 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2009-08-16 19:22:15 +0200
commit737bed19c1fdb01568706bca19666531dda681a7 (patch)
tree8c588f448d34372faba3b9b438d44e6b903c0ffb /Eigen/src/Core
parentef13c3e754008e507eb67a9c5eab8dcb812777a1 (diff)
make HouseholderQR uses the Householder module
Diffstat (limited to 'Eigen/src/Core')
-rw-r--r--Eigen/src/Core/MatrixBase.h9
-rw-r--r--Eigen/src/Core/NoAlias.h10
-rw-r--r--Eigen/src/Core/Product.h4
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)