11 #ifndef EIGEN_HOUSEHOLDER_H
12 #define EIGEN_HOUSEHOLDER_H
17 template<
int n>
struct decrement_size
41 template<
typename Derived>
45 makeHouseholder(essentialPart, tau, beta);
63 template<
typename Derived>
64 template<
typename EssentialPart>
66 EssentialPart& essential,
68 RealScalar& beta)
const
70 EIGEN_STATIC_ASSERT_VECTOR_ONLY(EssentialPart)
73 RealScalar tailSqNorm = size()==1 ? RealScalar(0) : tail.squaredNorm();
76 if(tailSqNorm == RealScalar(0) &&
internal::imag(c0)==RealScalar(0))
87 essential = tail / (c0 - beta);
107 template<
typename Derived>
108 template<
typename EssentialPart>
110 const EssentialPart& essential,
116 *
this *= Scalar(1)-tau;
122 tmp.noalias() = essential.adjoint() * bottom;
124 this->row(0) -= tau * tmp;
125 bottom.noalias() -= tau * essential * tmp;
144 template<
typename Derived>
145 template<
typename EssentialPart>
147 const EssentialPart& essential,
153 *
this *= Scalar(1)-tau;
159 tmp.noalias() = right * essential.conjugate();
161 this->col(0) -= tau * tmp;
162 right.noalias() -= tau * tmp * essential.transpose();
168 #endif // EIGEN_HOUSEHOLDER_H