Make.ZMavryk Protocol Environment - Arbitrary precision arithmetic.
val zero : tval one : tEuclidean division and remainder. ediv_rem a b returns a pair (q, r) such that a = b * q + r and 0 <= r < |b|. Raises Division_by_zero if b = 0.
Shifts to the left. Equivalent to a multiplication by a power of 2. The second argument must be non-negative.
Shifts to the right. This is an arithmetic shift, equivalent to a division by a power of 2 with rounding towards -oo. The second argument must be non-negative.
val to_string : t -> stringGives a human-readable, decimal string representation of the argument.
val of_string : string -> tConverts a string to an integer. An optional - prefix indicates a negative number, while a + prefix is ignored. An optional prefix 0x, 0o, or 0b (following the optional - or + prefix) indicates that the number is, represented, in hexadecimal, octal, or binary, respectively. Otherwise, base 10 is assumed. (Unlike C, a lone 0 prefix does not denote octal.) Raises an Invalid_argument exception if the string is not a syntactically correct representation of an integer.
val to_int64 : t -> int64Converts to a 64-bit integer. May raise Overflow.
val of_int64 : int64 -> tConverts from a 64-bit integer.
val to_int : t -> intConverts to a base integer. May raise an Overflow.
val of_int : int -> tConverts from a base integer.
val numbits : t -> intReturns the number of significant bits in the given number. If x is zero, numbits x returns 0. Otherwise, numbits x returns a positive integer n such that 2^{n-1} <= |x| < 2^n. Note that numbits is defined for negative arguments, and that numbits (-x) = numbits x.