offtopic? Math::BigFloat

C. Abney cabney at
Mon Dec 23 15:09:19 CST 2002

On Sun, 2002-12-22 at 02:51, Douglas Wilson wrote:
> You mentioned privately that the routines were slow (pure perl never has
> been that
> good at arbitrary precision number crunching), but I've since noticed that
> there are options to Math::BigFloat to use Bit::Vector, Math::Pari, or
> Math::GMP as backends (and they are all C or XS libraries), and
> I though it might be worth sharing with
> the group. It may help, I don't know if it'll help you
> enough, but it may be worth looking into. You might have to change
> the 'use Math::BigFloat' statement within Math::NumberCruncher, or
> maybe it would be enough to pass in your own Math::BigFloat
> numbers to the Math::NumberCruncher routines.

No this was a problem with the code, or at least the way I was using
it.  My solution was to graft ->Ln() and its dependencies out into my
own code, and make some minor changes.  The code section:

    $X->bfround( -$modP );
    return -Ln( 1 / $X, $P ) if $X < 1;

was changed to:

        if ( 0 > $X->bcmp(1) ) {
                my $N = $X->copy();
                return -Ln($N, $P);
        $X->bfround( -$modP );

This was necessary because the existing code was rounding my really
small number to zero  But it wasn't doing it /explicitly/, rather as a
consequence of assuming it was a normal sized number, and doing a normal
division on it.  Also, $X->bfround( -$modP ) is evaluated twice if $X <
1 in the original code.  There's probably a more efficient way to
accomplish the changes I made, but I have a deadline (and this is a
prototype). :-/

Again, thanks to Douglas for pointing out Math::NumberCruncher, which
has a lot of really nice goodies.


Charles Abney
Polymorphism Research Laboratory, 0603
UCSD School of Medicine
9500 Gilman Dr.
La Jolla, CA 92093-0603

The posting address is: san-diego-pm-list at

List requests should be sent to: majordomo at

If you ever want to remove yourself from this mailing list,
you can send mail to <majordomo at> with the following
command in the body of your email message:

    unsubscribe san-diego-pm-list

If you ever need to get in contact with the owner of the list,
(if you have trouble unsubscribing, or have questions about the
list itself) send email to <owner-san-diego-pm-list at> .
This is the general rule for most mailing lists when you need
to contact a human.

More information about the San-Diego-pm mailing list