Skip to main content

ZETA_POW_BITREV

Constant ZETA_POW_BITREV 

Source
const ZETA_POW_BITREV: [Elem<BaseField>; 128];
Expand description

Since the powers of zeta used in the NTT and MultiplyNTTs are fixed, we use pre-computed tables to avoid the need to compute the exponentiations at runtime.

  • ZETA_POW_BITREV[i] = zeta^{BitRev_7(i)}
  • GAMMA[i] = zeta^{2 BitRev_7(i) + 1}

Note that the const environment here imposes some annoying conditions. Because operator overloading can’t be const, we have to do all the reductions here manually. Because for loops are forbidden in const functions, we do them manually with while loops.

The values computed here match those provided in Appendix A of FIPS 203. ZETA_POW_BITREV corresponds to the first table, and GAMMA to the second table.