aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/packetmath.cpp
diff options
context:
space:
mode:
authorGravatar Rasmus Munk Larsen <rmlarsen@google.com>2020-12-04 21:45:09 +0000
committerGravatar Rasmus Munk Larsen <rmlarsen@google.com>2020-12-04 21:45:09 +0000
commitf9fac1d5b044afb8104ecb5c1e5183c309bafca4 (patch)
tree1323be5978ccf5541530445b7789dcee48143db6 /test/packetmath.cpp
parent2dbac2f99f073051b213f41d9dac26e01d94594e (diff)
Add log2() to Eigen.
Diffstat (limited to 'test/packetmath.cpp')
-rw-r--r--test/packetmath.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/test/packetmath.cpp b/test/packetmath.cpp
index ae0ead820..d995e8b71 100644
--- a/test/packetmath.cpp
+++ b/test/packetmath.cpp
@@ -488,6 +488,13 @@ void packetmath() {
packetmath_minus_zero_add<Scalar, Packet>();
}
+// Notice that this definition works for complex types as well.
+// c++11 has std::log2 for real, but not for complex types.
+template <typename Scalar>
+Scalar log2(Scalar x) {
+ return Scalar(M_LOG2E) * std::log(x);
+}
+
template <typename Scalar, typename Packet>
void packetmath_real() {
typedef internal::packet_traits<Scalar> PacketTraits;
@@ -506,6 +513,7 @@ void packetmath_real() {
if (internal::random<float>(0, 1) < 0.1f) data1[internal::random<int>(0, PacketSize)] = Scalar(0);
CHECK_CWISE1_IF(PacketTraits::HasLog, std::log, internal::plog);
+ CHECK_CWISE1_IF(PacketTraits::HasLog, log2, internal::plog2);
CHECK_CWISE1_IF(PacketTraits::HasRsqrt, 1 / std::sqrt, internal::prsqrt);
for (int i = 0; i < size; ++i) {