29 lines
996 B
OCaml
29 lines
996 B
OCaml
(** Power function implementations for bitarrays *)
|
|
|
|
(** Naive power function. Linear complexity
|
|
@param x base, a bitarray
|
|
@param n exponent, a non-negative bitarray
|
|
*)
|
|
val pow : int list -> int list -> int list
|
|
|
|
(** Fast bitarray exponentiation function. Logarithmic complexity.
|
|
@param x base, a bitarray
|
|
@param n exponent, a non-negative bitarray
|
|
*)
|
|
val power : int list -> int list -> int list
|
|
|
|
(** Fast modular exponentiation function. Logarithmic complexity.
|
|
@param x base, a bitarray
|
|
@param n exponent, a non-negative bitarray
|
|
@param m modular base, a positive bitarray
|
|
*)
|
|
val mod_power : int list -> int list -> int list -> int list
|
|
|
|
(** Fast modular exponentiation function mod prime. Logarithmic complexity.
|
|
It makes use of the Little Fermat Theorem.
|
|
@param x base, a bitarray
|
|
@param n exponent, a non-negative bitarray
|
|
@param p prime modular base, a positive bitarray
|
|
*)
|
|
val prime_mod_power : int list -> int list -> int list -> int list
|