Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Bls12_381.FrSourceinclude Ff_sig.PRIMEinclude Ff_sig.BASEMinimal number of bytes required to encode a value of the field
is_one x returns true if x is the neutral element for the multiplication
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.
To create a value of type Random.State.t, you can use Random.State.make [|42|].
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.
To create a value of type Random.State.t, you can use Random.State.make [|42|].
negate x returns -x mod order. Equivalently, negate x returns the unique y such that x + y mod order = 0
inverse_exn x returns x^-1 mod order if x is not 0, else raise Division_by_zero. Equivalently, inverse_exn x returns the unique y such that x * y mod order = 1
inverse_opt x returns x^-1 mod order as an option if x is not 0, else returns None. Equivalently, inverse_opt x returns the unique y such that x * y mod order = 1
div_exn a b returns a * b^-1. Raise Division_by_zero if b = zero. Equivalently, div_exn returns the unique y such that b * y mod order = a
div_opt a b returns a * b^-1 as an option. Return None if b = zero. Equivalently, div_opt returns the unique y such that b * y mod order = a
Construct a value of type t from the bytes representation in little endian of the field element. For non prime fields, the encoding starts with the coefficient of the constant monomial. Raise Not_in_field if the bytes do not represent an element in the field.
From a predefined little endian bytes representation, construct a value of type t. The same representation than of_bytes_exn is used. Return None if the bytes do not represent an element in the field.
Convert the value t to a bytes representation. The number of bytes is size_in_bytes and the encoding must be in little endian. For instance, the encoding of 1 in prime fields is always a bytes sequence of size size_in_bytes starting with the byte 0b00000001.
For non prime fields, the encoding starts with the coefficient of the constant monomial. For instance, an element a + b * X in GF(p^2) will be encoded as to_bytes a || to_bytes b where || is the concatenation of bytes
Create a value of type t from a predefined string representation. It is not required that to_string (of_string t) = t. By default, decimal representation of the number is used, modulo the order of the field
String representation of a value of type t. It is not required that to_string (of_string t) = t. By default, decimal representation of the number is used.
of_z x builds an element of type t from the Zarith element x. mod p is applied if x >= p
to_z x builds a Zarith element, using the decimal representation. Arithmetic on the result can be done using the modular functions on integers
Returns the Legendre symbol of the parameter. Note it does not work for p = 2
is_quadratic_residue x returns true if x is a quadratic residue i.e. if there exists n such that n^2 mod p = x
Actual number of bytes allocated for a value of type t
Check if a point, represented as a byte array, is in the field *
add_inplace res a b is the same than add but writes the result in res. No allocation happens.
sub_inplace res a b is the same than sub but writes the result in res. No allocation happens.
mul_inplace res a b is the same than sub but writes the result in res. No allocation happens.
inverse_exn_inplace res a is the same than inverse_exn but writes the result in res. No allocation happens.
double_inplace res a is the same than double but writes the result in res. No allocation happens.
square_inplace res a is the same than square but writes the result in res. No allocation happens.
negate_inplace res a is the same than negate but writes the result in res. No allocation happens.
add_bulk xs returns the sum of the elements of xs by performing only one allocation for the output. This method is recommended to save the allocation overhead of using n times add.
mul_bulk xs returns the product of the elements of xs by performing only one allocation for the output. This method is recommended to save the allocation overhead of using n times mul.
compare a b compares the elements a and b based on their bytes representation
inner_product_exn a b returns the inner product of a and b, i.e. sum(a_i * b_i). Raise Invalid_argument if the arguments are not of the same length. Only two allocations are used.
Same than inner_product_exn but returns an option instead of raising an exception.