diff options
author | Rasmus Munk Larsen <rmlarsen@google.com> | 2020-12-03 22:31:44 +0000 |
---|---|---|
committer | Rasmus Munk Larsen <rmlarsen@google.com> | 2020-12-03 22:31:44 +0000 |
commit | 4d91519a9be061da5d300079fca17dd0b9328050 (patch) | |
tree | 5546a7f478049ce24d8f69f20ad018d6a63ec807 /test/packetmath.cpp | |
parent | 25d8ae7465e6430bc2dc7f65800332932d3bb774 (diff) |
Add log2() operator to Eigen
Diffstat (limited to 'test/packetmath.cpp')
-rw-r--r-- | test/packetmath.cpp | 8 |
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) { |