From c0d6a72611d40d4e7e45c9adb146b9635e2c12f8 Mon Sep 17 00:00:00 2001 From: Rasmus Munk Larsen Date: Wed, 12 Oct 2022 01:57:05 +0000 Subject: [PATCH] Use pnegate(pzero(x)) as a generic way to generate -0.0. Some compiler do not handle the literal -0.0 properly in fastmath mode. --- Eigen/src/Core/functors/BinaryFunctors.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Eigen/src/Core/functors/BinaryFunctors.h b/Eigen/src/Core/functors/BinaryFunctors.h index dae0d71b7..5bb4e0f9e 100644 --- a/Eigen/src/Core/functors/BinaryFunctors.h +++ b/Eigen/src/Core/functors/BinaryFunctors.h @@ -523,7 +523,7 @@ struct scalar_atan2_op { // See https://en.cppreference.com/w/cpp/numeric/math/atan2 // for how corner cases are supposed to be handled according to the // IEEE floating-point standard (IEC 60559). - const Packet kSignMask = pset1(Scalar(-0.0)); + const Packet kSignMask = pnegate(pzero(x)); const Packet kPi = pset1(Scalar(EIGEN_PI)); const Packet kPiO2 = pset1(Scalar(EIGEN_PI / 2)); const Packet kPiO4 = pset1(Scalar(EIGEN_PI / 4));