Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: May I be bitten by floating point arithmetic in the following restricted case?

by rubasov (Friar)
on Feb 24, 2010 at 00:34 UTC ( #824967=note: print w/ replies, xml ) Need Help??


in reply to May I be bitten by floating point arithmetic in the following restricted case?

Thank you all for your responses. I'm still digesting some of your notes, but I do see now that the scope of my little investigation was too narrow, that's why I wasn't able to find failing cases. (And as I haven't found those I was wondering how that can be...)

Fortunately my program would be used for statistical purposes, and nowhere near to the petabyte (2**50) file size range, so it'll avoid the real problems.

It is still interesting what would I do if I should care about the inaccuracy. Probably something like this sub I've written since my OP:

use bigint; { my @lookup = (1); # 2, 4, 8, ... sub int_log2 { my $n = shift; return if $n < 1; my $exp = 0; # this still could be optimized by starting at # $exp = min( $#lookup, $some_educated_guess_using_floating_point_ +approximation ) while ( $lookup[ $exp++ ] <= $n ) { $lookup[$exp] = 2 * $lookup[ $exp - 1 ] if not exists $lookup[$e +xp]; } return $exp - 2; } } for ( 1 .. 2**10 ) { print int_log2(2**$_-1), ' ', int_log2(2**$_), ' ', int_log2(2**$_+1 +), "\n"; }

This completes under 100sec on my several year old laptop.


Comment on Re: May I be bitten by floating point arithmetic in the following restricted case?
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://824967]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (9)
As of 2015-07-03 11:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (51 votes), past polls