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));