From 3d7e2d0e3e255f9f2160dcd5c60b48e2d445213c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20S=C3=A1nchez?= Date: Wed, 23 Feb 2022 23:27:08 +0000 Subject: [PATCH] Fix packetmath compilation error. --- test/packetmath.cpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/test/packetmath.cpp b/test/packetmath.cpp index cd7dadbd6..0a9949adb 100644 --- a/test/packetmath.cpp +++ b/test/packetmath.cpp @@ -657,10 +657,23 @@ Scalar log2(Scalar x) { return Scalar(EIGEN_LOG2E) * std::log(x); } +// Create a functor out of a function so it can be passed (with overloads) +// to another function as an input argument. +#define CREATE_FUNCTOR(Name, Func) \ +struct Name { \ + template \ + T operator()(const T& val) const { \ + return Func(val); \ + } \ +} + +CREATE_FUNCTOR(psqrt_functor, internal::psqrt); +CREATE_FUNCTOR(prsqrt_functor, internal::prsqrt); + // TODO(rmlarsen): Run this test for more functions. -template -void packetmath_test_IEEE_corner_cases(const REF_FUNCTOR_T& ref_fun, - const FUNCTOR_T& fun) { +template +void packetmath_test_IEEE_corner_cases(const RefFunctorT& ref_fun, + const FunctorT& fun) { const int PacketSize = internal::unpacket_traits::size; const Scalar norm_min = (std::numeric_limits::min)(); @@ -1013,8 +1026,8 @@ void packetmath_real() { VERIFY((numext::isnan)(data2[1])); } - packetmath_test_IEEE_corner_cases(numext::sqrt, internal::psqrt); - packetmath_test_IEEE_corner_cases(numext::rsqrt, internal::prsqrt); + packetmath_test_IEEE_corner_cases(numext::sqrt, psqrt_functor()); + packetmath_test_IEEE_corner_cases(numext::rsqrt, prsqrt_functor()); // TODO(rmlarsen): Re-enable for half and bfloat16. if (PacketTraits::HasCos