aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/stable_norm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/stable_norm.cpp')
-rw-r--r--test/stable_norm.cpp30
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()));