module BatBig_int:Operations on arbitrary-precision integers.sig..end
Big integers (type big_int or equivalently Big_int.t) are
signed integers of arbitrary size. This module lets you compute
with huge numbers, whose size is limited only by the amount of
memory given to OCaml. The downside is speed, as big integers
are much slower than any other type of integer known to OCaml.
This module extends Stdlib's
Big_int
module, go there for documentation on the rest of the functions
and types.
Author(s): Valerie Menissier-Morain (base module), Gabriel Scherer, David Teller
typet =Big_int.big_int
val zero : Big_int.big_intval one : Big_int.big_intval neg : Big_int.big_int -> Big_int.big_intval succ : Big_int.big_int -> Big_int.big_intval pred : Big_int.big_int -> Big_int.big_intval abs : Big_int.big_int -> Big_int.big_intval add : Big_int.big_int -> Big_int.big_int -> Big_int.big_intval sub : Big_int.big_int -> Big_int.big_int -> Big_int.big_intval mul : Big_int.big_int -> Big_int.big_int -> Big_int.big_intval div : Big_int.big_int -> Big_int.big_int -> Big_int.big_intval modulo : Big_int.big_int -> Big_int.big_int -> Big_int.big_intval pow : Big_int.big_int -> Big_int.big_int -> Big_int.big_intval to_string : Big_int.big_int -> stringval of_string : string -> Big_int.big_intval to_int : Big_int.big_int -> intval of_int : int -> Big_int.big_intval compare : Big_int.big_int -> Big_int.big_int -> intval (--) : Big_int.big_int -> Big_int.big_int -> Big_int.big_int BatEnum.tval (---) : Big_int.big_int -> Big_int.big_int -> Big_int.big_int BatEnum.tval (+) : t -> t -> tval (-) : t -> t -> tval ( * ) : t -> t -> tval (/) : t -> t -> tval ( ** ) : t -> t -> tval (<>) : t -> t -> boolval (>=) : t -> t -> boolval (<=) : t -> t -> boolval (>) : t -> t -> boolval (<) : t -> t -> boolval (=) : t -> t -> boolval operations : t BatNumber.numericval add_int_big_int : int -> Big_int.big_int -> Big_int.big_intval square_big_int : Big_int.big_int -> Big_int.big_intval sqrt_big_int : Big_int.big_int -> Big_int.big_intsqrt_big_int a returns the integer square root of a,
that is, the largest big integer r such that r * r <= a.
Raise Invalid_argument if a is negative.val quomod_big_int : Big_int.big_int -> Big_int.big_int -> Big_int.big_int * Big_int.big_int(q,r) = quomod_big_int a b, we have
a = q * b + r and 0 <= r < |b|.
Raise Division_by_zero if the divisor is zero.val power_int_positive_int : int -> int -> Big_int.big_intval power_big_int_positive_int : Big_int.big_int -> int -> Big_int.big_intval power_int_positive_big_int : int -> Big_int.big_int -> Big_int.big_intval power_big_int_positive_big_int : Big_int.big_int -> Big_int.big_int -> Big_int.big_inta raised to the power b
(the second argument). Depending
on the function, a and b can be either small integers
or big integers. Raise Invalid_argument if b is negative.val sign_big_int : Big_int.big_int -> int0 if the given big integer is zero,
1 if it is positive, and -1 if it is negative.val compare_big_int : Big_int.big_int -> Big_int.big_int -> intcompare_big_int a b returns 0 if a and b are equal,
1 if a is greater than b, and -1 if a is smaller
than b.val eq_big_int : Big_int.big_int -> Big_int.big_int -> boolval le_big_int : Big_int.big_int -> Big_int.big_int -> boolval ge_big_int : Big_int.big_int -> Big_int.big_int -> boolval lt_big_int : Big_int.big_int -> Big_int.big_int -> boolval gt_big_int : Big_int.big_int -> Big_int.big_int -> boolval max_big_int : Big_int.big_int -> Big_int.big_int -> Big_int.big_intval min_big_int : Big_int.big_int -> Big_int.big_int -> Big_int.big_intval num_digits_big_int : Big_int.big_int -> intval string_of_big_int : Big_int.big_int -> stringval big_int_of_string : string -> Big_int.big_int- or + sign,
followed by one or several decimal digits.val big_int_of_int : int -> Big_int.big_intval is_int_big_int : Big_int.big_int -> boolint)
without loss of precision. On a 32-bit platform,
is_int_big_int a returns true if and only if
a is between 230 and 230-1. On a 64-bit platform,
is_int_big_int a returns true if and only if
a is between -262 and 262-1.val int_of_big_int : Big_int.big_int -> intint).
Raises Failure "int_of_big_int" if the big integer
is not representable as a small integer.val float_of_big_int : Big_int.big_int -> floatval print : 'a BatIO.output -> t -> unit