$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r76095 - trunk/boost/math/special_functions/detail
From: john_at_[hidden]
Date: 2011-12-21 11:58:37
Author: johnmaddock
Date: 2011-12-21 11:58:36 EST (Wed, 21 Dec 2011)
New Revision: 76095
URL: http://svn.boost.org/trac/boost/changeset/76095
Log:
Change overflow tests to not generate an infinity.
Fixes #6307.
Text files modified: 
   trunk/boost/math/special_functions/detail/bessel_jn.hpp |     7 +++++--                                 
   1 files changed, 5 insertions(+), 2 deletions(-)
Modified: trunk/boost/math/special_functions/detail/bessel_jn.hpp
==============================================================================
--- trunk/boost/math/special_functions/detail/bessel_jn.hpp	(original)
+++ trunk/boost/math/special_functions/detail/bessel_jn.hpp	2011-12-21 11:58:36 EST (Wed, 21 Dec 2011)
@@ -72,7 +72,10 @@
         for (int k = 1; k < n; k++)
         {
             T fact = 2 * k / x;
-            if((tools::max_value<T>() - fabs(prev)) / fabs(fact) < fabs(current))
+            //
+            // rescale if we would overflow or underflow:
+            //
+            if((fabs(fact) > 1) && ((tools::max_value<T>() - fabs(prev)) / fabs(fact) < fabs(current)))
             {
                scale /= current;
                prev /= current;
@@ -97,7 +100,7 @@
         for (int k = n; k > 0; k--)
         {
             T fact = 2 * k / x;
-            if((tools::max_value<T>() - fabs(prev)) / fact < fabs(current))
+            if((fabs(fact) > 1) && ((tools::max_value<T>() - fabs(prev)) / fabs(fact) < fabs(current)))
             {
                prev /= current;
                scale /= current;