[CLN-list] Floating point overflow discrepancy

Richard B. Kreckel kreckel at ginac.de
Tue Feb 22 08:52:01 CET 2011


Hi!

On 02/21/2011 07:05 AM, Michael Miller wrote:
> The following code (to calculate x^100000):
>
>     cl_R x="1.0L100000", y=1;
>     for (int i=1; i<=100000; i++) y=x*y;
>     cout<<  y<<  "\n";
>     cout<<  exp(100000*ln(x))<<  "\n";;
>
> results in the output
>
>     1.00000000000000302104L10000000000
>     terminate called after throwing an instance of
>       'cln::floating_point_overflow_exception'
>     what():  floating point overflow.
>     Aborted
>
> I know that these are very large numbers, but the two calculations are
> computing the same value.  If the first doesn't overflow, then why does
> the second?

It is not only the final result that matters. When an intermediate 
result overflows an exception is thrown, too. You may wish to have a 
look at the code in src/float/transcendental/.

    -richy.
-- 
Richard B. Kreckel
<http://www.ginac.de/~kreckel/>


More information about the CLN-list mailing list