diff --git a/Eigen/src/QR/QR.h b/Eigen/src/QR/QR.h index 199d94307..19002e0eb 100644 --- a/Eigen/src/QR/QR.h +++ b/Eigen/src/QR/QR.h @@ -185,6 +185,7 @@ void QR::_compute(const MatrixType& matrix) m_qr = matrix; int rows = matrix.rows(); int cols = matrix.cols(); + RealScalar eps2 = precision()*precision(); for (int k = 0; k < cols; ++k) { @@ -209,7 +210,8 @@ void QR::_compute(const MatrixType& matrix) m_hCoeffs.coeffRef(k) = 0; } } - else if ( (!ei_isMuchSmallerThan(beta=m_qr.col(k).end(remainingSize-1).squaredNorm(),static_cast(1))) ) // FIXME what about ei_imag(v0) ?? + else if ((beta=m_qr.col(k).end(remainingSize-1).squaredNorm())>eps2) + // FIXME what about ei_imag(v0) ?? { // form k-th Householder vector beta = ei_sqrt(ei_abs2(v0)+beta);