đĎĚĹÚÎÁŃ ÉÎĆĎŇÍÁĂÉŃ

 Math::BigFloat - Arbitrary length float math package

# NAME

Math::BigFloat - Arbitrary length float math package

# SYNOPSIS

```  use Math::BigFloat;
\$f = Math::BigFloat->new(\$string);```
```  \$f->fadd(NSTR) return NSTR            addition
\$f->fsub(NSTR) return NSTR            subtraction
\$f->fmul(NSTR) return NSTR            multiplication
\$f->fdiv(NSTR[,SCALE]) returns NSTR   division to SCALE places
\$f->fmod(NSTR) returns NSTR           modular remainder
\$f->fneg() return NSTR                negation
\$f->fabs() return NSTR                absolute value
\$f->fcmp(NSTR) return CODE            compare undef,<0,=0,>0
\$f->fround(SCALE) return NSTR         round to SCALE digits
\$f->ffround(SCALE) return NSTR        round at SCALEth place
\$f->fnorm() return (NSTR)             normalize
\$f->fsqrt([SCALE]) return NSTR        sqrt to SCALE places```

# DESCRIPTION

All basic math operations are overloaded if you declare your big floats as

`    \$float = new Math::BigFloat "2.123123123123123123123123123123123";`
number format
canonical strings have the form /[+-]\d+E[+-]\d+/ . Input values can have embedded whitespace.

Error returns 'NaN'
An input parameter was ``Not a Number'' or divide by zero or sqrt of negative number.

Division is computed to
`max(\$Math::BigFloat::div_scale,length(dividend)+length(divisor))` digits by default. Also used for default sqrt scale.

Rounding is performed
according to the value of `\$Math::BigFloat::rnd_mode`:
```  trunc     truncate the value
zero      round towards 0
+inf      round towards +infinity (round up)
-inf      round towards -infinity (round down)
even      round to the nearest, .5 to the even digit
odd       round to the nearest, .5 to the odd digit```

The default is `even` rounding.

# BUGS

The current version of this module is a preliminary version of the real thing that is currently (as of perl5.002) under development.

The printf subroutine does not use the value of `\$Math::BigFloat::rnd_mode` when rounding values for printing. Consequently, the way to print rounded values is to specify the number of digits both as an argument to `ffround` and in the `%f` printf string, as follows:

`  printf "%.3f\n", \$bigfloat->ffround(-3);`

# AUTHOR

Mark Biggar Patches by John Peacock Apr 2001 =cut

 Math::BigFloat - Arbitrary length float math package