Interprets bigint input
as an element of a field modulo f_bi
,
converts it to [0,f_bi)
range, and outptus a corresponding
biguint representation.
Builds fixed selectors for serialization circuit.
Helper function for limb recombination for carry specifically.
Each big carry limb is stored as 6 (not 5!) small elements. We
accept 36 small limbs, and return 6 large ones.
Helper function for limb recombination.
Helper function for limb recombination.
This constarins the multiplication part of the circuit.
Deserialize a field element of the scalar field of Vesta or Pallas given as
a sequence of 3 limbs of 88 bits.
It will deserialize into limbs of 15 bits.
Given a scalar field element of Vesta or Pallas, here the decomposition:
Returns the highest limb of the foreign field modulus. Is used by the lookups.
A convenience helper: given a list_len
and n
(arguments of
choice2
), it creates an array consisting of f(i,j)
where i,j \in [0,list_len]
such that i + j = n
, and then sums all the
elements in this array.
Decompose biguint into N
limbs of bit size B
.
Decomposes a foreign field element into N
limbs of bit size B
.
Multiplication sub-circuit of the serialization/bootstrap
procedure. Takes challenge x_{log i} and coefficient c_prev_i as input,
returns next coefficient c_i.
Full serialization circuit.