Softpedia
 


LINUX CATEGORIES:



GLOBAL PAGES >>
NEWS ARCHIVE >>
SOFTPEDIA REVIEWS >>
MEET THE EDITORS >>
WEEK'S BEST
  • Linux Kernel 3.9.3 / 3....
  • LibreOffice 3.6.6 / 4.0.3
  • MPlayer 1.1.1
  • systemd 204
  • Arch Linux 2013.05.01
  • Blender 2.67
  • KDE Software Compilatio...
  • CrunchBang Linux Stable...
  • Elementary OS 0.1 / 0.2...
  • SystemRescueCd 3.6.0
  • Home > Linux > Programming > Perl Modules

    Math::BigInt 1.997

    Download button

    No screenshots available
    Downloads: 657  Tell us about an update
    User Rating:
    Rated by:
    Good (3.6/5)
    11 user(s)
    Developer:

    License / Price:

    Last Updated:

    Category:
    Tels | More programs
    Perl Artistic License / FREE
    November 3rd, 2011, 05:56 GMT
    ROOT / Programming / Perl Modules

     Read user reviews (0)  Refer to a friend  Subscribe

    Math::BigInt description

    An arbitrary size integer/float math package.

    Math::BigInt is an arbitrary size integer/float math package.

    SYNOPSIS

    use Math::BigInt;

    # or make it faster: install (optional) Math::BigInt::GMP
    # and always use (it will fall back to pure Perl if the
    # GMP library is not installed):

    # will warn if Math::BigInt::GMP cannot be found
    use Math::BigInt lib => 'GMP';

    # to supress the warning use this:
    # use Math::BigInt try => 'GMP';

    my $str = '1234567890';
    my @values = (64,74,18);
    my $n = 1; my $sign = '-';

    # Number creation
    my $x = Math::BigInt->new($str); # defaults to 0
    my $y = $x->copy(); # make a true copy
    my $nan = Math::BigInt->bnan(); # create a NotANumber
    my $zero = Math::BigInt->bzero(); # create a +0
    my $inf = Math::BigInt->binf(); # create a +inf
    my $inf = Math::BigInt->binf('-'); # create a -inf
    my $one = Math::BigInt->bone(); # create a +1
    my $mone = Math::BigInt->bone('-'); # create a -1

    my $pi = Math::BigInt->bpi(); # returns '3'
    # see Math::BigFloat::bpi()

    $h = Math::BigInt->new('0x123'); # from hexadecimal
    $b = Math::BigInt->new('0b101'); # from binary
    $o = Math::BigInt->from_oct('0101'); # from octal

    # Testing (don't modify their arguments)
    # (return true if the condition is met, otherwise false)

    $x->is_zero(); # if $x is +0
    $x->is_nan(); # if $x is NaN
    $x->is_one(); # if $x is +1
    $x->is_one('-'); # if $x is -1
    $x->is_odd(); # if $x is odd
    $x->is_even(); # if $x is even
    $x->is_pos(); # if $x >= 0
    $x->is_neg(); # if $x < 0
    $x->is_inf($sign); # if $x is +inf, or -inf (sign is default '+')
    $x->is_int(); # if $x is an integer (not a float)

    # comparing and digit/sign extraction
    $x->bcmp($y); # compare numbers (undef,0)
    $x->bacmp($y); # compare absolutely (undef,0)
    $x->sign(); # return the sign, either +,- or NaN
    $x->digit($n); # return the nth digit, counting from right
    $x->digit(-$n); # return the nth digit, counting from left

    # The following all modify their first argument. If you want to preserve
    # $x, use $z = $x->copy()->bXXX($y); See under L for why this is
    # necessary when mixing $a = $b assignments with non-overloaded math.

    $x->bzero(); # set $x to 0
    $x->bnan(); # set $x to NaN
    $x->bone(); # set $x to +1
    $x->bone('-'); # set $x to -1
    $x->binf(); # set $x to inf
    $x->binf('-'); # set $x to -inf

    $x->bneg(); # negation
    $x->babs(); # absolute value
    $x->bnorm(); # normalize (no-op in BigInt)
    $x->bnot(); # two's complement (bit wise not)
    $x->binc(); # increment $x by 1
    $x->bdec(); # decrement $x by 1

    $x->badd($y); # addition (add $y to $x)
    $x->bsub($y); # subtraction (subtract $y from $x)
    $x->bmul($y); # multiplication (multiply $x by $y)
    $x->bdiv($y); # divide, set $x to quotient
    # return (quo,rem) or quo if scalar

    $x->bmuladd($y,$z); # $x = $x * $y + $z

    $x->bmod($y); # modulus (x % y)
    $x->bmodpow($exp,$mod); # modular exponentation (($num**$exp) % $mod))
    $x->bmodinv($mod); # the inverse of $x in the given modulus $mod

    $x->bpow($y); # power of arguments (x ** y)
    $x->blsft($y); # left shift in base 2
    $x->brsft($y); # right shift in base 2
    # returns (quo,rem) or quo if in scalar context
    $x->blsft($y,$n); # left shift by $y places in base $n
    $x->brsft($y,$n); # right shift by $y places in base $n
    # returns (quo,rem) or quo if in scalar context

    $x->band($y); # bitwise and
    $x->bior($y); # bitwise inclusive or
    $x->bxor($y); # bitwise exclusive or
    $x->bnot(); # bitwise not (two's complement)

    $x->bsqrt(); # calculate square-root
    $x->broot($y); # $y'th root of $x (e.g. $y == 3 => cubic root)
    $x->bfac(); # factorial of $x (1*2*3*4*..$x)

    $x->bnok($y); # x over y (binomial coefficient n over k)

    $x->blog(); # logarithm of $x to base e (Euler's number)
    $x->blog($base); # logarithm of $x to base $base (f.i. 2)
    $x->bexp(); # calculate e ** $x where e is Euler's number

    $x->round($A,$P,$mode); # round to accuracy or precision using mode $mode
    $x->bround($n); # accuracy: preserve $n digits
    $x->bfround($n); # round to $nth digit, no-op for BigInts

    # The following do not modify their arguments in BigInt (are no-ops),
    # but do so in BigFloat:

    $x->bfloor(); # return integer less or equal than $x
    $x->bceil(); # return integer greater or equal than $x

    # The following do not modify their arguments:

    # greatest common divisor (no OO style)
    my $gcd = Math::BigInt::bgcd(@values);
    # lowest common multiplicator (no OO style)
    my $lcm = Math::BigInt::blcm(@values);

    $x->length(); # return number of digits in number
    ($xl,$f) = $x->length(); # length of number and length of fraction part,
    # latter is always 0 digits long for BigInts

    $x->exponent(); # return exponent as BigInt
    $x->mantissa(); # return (signed) mantissa as BigInt
    $x->parts(); # return (mantissa,exponent) as BigInt
    $x->copy(); # make a true copy of $x (unlike $y = $x;)
    $x->as_int(); # return as BigInt (in BigInt: same as copy())
    $x->numify(); # return as scalar (might overflow!)

    # conversation to string (do not modify their argument)
    $x->bstr(); # normalized string (e.g. '3')
    $x->bsstr(); # norm. string in scientific notation (e.g. '3E0')
    $x->as_hex(); # as signed hexadecimal string with prefixed 0x
    $x->as_bin(); # as signed binary string with prefixed 0b
    $x->as_oct(); # as signed octal string with prefixed 0


    # precision and accuracy (see section about rounding for more)
    $x->precision(); # return P of $x (or global, if P of $x undef)
    $x->precision($n); # set P of $x to $n
    $x->accuracy(); # return A of $x (or global, if A of $x undef)
    $x->accuracy($n); # set A $x to $n

    # Global methods
    Math::BigInt->precision(); # get/set global P for all BigInt objects
    Math::BigInt->accuracy(); # get/set global A for all BigInt objects
    Math::BigInt->round_mode(); # get/set global round mode, one of
    # 'even', 'odd', '+inf', '-inf', 'zero', 'trunc' or 'common'
    Math::BigInt->config(); # return hash containing configuration



    Product's homepage

    Requirements:

    · Perl

      


    TAGS:

    integer math | float math | Perl module | Math | integer | float

    Go to top

    WindowsGamesDriversMacLinuxScriptsMobileHandheldNews

    SUBMIT PROGRAM   |   ADVERTISE   |   GET HELP   |   SEND US FEEDBACK   |   RSS FEEDS   |   UPDATE YOUR SOFTWARE   |   ROMANIAN FORUM