Skip to main content

split_pf_to_packed_limbs

Function split_pf_to_packed_limbs 

Source
pub fn split_pf_to_packed_limbs<SF: PrimeField, TF: PrimeField32>(
    val: SF,
    num_limbs: usize,
    radix_bits: u32,
) -> Vec<TF>
Expand description

Split val into num_limbs little-endian base-2^radix_bits limbs, each mapped into TF.

Each output limb is in [0, 2^radix_bits). Pads with zero limbs if the value has fewer non-zero digits than num_limbs.

Parameter requirements

  • radix_bits ≤ injective_pack_bits::<TF>() so each limb maps injectively into TF via [PrimeField32::from_int]. If radix_bits is too large, distinct limbs can collide after reduction modulo TF::ORDER.
  • For a lossless transcript binding of arbitrary SF values, also require pf_packed_limbs_cover_order::<SF>(num_limbs, radix_bits). Deliberately truncated splits (e.g. challengers that use floor limb counts for squeeze) omit high bits by design and do not satisfy that coverage check.