aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/packetmath.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2018-12-23 17:26:21 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2018-12-23 17:26:21 +0100
commit0f6f75bd8a0445edc3361659e065f15a29e2743c (patch)
treef6176fd37e7ff3b7e59fb829309d5e3fe6aaea6d /test/packetmath.cpp
parent38d704def8b6799b14c319d6a67c671374daccc3 (diff)
Implement a faster fix for sin/cos of large entries that also correctly handle INF input.
Diffstat (limited to 'test/packetmath.cpp')
-rw-r--r--test/packetmath.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/packetmath.cpp b/test/packetmath.cpp
index bf0312a73..9f647530b 100644
--- a/test/packetmath.cpp
+++ b/test/packetmath.cpp
@@ -579,6 +579,22 @@ template<typename Scalar,typename Packet> void packetmath_real()
VERIFY(data2[0]<=Scalar(1.) && data2[0]>=Scalar(-1.));
VERIFY(data2[1]<=Scalar(1.) && data2[1]>=Scalar(-1.));
}
+
+ data1[0] = std::numeric_limits<Scalar>::infinity();
+ data1[1] = -std::numeric_limits<Scalar>::infinity();
+ h.store(data2, internal::psin(h.load(data1)));
+ VERIFY((numext::isnan)(data2[0]));
+ VERIFY((numext::isnan)(data2[1]));
+
+ h.store(data2, internal::pcos(h.load(data1)));
+ VERIFY((numext::isnan)(data2[0]));
+ VERIFY((numext::isnan)(data2[1]));
+
+ data1[0] = std::numeric_limits<Scalar>::quiet_NaN();
+ h.store(data2, internal::psin(h.load(data1)));
+ VERIFY((numext::isnan)(data2[0]));
+ h.store(data2, internal::pcos(h.load(data1)));
+ VERIFY((numext::isnan)(data2[0]));
}
}
}