Up — package num Operation on arbitrary-precision numbers.
Numbers (type num
) are arbitrary-precision rational numbers,
plus the special elements 1/0
(infinity) and 0/0
(undefined).
type num
=
|
Int of int
|
Big_int of Big_int.big_int
|
Ratio of Ratio.ratio
Arithmetic operations
Euclidean division: quotient.
Euclidean division: remainder.
incr r
is r:=!r+1
, where r
is a reference to a number.
decr r
is r:=!r-1
, where r
is a reference to a number.
val is_integer_num : num -> bool
Test if a number is an integer
The four following functions approximate a number by an integer :
integer_num n
returns the integer closest to n
. In case of ties,
rounds towards zero.
floor_num n
returns the largest integer smaller or equal to n
.
round_num n
returns the integer closest to n
. In case of ties,
rounds off zero.
ceiling_num n
returns the smallest integer bigger or equal to n
.
val sign_num : num -> int
Return -1
, 0
or 1
according to the sign of the argument.
Comparisons between numbers
val (<=/) : num -> num -> bool
val (>=/) : num -> num -> bool
val (<>/) : num -> num -> bool
val eq_num : num -> num -> bool
val lt_num : num -> num -> bool
val le_num : num -> num -> bool
val gt_num : num -> num -> bool
val ge_num : num -> num -> bool
val compare_num : num -> num -> int
Return -1
, 0
or 1
if the first argument is less than,
equal to, or greater than the second argument.
Return the greater of the two arguments.
Return the smaller of the two arguments.
Coercions with strings
val string_of_num : num -> string
Convert a number to a string, using fractional notation.
val approx_num_fix : int -> num -> string
val approx_num_exp : int -> num -> string
Approximate a number by a decimal. The first argument is the
required precision. The second argument is the number to
approximate. Num.approx_num_fix uses decimal notation; the first
argument is the number of digits after the decimal point.
approx_num_exp
uses scientific (exponential) notation; the
first argument is the number of digits in the mantissa.
val num_of_string : string -> num
Convert a string to a number.
Raise Failure "num_of_string"
if the given string is not
a valid representation of an integer
val num_of_string_opt : string -> num option
Convert a string to a number.
Return None
if the given string is not
a valid representation of an integer.
Coercions between numerical types
val int_of_num : num -> int
val int_of_num_opt : num -> int option
val num_of_int : int -> num
val nat_of_num : num -> Nat.nat
val nat_of_num_opt : num -> Nat.nat option
val num_of_nat : Nat.nat -> num
val num_of_big_int : Big_int.big_int -> num
val big_int_of_num : num -> Big_int.big_int
val big_int_of_num_opt : num -> Big_int.big_int option
val ratio_of_num : num -> Ratio.ratio
val num_of_ratio : Ratio.ratio -> num
val float_of_num : num -> float