diff options
author | Rasmus Munk Larsen <rmlarsen@google.com> | 2019-08-28 12:20:21 -0700 |
---|---|---|
committer | Rasmus Munk Larsen <rmlarsen@google.com> | 2019-08-28 12:20:21 -0700 |
commit | 1187bb65ad196161a07f4e0125e478d022ea1b08 (patch) | |
tree | 86fa97b5b8f1f7377d51cdd202f30a4293b6b9ae /test/packetmath.cpp | |
parent | 6e77f9bef35012f160b307bdeae73194fde91e51 (diff) |
Add more tests for corner cases of log1p and expm1. Add handling of infinite arguments to log1p such that log1p(inf) = inf.
Diffstat (limited to 'test/packetmath.cpp')
-rw-r--r-- | test/packetmath.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/test/packetmath.cpp b/test/packetmath.cpp index 28768b18d..67ff6dc5b 100644 --- a/test/packetmath.cpp +++ b/test/packetmath.cpp @@ -607,8 +607,12 @@ template<typename Scalar,typename Packet> void packetmath_real() CHECK_CWISE1_IF(internal::packet_traits<Scalar>::HasLGamma, std::lgamma, internal::plgamma); CHECK_CWISE1_IF(internal::packet_traits<Scalar>::HasErf, std::erf, internal::perf); CHECK_CWISE1_IF(internal::packet_traits<Scalar>::HasErfc, std::erfc, internal::perfc); - CHECK_CWISE1_IF(PacketTraits::HasExpm1, std::expm1, internal::pexpm1); + data1[0] = std::numeric_limits<Scalar>::infinity(); + data1[1] = Scalar(-1); CHECK_CWISE1_IF(PacketTraits::HasLog1p, std::log1p, internal::plog1p); + data1[0] = std::numeric_limits<Scalar>::infinity(); + data1[1] = -std::numeric_limits<Scalar>::infinity(); + CHECK_CWISE1_IF(PacketTraits::HasExpm1, std::expm1, internal::pexpm1); #endif if(PacketSize>=2) @@ -648,6 +652,14 @@ template<typename Scalar,typename Packet> void packetmath_real() h.store(data2, internal::plog(h.load(data1))); VERIFY((numext::isinf)(data2[0])); } + if(PacketTraits::HasLog1p) { + packet_helper<PacketTraits::HasLog1p,Packet> h; + data1[0] = Scalar(-2); + data1[1] = -std::numeric_limits<Scalar>::infinity(); + h.store(data2, internal::plog1p(h.load(data1))); + VERIFY((numext::isnan)(data2[0])); + VERIFY((numext::isnan)(data2[1])); + } if(PacketTraits::HasSqrt) { packet_helper<PacketTraits::HasSqrt,Packet> h; |