aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2015-06-29 10:49:55 -0700
committerGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2015-06-29 10:49:55 -0700
commit3625734bc8e63b4ccb4c190d170fd5d29fba5b54 (patch)
tree802298cb02cda49d1d786b8b850af633d29fbe16 /test
parent392a30db824161a0466f7970e12e5a48ed05ebd9 (diff)
Moved some utilities to TensorMeta.h to make it easier to reuse them accross several tensor operations.
Created the TensorDimensionList class to encode the list of all the dimensions of a tensor of rank n. This could be done using TensorIndexList, however TensorIndexList require cxx11 which isn't yet supported as widely as we'd like.
Diffstat (limited to 'test')
-rw-r--r--test/packetmath.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/test/packetmath.cpp b/test/packetmath.cpp
index d82b48773..74b4d4279 100644
--- a/test/packetmath.cpp
+++ b/test/packetmath.cpp
@@ -351,12 +351,33 @@ template<typename Scalar> void packetmath_real()
CHECK_CWISE1_IF(internal::packet_traits<Scalar>::HasLog, std::log, internal::plog);
{
data1[0] = std::numeric_limits<Scalar>::quiet_NaN();
+ data1[1] = std::numeric_limits<Scalar>::epsilon();
packet_helper<internal::packet_traits<Scalar>::HasLog,Packet> h;
h.store(data2, internal::plog(h.load(data1)));
- VERIFY(numext::isnan(data2[0]));
+ VERIFY(std::isnan(data2[0]));
+ // VERIFY_IS_EQUAL(std::log(std::numeric_limits<Scalar>::epsilon()), data2[1]);
+
+ data1[0] = -std::numeric_limits<Scalar>::epsilon();
+ data1[1] = 0;
+ h.store(data2, internal::plog(h.load(data1)));
+ VERIFY(std::isnan(data2[0]));
+ // VERIFY_IS_EQUAL(std::log(0), data2[1]);
+
+ data1[0] = (std::numeric_limits<Scalar>::min)();
+ data1[1] = -(std::numeric_limits<Scalar>::min)();
+ h.store(data2, internal::plog(h.load(data1)));
+ VERIFY_IS_EQUAL(std::log((std::numeric_limits<Scalar>::min)()), data2[0]);
+ // VERIFY(std::isnan(data2[1]));
+
+ data1[0] = std::numeric_limits<Scalar>::denorm_min();
+ data1[1] = -std::numeric_limits<Scalar>::denorm_min();
+ h.store(data2, internal::plog(h.load(data1)));
+ // VERIFY_IS_EQUAL(std::log(std::numeric_limits<Scalar>::denorm_min()), data2[0]);
+ // VERIFY(std::isnan(data2[1]));
+
data1[0] = -1.0f;
h.store(data2, internal::plog(h.load(data1)));
- VERIFY(numext::isnan(data2[0]));
+ VERIFY(std::isnan(data2[0]));
#if !EIGEN_FAST_MATH
h.store(data2, internal::psqrt(h.load(data1)));
VERIFY(numext::isnan(data2[0]));