# HG changeset patch # User David Bateman # Date 1246509089 -7200 # Node ID ee264f77eaed9731990eadcea8cc324f55c5e602 # Parent 2de1ae881ceab58cff5912aad21d9e95c65c663b Fix 'format rat' for values like '1 - eps' diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2008-07-01 David Bateman + + * pr-output.cc (static inline std::string rational_approx (double, + int)): Test for underflow of fractional part of rational approximation + earlier in the loop. + 2009-07-01 Joe Rothweiler * input.cc (raw_mode): Use TCSADRAIN if no wait. diff --git a/src/pr-output.cc b/src/pr-output.cc --- a/src/pr-output.cc +++ b/src/pr-output.cc @@ -271,6 +271,15 @@ double step = xround (flip); double nextn = n; double nextd = d; + + // Have we converged to 1/intmax ? + if (m > 100 || fabs (frac) < 1 / static_cast(INT_MAX)) + { + lastn = n; + lastd = d; + break; + } + frac = flip - step; n = n * step + lastn; d = d * step + lastd; @@ -295,14 +304,6 @@ break; s = buf.str(); - - // Have we converged to 1/intmax ? - if (m > 100 || fabs (frac) < 1 / static_cast(INT_MAX)) - { - lastn = n; - lastd = d; - break; - } } if (lastd < 0.)