This issue is not a bug in Math::BigRat or the libraries
(Math::BigInt::Calc, Math::BigInt::FastCalc, ...). This has to do with
how the Perl core deals with numerical scalars. 2^70 is exactly
1180591620717411303424, but look at this:
$ perl -we 'printf "%.0f\n", 0 + "1180591620717411303424"'
1180591620717411172352
$ perl -we 'printf "%.0f\n", 2 ** 70'
1180591620717411303424
$ perl -we 'printf "%.0f\n", "-" . (0 + "1180591620717411303424")'
-1180591620717409992704
In all three cases, the number is +/-2^70, but still I get three
different absolute values (my perl is built with 64 bit integer support
but no support for long doubles). You are expecting higher precision
than Perl can give you.