in reply to cos (100000000.0)

There's something related to Arbitrary-precision Arithmetic, I am not strong in Maths but from this query I got me curious and I found out that perl can allow you to use that sort of precision Arithmetic, please see, Arithmetic.

I know that negating 0 would give you the unsigned integer capacity of your machine, if this is got to do with addressing your problem, then I hope I have been able to contribute and I'd be happy, otherwise, I'd be happy as well if someone corrected me.

printf "%e", ~0;

Excellence is an Endeavor of Persistence. Chance Favors a Prepared Mind.

Replies are listed 'Best First'.
Re^2: cos (100000000.0)
by ikegami (Patriarch) on Sep 02, 2009 at 00:07 UTC

    I know that negating 0 would give you the unsigned integer capacity of your machine, if this is got to do with addressing your problem,

    Both numbers fit into a double-precision float (the minimum size Perl uses for floats), so it's not a question of machine precision. It's a question of the precision/accuracy of the cos function.

    Note that the Config module provides information on the size of number types used internally.

    $ perl -V:ivsize 4: -2**(4*8-1) .. 2**(4*8-1)-1 ivsize='4'; 8: -2**(8*8-1) .. 2**(8*8-1)-1 $ perl -V:uvsize 4: 0 .. 2**(4*8)-1 uvsize='4'; 8: 0 .. 2**(8*8)-1 $ perl -V:nvsize 8: double, 53 bits of precision nvsize='8'; 16: quad, 113 bits of precision