diff options
author | Gael Guennebaud <g.gael@free.fr> | 2016-09-22 11:18:52 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2016-09-22 11:18:52 +0200 |
commit | 66cbabafed7957a7f6c03b34df854149233de596 (patch) | |
tree | bca4bb73e8cefeb9601e2a7049fc781e0e20d0f9 /Eigen/src/Core/MathFunctionsImpl.h | |
parent | 4b377715d7e62ba898c0bbd25672523b14214ceb (diff) |
Add a note regarding gcc bug #72867
Diffstat (limited to 'Eigen/src/Core/MathFunctionsImpl.h')
-rw-r--r-- | Eigen/src/Core/MathFunctionsImpl.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Eigen/src/Core/MathFunctionsImpl.h b/Eigen/src/Core/MathFunctionsImpl.h index 0c77ee003..3c9ef22fa 100644 --- a/Eigen/src/Core/MathFunctionsImpl.h +++ b/Eigen/src/Core/MathFunctionsImpl.h @@ -29,8 +29,12 @@ T generic_fast_tanh_float(const T& a_x) // this range is +/-1.0f in single-precision. const T plus_9 = pset1<T>(9.f); const T minus_9 = pset1<T>(-9.f); - const T x = pmax(minus_9, pmin(plus_9, a_x)); - + // NOTE GCC prior to 6.3 might improperly optimize this max/min + // step such that if a_x is nan, x will be either 9 or -9, + // and tanh will return 1 or -1 instead of nan. + // This is supposed to be fixed in gcc6.3, + // see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72867 + const T x = pmax(minus_9,pmin(plus_9,a_x)); // The monomial coefficients of the numerator polynomial (odd). const T alpha_1 = pset1<T>(4.89352455891786e-03f); const T alpha_3 = pset1<T>(6.37261928875436e-04f); |