Module Std.Big_int
include module type of struct include Big_int end
type big_int = Big_int.big_intThe type of big integers.
val zero_big_int : Sexplib_num.Std.Big_int.big_intThe big integer 0.
val unit_big_int : Sexplib_num.Std.Big_int.big_intThe big integer 1.
Arithmetic operations
val minus_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intUnary negation.
val abs_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intAbsolute value.
val add_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intAddition.
val succ_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intSuccessor (add 1).
val add_int_big_int :
int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intAddition of a small integer to a big integer.
val sub_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intSubtraction.
val pred_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intPredecessor (subtract 1).
val mult_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intMultiplication of two big integers.
val mult_int_big_int :
int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intMultiplication of a big integer by a small integer
val square_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intReturn the square of the given big integer
val sqrt_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.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 :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int * Sexplib_num.Std.Big_int.big_intEuclidean 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 have a = q * b + r and 0 <= r < |b|. Raise Division_by_zero if the divisor is zero.
val div_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intEuclidean quotient of two big integers. This is the first result q of quomod_big_int (see above).
val mod_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intEuclidean modulus of two big integers. This is the second result r of quomod_big_int (see above).
val gcd_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intGreatest common divisor of two big integers.
val power_int_positive_int : int -> int -> Sexplib_num.Std.Big_int.big_intval power_big_int_positive_int :
Sexplib_num.Std.Big_int.big_int ->
int ->
Sexplib_num.Std.Big_int.big_intval power_int_positive_big_int :
int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intval power_big_int_positive_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intExponentiation functions. Return the big integer representing the first argument 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.
Comparisons and tests
val sign_big_int : Sexplib_num.Std.Big_int.big_int -> intReturn 0 if the given big integer is zero, 1 if it is positive, and -1 if it is negative.
val compare_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.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 :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
boolval le_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
boolval ge_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
boolval lt_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
boolval gt_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
boolUsual boolean comparisons between two big integers.
val max_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intReturn the greater of its two arguments.
val min_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intReturn the smaller of its two arguments.
val num_digits_big_int : Sexplib_num.Std.Big_int.big_int -> intReturn the number of machine words used to store the given big integer.
val num_bits_big_int : Sexplib_num.Std.Big_int.big_int -> intReturn the number of significant bits in the absolute value of the given big integer. num_bits_big_int a returns 0 if a is 0; otherwise it returns a positive integer n such that 2^(n-1) <= |a| < 2^n.
Conversions to and from strings
val string_of_big_int : Sexplib_num.Std.Big_int.big_int -> stringReturn the string representation of the given big integer, in decimal (base 10).
val big_int_of_string : string -> Sexplib_num.Std.Big_int.big_intConvert 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 -> Sexplib_num.Std.Big_int.big_int optionConvert 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 returns None.
Conversions to and from other numerical types
val big_int_of_int : int -> Sexplib_num.Std.Big_int.big_intConvert a small integer to a big integer.
val is_int_big_int : Sexplib_num.Std.Big_int.big_int -> boolTest 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 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 : Sexplib_num.Std.Big_int.big_int -> intConvert a big integer to a small integer (type int). Raises Failure "int_of_big_int" if the big integer is not representable as a small integer.
val int_of_big_int_opt : Sexplib_num.Std.Big_int.big_int -> int optionConvert a big integer to a small integer (type int). Return None if the big integer is not representable as a small integer.
val big_int_of_int32 : int32 -> Sexplib_num.Std.Big_int.big_intConvert a 32-bit integer to a big integer.
val big_int_of_nativeint : nativeint -> Sexplib_num.Std.Big_int.big_intConvert a native integer to a big integer.
val big_int_of_int64 : int64 -> Sexplib_num.Std.Big_int.big_intConvert a 64-bit integer to a big integer.
val int32_of_big_int : Sexplib_num.Std.Big_int.big_int -> int32Convert 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 : Sexplib_num.Std.Big_int.big_int -> int32 optionConvert a big integer to a 32-bit integer. Return None if the big integer is outside the range [-231, 231-1].
val nativeint_of_big_int : Sexplib_num.Std.Big_int.big_int -> nativeintConvert 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 :
Sexplib_num.Std.Big_int.big_int ->
nativeint optionConvert a big integer to a native integer. Return None if the big integer is outside the range [Nativeint.min_int, Nativeint.max_int];
val int64_of_big_int : Sexplib_num.Std.Big_int.big_int -> int64Convert 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 : Sexplib_num.Std.Big_int.big_int -> int64 optionConvert a big integer to a 64-bit integer. Return None if the big integer is outside the range [-263, 263-1].
val float_of_big_int : Sexplib_num.Std.Big_int.big_int -> floatReturns a floating-point number approximating the given big integer.
Bit-oriented operations
val and_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intBitwise logical 'and'. The arguments must be positive or zero.
val or_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intBitwise logical 'or'. The arguments must be positive or zero.
val xor_big_int :
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_int ->
Sexplib_num.Std.Big_int.big_intBitwise logical 'exclusive or'. The arguments must be positive or zero.
val shift_left_big_int :
Sexplib_num.Std.Big_int.big_int ->
int ->
Sexplib_num.Std.Big_int.big_intshift_left_big_int b n returns b shifted left by n bits. Equivalent to multiplication by 2^n.
val shift_right_big_int :
Sexplib_num.Std.Big_int.big_int ->
int ->
Sexplib_num.Std.Big_int.big_intshift_right_big_int b n returns b shifted right by n bits. Equivalent to division by 2^n with the result being rounded towards minus infinity.
val shift_right_towards_zero_big_int :
Sexplib_num.Std.Big_int.big_int ->
int ->
Sexplib_num.Std.Big_int.big_intshift_right_towards_zero_big_int b n returns b shifted right by n bits. The shift is performed on the absolute value of b, and the result has the same sign as b. Equivalent to division by 2^n with the result being rounded towards zero.
val extract_big_int :
Sexplib_num.Std.Big_int.big_int ->
int ->
int ->
Sexplib_num.Std.Big_int.big_intextract_big_int bi ofs n returns a nonnegative number corresponding to bits ofs to ofs + n - 1 of the binary representation of bi. If bi is negative, a two's complement representation is used.
val sexp_of_big_int : Big_int.big_int -> Sexplib.Sexp.tval big_int_of_sexp : Sexplib.Sexp.t -> Big_int.big_int