develooper Front page | perl.module-authors | Postings from August 2021

Math::BigInt and bigint with non-integers

Thread Next
From:
Peter John Acklam
Date:
August 19, 2021 08:18
Subject:
Math::BigInt and bigint with non-integers
Message ID:
CAEvoY43T_W2PYDoQtvss1r+mLsXpV2LGxpV2jpSr7L-LVCTuFQ@mail.gmail.com
Hi!

I would like some input on how the Math::BigInt module and bigint pragma
should handle non-integers. The current behaviour is rather inconsistent.

The new() constructor converts a non-integer to a Math::BigInt NaN:

    $ perl -MMath::BigInt -wle 'print Math::BigInt -> new("3.16")'
    NaN

A math operation that returns a non-integer, returns a Math::BigInt with the
truncated value:

    $ perl -MMath::BigInt -wle 'print Math::BigInt -> new("10") -> bsqrt()'
    3

Math::BigInt with overloading of constants, leave a non-integer as an
unmodified Perl scalar:

    $ perl -MMath::BigInt=:constant -wle 'print 3.16'
    3.16

However, when the "bigint" pragma is used for overloading constants, a
non-integer becomes a Math::BigInt with the truncated value:

    $ perl -Mbigint -wle 'print 3.16'
    3

I'm not saying that all four cases should return the same value, but
returning three different values seems too much. Any suggestions?

Cheers,
Peter

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About