include Big_int
type big_int = Big_int.big_int
The type of big integers.
val zero_big_int : big_int
The big integer
0
.
val unit_big_int : big_int
The big integer
1
.
Arithmetic operations
val sqrt_big_int : big_int -> big_int
sqrt_big_int a
returns the integer square root ofa
, that is, the largest big integerr
such thatr * r <= a
. RaiseInvalid_argument
ifa
is negative.
val quomod_big_int : big_int -> big_int -> big_int * big_int
Euclidean division of two big integers. The first part of the result is the quotient, the second part is the remainder. Writing
(q,r) = quomod_big_int a b
, we havea = q * b + r
and0 <= r < |b|
. RaiseDivision_by_zero
if the divisor is zero.
val div_big_int : big_int -> big_int -> big_int
Euclidean quotient of two big integers. This is the first result
q
ofquomod_big_int
(see above).
val mod_big_int : big_int -> big_int -> big_int
Euclidean modulus of two big integers. This is the second result
r
ofquomod_big_int
(see above).
val power_int_positive_int : int -> int -> big_int
val power_big_int_positive_int : big_int -> int -> big_int
val power_int_positive_big_int : int -> big_int -> big_int
val power_big_int_positive_big_int : big_int -> big_int -> big_int
Exponentiation functions. Return the big integer representing the first argument
a
raised to the powerb
(the second argument). Depending on the function,a
andb
can be either small integers or big integers. RaiseInvalid_argument
ifb
is negative.
Comparisons and tests
val sign_big_int : big_int -> int
Return
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 -> int
compare_big_int a b
returns0
ifa
andb
are equal,1
ifa
is greater thanb
, and-1
ifa
is smaller thanb
.
val eq_big_int : big_int -> big_int -> bool
val le_big_int : big_int -> big_int -> bool
val ge_big_int : big_int -> big_int -> bool
val lt_big_int : big_int -> big_int -> bool
val gt_big_int : big_int -> big_int -> bool
Usual boolean comparisons between two big integers.
val num_digits_big_int : big_int -> int
Return the number of machine words used to store the given big integer.
val num_bits_big_int : big_int -> int
Return the number of significant bits in the absolute value of the given big integer.
num_bits_big_int a
returns 0 ifa
is 0; otherwise it returns a positive integern
such that2^(n-1) <= |a| < 2^n
.- since
- 4.03.0
Conversions to and from strings
val string_of_big_int : big_int -> string
Return the string representation of the given big integer, in decimal (base 10).
val big_int_of_string : string -> big_int
Convert a string to a big integer, in decimal. The string consists of an optional
-
or+
sign, followed by one or several decimal digits.
val big_int_of_string_opt : string -> big_int option
Convert a string to a big integer, in decimal. The string consists of an optional
-
or+
sign, followed by one or several decimal digits. Other the function returnsNone
.- since
- 4.05
Conversions to and from other numerical types
val big_int_of_int : int -> big_int
Convert a small integer to a big integer.
val is_int_big_int : big_int -> bool
Test whether the given big integer is small enough to be representable as a small integer (type
int
) without loss of precision. On a 32-bit platform,is_int_big_int a
returnstrue
if and only ifa
is between 230 and 230-1. On a 64-bit platform,is_int_big_int a
returnstrue
if and only ifa
is between -262 and 262-1.
val int_of_big_int : big_int -> int
Convert a big integer to a small integer (type
int
). RaisesFailure "int_of_big_int"
if the big integer is not representable as a small integer.
val int_of_big_int_opt : big_int -> int option
Convert a big integer to a small integer (type
int
). ReturnNone
if the big integer is not representable as a small integer.- since
- 4.05
val big_int_of_int32 : int32 -> big_int
Convert a 32-bit integer to a big integer.
val big_int_of_nativeint : nativeint -> big_int
Convert a native integer to a big integer.
val big_int_of_int64 : int64 -> big_int
Convert a 64-bit integer to a big integer.
val int32_of_big_int : big_int -> int32
Convert a big integer to a 32-bit integer. Raises
Failure
if the big integer is outside the range [-231, 231-1].
val int32_of_big_int_opt : big_int -> int32 option
Convert a big integer to a 32-bit integer. Return
None
if the big integer is outside the range [-231, 231-1].- since
- 4.05
val nativeint_of_big_int : big_int -> nativeint
Convert a big integer to a native integer. Raises
Failure
if the big integer is outside the range[Nativeint.min_int, Nativeint.max_int]
.
val nativeint_of_big_int_opt : big_int -> nativeint option
Convert a big integer to a native integer. Return
None
if the big integer is outside the range[Nativeint.min_int, Nativeint.max_int]
;- since
- 4.05
val int64_of_big_int : big_int -> int64
Convert a big integer to a 64-bit integer. Raises
Failure
if the big integer is outside the range [-263, 263-1].
val int64_of_big_int_opt : big_int -> int64 option
Convert a big integer to a 64-bit integer. Return
None
if the big integer is outside the range [-263, 263-1].- since
- 4.05
val float_of_big_int : big_int -> float
Returns a floating-point number approximating the given big integer.
Bit-oriented operations
val and_big_int : big_int -> big_int -> big_int
Bitwise logical 'and'. The arguments must be positive or zero.
val or_big_int : big_int -> big_int -> big_int
Bitwise logical 'or'. The arguments must be positive or zero.
val xor_big_int : big_int -> big_int -> big_int
Bitwise logical 'exclusive or'. The arguments must be positive or zero.
val shift_left_big_int : big_int -> int -> big_int
shift_left_big_int b n
returnsb
shifted left byn
bits. Equivalent to multiplication by 2^n.
val shift_right_big_int : big_int -> int -> big_int
shift_right_big_int b n
returnsb
shifted right byn
bits. Equivalent to division by 2^n with the result being rounded towards minus infinity.
val sexp_of_big_int : Big_int.big_int -> Sexplib.Sexp.t
val big_int_of_sexp : Sexplib.Sexp.t -> Big_int.big_int