module Big_int:任意精度整数の演算sig
..end
多倍長整数(big_int
型)は任意の大きさの符号付き整数です。
type
big_int
val zero_big_int : big_int
0
。val unit_big_int : big_int
1
。val minus_big_int : big_int -> big_int
val abs_big_int : big_int -> big_int
val add_big_int : big_int -> big_int -> big_int
val succ_big_int : big_int -> big_int
val add_int_big_int : int -> big_int -> big_int
val sub_big_int : big_int -> big_int -> big_int
val pred_big_int : big_int -> big_int
val mult_big_int : big_int -> big_int -> big_int
val mult_int_big_int : int -> big_int -> big_int
val square_big_int : big_int -> big_int
val sqrt_big_int : big_int -> big_int
sqrt_big_int a
は a
の整数の平方根、すなわち、
r * r <= a
なる最大の r
を返します。
a
が負の場合には Invalid_argument
例外が発生します。val quomod_big_int : big_int -> big_int -> big_int * big_int
(q, r) = quomod_big_int a b
とすると、 a = q * b + r
かつ 0 <= r < |b|
となります。除数が 0 の場合には Division_by_zero
例外が発生します。val div_big_int : big_int -> big_int -> big_int
quomod_big_int
の戻り値の最初の要素 q
です。val mod_big_int : big_int -> big_int -> big_int
quomod_big_int
の戻り値の二番目の要素 r
です。val gcd_big_int : big_int -> big_int -> big_int
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
a
の第二引数 b
乗を表す多倍長整数を返します。
関数ごとに a
、 b
が通常の整数か多倍長整数かは異なります。
b
が負の場合には Invalid_argument
例外が発生します。val sign_big_int : big_int -> int
0
を返し、正であれば 1
を返し、負であれば
-1
を返します。val compare_big_int : big_int -> big_int -> int
compare_big_int a b
は a
と b
が等しければ 0
を返し、
a
が b
よりも大きければ 1
を返し、 a
が b
より小さければ -1
を返します。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
val max_big_int : big_int -> big_int -> big_int
val min_big_int : big_int -> big_int -> big_int
val num_digits_big_int : big_int -> int
val string_of_big_int : big_int -> string
val big_int_of_string : string -> big_int
-
または +
の符号から始まり、それに十進数字がひとつ以上続きます。val big_int_of_int : int -> big_int
val is_int_big_int : big_int -> bool
int
型の通常の整数で精度を失わずに表現できる程度に小さいか検査します。
32 ビットプラットフォームでは
is_int_big_int a
は a
が -230 から 230 - 1 の範囲にある場合、かつその場合に限り true
を返し、
64 ビットプラットフォームでは a
が -262 から 262 - 1 の範囲にある場合、かつその場合に限り true
を返します。val int_of_big_int : big_int -> int
int
型の通常の整数に変換します。
引数が通常の整数で表現できない場合には Failure "int_of_big_int"
例外が発生します。val big_int_of_int32 : int32 -> big_int
val big_int_of_nativeint : nativeint -> big_int
val big_int_of_int64 : int64 -> big_int
val int32_of_big_int : big_int -> int32
Failure
例外が発生します。val nativeint_of_big_int : big_int -> nativeint
val int64_of_big_int : big_int -> int64
Failure
例外が発生します。val float_of_big_int : big_int -> float
val and_big_int : big_int -> big_int -> big_int
val or_big_int : big_int -> big_int -> big_int
val xor_big_int : big_int -> big_int -> big_int
val shift_left_big_int : big_int -> int -> big_int
shift_left_big_int b n
は b
を左に n
ピットシフトしたものを返します。
これは 2^n
を掛けることと等価です。val shift_right_big_int : big_int -> int -> big_int
shift_right_big_int b n
は b
を右に n
ビットシフトしたものを返します。
これは 2^n
で割り、結果を負の無限大に向かって丸めることと等価です。val shift_right_towards_zero_big_int : big_int -> int -> big_int
shift_right_towards_zero_big_int b n
は
b
を右に n
ビットシフトしたものを返します。
シフト処理は b
の絶対値に対して行なわれ、戻り値は b
と同じ符号になります。
これは、 2^n
で割り、結果を 0 に向かって丸めることと等価です。val extract_big_int : big_int -> int -> int -> big_int
extract_big_int bi ofs n
は多倍長整数 bi
の二進表現の ofs
ビット目から
ofs + n - 1
ビット目に対応する非負の数値を返します。
bi
が負の場合、二の補数表現が使われます。