diff options
author | Gael Guennebaud <g.gael@free.fr> | 2014-09-02 16:09:39 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2014-09-02 16:09:39 +0200 |
commit | 42e27d41a2014043799b44b68b0d5644629279ba (patch) | |
tree | 00c431910d5af6b08540e7e68a1d8dc1afed5660 /Eigen/src/Core/functors/BinaryFunctors.h | |
parent | a44a343f034eb915f9ad6dcd69e4be534d48bbe5 (diff) |
Fix hypot() and hypotNorm() wrt NaN and INF values.
Diffstat (limited to 'Eigen/src/Core/functors/BinaryFunctors.h')
-rw-r--r-- | Eigen/src/Core/functors/BinaryFunctors.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/Eigen/src/Core/functors/BinaryFunctors.h b/Eigen/src/Core/functors/BinaryFunctors.h index ba094f5d1..157d075a7 100644 --- a/Eigen/src/Core/functors/BinaryFunctors.h +++ b/Eigen/src/Core/functors/BinaryFunctors.h @@ -167,9 +167,17 @@ template<typename Scalar> struct scalar_hypot_op { EIGEN_USING_STD_MATH(max); EIGEN_USING_STD_MATH(min); using std::sqrt; - Scalar p = (max)(_x, _y); - Scalar q = (min)(_x, _y); - Scalar qp = q/p; + Scalar p, qp; + if(_x>_y) + { + p = _x; + qp = _y / p; + } + else + { + p = _y; + qp = _x / p; + } return p * sqrt(Scalar(1) + qp*qp); } }; |