From d5fa5001a7c6ba3ea29c5a4f18aebb8c1ec71dd6 Mon Sep 17 00:00:00 2001 From: Jeff Dean Date: Thu, 13 Jun 2013 18:17:27 +0200 Subject: [PATCH] Fix bug #613: psqrt was incorrect for small numbers --- Eigen/src/Core/arch/SSE/MathFunctions.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Eigen/src/Core/arch/SSE/MathFunctions.h b/Eigen/src/Core/arch/SSE/MathFunctions.h index 5ede55fba..1d1a98a9d 100644 --- a/Eigen/src/Core/arch/SSE/MathFunctions.h +++ b/Eigen/src/Core/arch/SSE/MathFunctions.h @@ -450,7 +450,7 @@ Packet4f psqrt(const Packet4f& _x) Packet4f half = pmul(_x, pset1(.5f)); /* select only the inverse sqrt of non-zero inputs */ - Packet4f non_zero_mask = _mm_cmpgt_ps(_x, pset1(std::numeric_limits::epsilon())); + Packet4f non_zero_mask = _mm_cmpgt_ps(_x, pset1((std::numeric_limits::min)())); Packet4f x = _mm_and_ps(non_zero_mask, _mm_rsqrt_ps(_x)); x = pmul(x, psub(pset1(1.5f), pmul(half, pmul(x,x))));