Library
Module
Module type
Parameter
Class
Class type
Base module signature for a finite field
val order : Z.t
The order of the finite field
check_bytes bs
returns true
if bs
is a correct byte representation of a field element
val zero : t
The neutral element for the addition
val one : t
The neutral element for the multiplication
val is_zero : t -> bool
is_zero x
returns true
if x
is the neutral element for the addition
val is_one : t -> bool
is_one x
returns true
if x
is the neutral element for the multiplication
val random : ?state:Stdlib.Random.State.t -> unit -> t
Use carefully! random ()
returns a random element of the field. A state for the PRNG can be given to initialize the PRNG in the requested state. If no state is given, no initialisation is performed
val non_null_random : ?state:Stdlib.Random.State.t -> unit -> t
Use carefully! non_null_random ()
returns a non null random element of the field. A state for the PRNG can be given to initialize the PRNG in the requested state. If no state is given, no initialisation is performed
negate x
returns -x mod order
. Equivalently, negate x
returns the unique y
such that x + y mod order = 0
val of_bytes_exn : Stdlib.Bytes.t -> t
From a predefined bytes representation, construct a value t. It is not required that to_bytes of_bytes_exn t = t. Raise Not_in_field
if the bytes do not represent an element in the field.
val of_bytes_opt : Stdlib.Bytes.t -> t option
From a predefined bytes representation, construct a value t. It is not required that to_bytes (Option.get (of_bytes_opt t)) = t. By default, little endian encoding is used and the given element is modulo the prime order
val to_bytes : t -> Stdlib.Bytes.t
Convert the value t to a bytes representation which can be used for hashing for instance. It is not required that to_bytes of_bytes_exn t = t. By default, little endian encoding is used, and length of the resulting bytes may vary depending on the order.