diff options
Diffstat (limited to 'Eigen/src/Householder/Householder.h')
-rw-r--r-- | Eigen/src/Householder/Householder.h | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/Eigen/src/Householder/Householder.h b/Eigen/src/Householder/Householder.h index c45e6469d..7d77cd6e6 100644 --- a/Eigen/src/Householder/Householder.h +++ b/Eigen/src/Householder/Householder.h @@ -26,17 +26,19 @@ #ifndef EIGEN_HOUSEHOLDER_H #define EIGEN_HOUSEHOLDER_H -template<int n> struct ei_decrement_size +namespace internal { +template<int n> struct decrement_size { enum { ret = n==Dynamic ? n : n-1 }; }; +} template<typename Derived> void MatrixBase<Derived>::makeHouseholderInPlace(Scalar& tau, RealScalar& beta) { - VectorBlock<Derived, ei_decrement_size<Base::SizeAtCompileTime>::ret> essentialPart(derived(), 1, size()-1); + VectorBlock<Derived, internal::decrement_size<Base::SizeAtCompileTime>::ret> essentialPart(derived(), 1, size()-1); makeHouseholder(essentialPart, tau, beta); } @@ -68,18 +70,18 @@ void MatrixBase<Derived>::makeHouseholder( RealScalar tailSqNorm = size()==1 ? RealScalar(0) : tail.squaredNorm(); Scalar c0 = coeff(0); - if(tailSqNorm == RealScalar(0) && ei_imag(c0)==RealScalar(0)) + if(tailSqNorm == RealScalar(0) && internal::imag(c0)==RealScalar(0)) { tau = 0; - beta = ei_real(c0); + beta = internal::real(c0); } else { - beta = ei_sqrt(ei_abs2(c0) + tailSqNorm); - if (ei_real(c0)>=RealScalar(0)) + beta = internal::sqrt(internal::abs2(c0) + tailSqNorm); + if (internal::real(c0)>=RealScalar(0)) beta = -beta; essential = tail / (c0 - beta); - tau = ei_conj((beta - c0) / beta); + tau = internal::conj((beta - c0) / beta); } } @@ -96,7 +98,7 @@ void MatrixBase<Derived>::applyHouseholderOnTheLeft( } else { - Map<typename ei_plain_row_type<PlainObject>::type> tmp(workspace,cols()); + Map<typename internal::plain_row_type<PlainObject>::type> tmp(workspace,cols()); Block<Derived, EssentialPart::SizeAtCompileTime, Derived::ColsAtCompileTime> bottom(derived(), 1, 0, rows()-1, cols()); tmp.noalias() = essential.adjoint() * bottom; tmp += this->row(0); @@ -118,7 +120,7 @@ void MatrixBase<Derived>::applyHouseholderOnTheRight( } else { - Map<typename ei_plain_col_type<PlainObject>::type> tmp(workspace,rows()); + Map<typename internal::plain_col_type<PlainObject>::type> tmp(workspace,rows()); Block<Derived, Derived::RowsAtCompileTime, EssentialPart::SizeAtCompileTime> right(derived(), 0, 1, rows(), cols()-1); tmp.noalias() = right * essential.conjugate(); tmp += this->col(0); |