I don't care what I'm initializing something with, there shouldn't be any way to create $ev such that both $ev and 1-$ev print as "1".
And as for initializing everything as strings, look at this code:
#!perl
use Math::BigFloat;
print ((new Math::BigFloat("1")) -
exp(new Math::BigFloat("-7") /
(new Math::BigFloat("10")**(new Math::BigFloat("17")))));
# Properly prints "0"
# (well, something like 7e-17 would be closer, but I'll accept 0)
Compare it to this code, which is the same but with a
use bignum:
#!perl
use bignum;
use Math::BigFloat;
print ((new Math::BigFloat("1")) -
exp(new Math::BigFloat("-7") /
(new Math::BigFloat("10")**(new Math::BigFloat("17")))));
# Incorrectly prints "1"
It would appear then that we have a bug not so much in Math::BigFloat directly, but somewhere in the intersection of Math::BigFloat, bignum, and the magic bignum sprinkles on
exp.
--
@/=map{[/./g]}qw/.h_nJ Xapou cets krht ele_ r_ra/;
map{y/X_/\n /;print}map{pop@$_}@/for@/