diff options
Diffstat (limited to 'test/stable_norm.cpp')
-rw-r--r-- | test/stable_norm.cpp | 30 |
1 files changed, 5 insertions, 25 deletions
diff --git a/test/stable_norm.cpp b/test/stable_norm.cpp index f76919af4..650f62a8a 100644 --- a/test/stable_norm.cpp +++ b/test/stable_norm.cpp @@ -9,26 +9,6 @@ #include "main.h" -template<typename T> bool isNotNaN(const T& x) -{ - return x==x; -} - -template<typename T> bool isNaN(const T& x) -{ - return x!=x; -} - -template<typename T> bool isInf(const T& x) -{ - return x > NumTraits<T>::highest(); -} - -template<typename T> bool isMinusInf(const T& x) -{ - return x < NumTraits<T>::lowest(); -} - // workaround aggressive optimization in ICC template<typename T> EIGEN_DONT_INLINE T sub(T a, T b) { return a - b; } @@ -130,7 +110,7 @@ template<typename MatrixType> void stable_norm(const MatrixType& m) // NaN { v = vrand; - v(i,j) = RealScalar(0)/RealScalar(0); + v(i,j) = std::numeric_limits<RealScalar>::quiet_NaN(); VERIFY(!isFinite(v.squaredNorm())); VERIFY(isNaN(v.squaredNorm())); VERIFY(!isFinite(v.norm())); VERIFY(isNaN(v.norm())); VERIFY(!isFinite(v.stableNorm())); VERIFY(isNaN(v.stableNorm())); @@ -141,7 +121,7 @@ template<typename MatrixType> void stable_norm(const MatrixType& m) // +inf { v = vrand; - v(i,j) = RealScalar(1)/RealScalar(0); + v(i,j) = std::numeric_limits<RealScalar>::infinity(); VERIFY(!isFinite(v.squaredNorm())); VERIFY(isInf(v.squaredNorm())); VERIFY(!isFinite(v.norm())); VERIFY(isInf(v.norm())); VERIFY(!isFinite(v.stableNorm())); VERIFY(isInf(v.stableNorm())); @@ -152,7 +132,7 @@ template<typename MatrixType> void stable_norm(const MatrixType& m) // -inf { v = vrand; - v(i,j) = RealScalar(-1)/RealScalar(0); + v(i,j) = -std::numeric_limits<RealScalar>::infinity(); VERIFY(!isFinite(v.squaredNorm())); VERIFY(isInf(v.squaredNorm())); VERIFY(!isFinite(v.norm())); VERIFY(isInf(v.norm())); VERIFY(!isFinite(v.stableNorm())); VERIFY(isInf(v.stableNorm())); @@ -165,8 +145,8 @@ template<typename MatrixType> void stable_norm(const MatrixType& m) Index i2 = internal::random<Index>(0,rows-1); Index j2 = internal::random<Index>(0,cols-1); v = vrand; - v(i,j) = RealScalar(-1)/RealScalar(0); - v(i2,j2) = RealScalar(0)/RealScalar(0); + v(i,j) = -std::numeric_limits<RealScalar>::infinity(); + v(i2,j2) = std::numeric_limits<RealScalar>::quiet_NaN(); VERIFY(!isFinite(v.squaredNorm())); VERIFY(isNaN(v.squaredNorm())); VERIFY(!isFinite(v.norm())); VERIFY(isNaN(v.norm())); VERIFY(!isFinite(v.stableNorm())); VERIFY(isNaN(v.stableNorm())); |