On Wed, 2004-08-25 at 13:03 -0400, Dan Sugalski wrote:Okay, as has been suggested, the type order for numbers should go:
int->bignum->float
owing to the fact that floats are lossy and nasty. I'm not entirely sure I agree, given that floats are supported in hardware and faster (I've gotten a suggestion that we only do float and bignum for PMCs, since float ops are nearly as fast as int ops, and there are more bits, but the quiet loss of precision bothers me enough that I'm not sure I'm up for that) but it's a sensible argument.
Can't this be something config-able?
Nope. If it is then you get some pretty significant changes in behaviour for the same bytecode depending on what machine it's running on, which is something I'd like to avoid if we can.
On my machine,
perl -e '$c++ while ((2**$c)!=(2**$c + 1)); print ($c-1)'
prints 52, which seems a lot better than the ~32 available for most people's ints. I can't imagine immediately any reason why the promotion to a bignum for >52 bit ints would be conceptually different than a promotion to a double for >32 bit ints. Did I accidentally delete some important bits of the conversation?
The big problem with going to floats is the quiet loss of precision--there's no portable way (or non-portable way, so far as I know) to tell that a float has started dropping bits on us.
--
Dan
--------------------------------------it's like this------------------- Dan Sugalski even samurai [EMAIL PROTECTED] have teddy bears and even teddy bears get drunk