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_int
val one : Big_int.big_int
val neg : Big_int.big_int -> Big_int.big_int
val succ : Big_int.big_int -> Big_int.big_int
val pred : Big_int.big_int -> Big_int.big_int
val abs : Big_int.big_int -> Big_int.big_int
val add : Big_int.big_int -> Big_int.big_int -> Big_int.big_int
val sub : Big_int.big_int -> Big_int.big_int -> Big_int.big_int
val mul : Big_int.big_int -> Big_int.big_int -> Big_int.big_int
val div : Big_int.big_int -> Big_int.big_int -> Big_int.big_int
val modulo : Big_int.big_int -> Big_int.big_int -> Big_int.big_int
val pow : Big_int.big_int -> Big_int.big_int -> Big_int.big_int
val to_string : Big_int.big_int -> string
val of_string : string -> Big_int.big_int
val to_int : Big_int.big_int -> int
val of_int : int -> Big_int.big_int
val compare : Big_int.big_int -> Big_int.big_int -> int
val (--) : Big_int.big_int -> Big_int.big_int -> Big_int.big_int BatEnum.t
val (---) : Big_int.big_int -> Big_int.big_int -> Big_int.big_int BatEnum.t
val (+) : t -> t -> t
val (-) : t -> t -> t
val ( * ) : t -> t -> t
val (/) : t -> t -> t
val ( ** ) : t -> t -> t
val (<>) : t -> t -> bool
val (>=) : t -> t -> bool
val (<=) : t -> t -> bool
val (>) : t -> t -> bool
val (<) : t -> t -> bool
val (=) : t -> t -> bool
val operations : t BatNumber.numeric
val add_int_big_int : int -> Big_int.big_int -> Big_int.big_int
val square_big_int : Big_int.big_int -> Big_int.big_int
val sqrt_big_int : Big_int.big_int -> Big_int.big_int
sqrt_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_int
val power_big_int_positive_int : Big_int.big_int -> int -> Big_int.big_int
val power_int_positive_big_int : int -> Big_int.big_int -> Big_int.big_int
val power_big_int_positive_big_int : Big_int.big_int -> Big_int.big_int -> Big_int.big_int
a
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 -> int
0
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 -> int
compare_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 -> bool
val le_big_int : Big_int.big_int -> Big_int.big_int -> bool
val ge_big_int : Big_int.big_int -> Big_int.big_int -> bool
val lt_big_int : Big_int.big_int -> Big_int.big_int -> bool
val gt_big_int : Big_int.big_int -> Big_int.big_int -> bool
val max_big_int : Big_int.big_int -> Big_int.big_int -> Big_int.big_int
val min_big_int : Big_int.big_int -> Big_int.big_int -> Big_int.big_int
val num_digits_big_int : Big_int.big_int -> int
val string_of_big_int : Big_int.big_int -> string
val 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_int
val is_int_big_int : Big_int.big_int -> bool
int
)
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 -> int
int
).
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 -> float
val print : 'a BatIO.output -> t -> unit