mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-02-05 17:50:26 +08:00
Let be consistent and consider any denormal number as zero.
This commit is contained in:
parent
b33144e4df
commit
fa9049a544
@ -665,10 +665,8 @@ JacobiSVD<MatrixType, QRPreconditioner>::compute(const MatrixType& matrix, unsig
|
|||||||
// only worsening the precision of U and V as we accumulate more rotations
|
// only worsening the precision of U and V as we accumulate more rotations
|
||||||
const RealScalar precision = RealScalar(2) * NumTraits<Scalar>::epsilon();
|
const RealScalar precision = RealScalar(2) * NumTraits<Scalar>::epsilon();
|
||||||
|
|
||||||
// limit for very small denormal numbers to be considered zero in order to avoid infinite loops (see bug 286)
|
// limit for denormal numbers to be considered zero in order to avoid infinite loops (see bug 286)
|
||||||
// FIXME What about considerering any denormal numbers as zero, using:
|
const RealScalar considerAsZero = (std::numeric_limits<RealScalar>::min)();
|
||||||
// const RealScalar considerAsZero = (std::numeric_limits<RealScalar>::min)();
|
|
||||||
const RealScalar considerAsZero = RealScalar(2) * std::numeric_limits<RealScalar>::denorm_min();
|
|
||||||
|
|
||||||
// Scaling factor to reduce over/under-flows
|
// Scaling factor to reduce over/under-flows
|
||||||
RealScalar scale = matrix.cwiseAbs().maxCoeff();
|
RealScalar scale = matrix.cwiseAbs().maxCoeff();
|
||||||
|
Loading…
Reference in New Issue
Block a user