Skip to content

v0.4.4: Add NTT120 backend

Choose a tag to compare

@Pro7ech Pro7ech released this 28 Feb 20:32
· 947 commits to main since this release

[0.4.4] - 2026-02-28

poulpy-hal

  • Add NTT120 reference primitives: primes, types, arithmetic, NTT butterfly, mat-vec, SVP, VMP, VecZnxBig, VecZnxDft, and convolution.
  • Refactor byte size helpers: centralize scratch/layout size computations into Module.
  • Consolidate FFT64 trait implementations to eliminate duplication between ref and AVX.

poulpy-cpu-ref

  • Add NTT120Ref backend: scalar Q120 NTT over CRT of four ~30-bit primes.
    • Full OEP coverage: VecZnx, VecZnxBig, VecZnxDft, SvpPPol, VmpPMat.
  • Reorganize FFT64 sources into fft64/ submodule.
  • Add NTT120 benchmarks.

poulpy-cpu-avx

  • Add NTT120Avx backend: AVX2-accelerated NTT120.
    • AVX2 NTT butterfly with variable-shift accumulation.
    • AVX2 BBC mat-vec (NttMulBbc, x2, 2-column variants).
    • AVX2 arithmetic primitives: b_from_znx64, c_from_b (Barrett), vec_mat1col_product_bbb, b_to_znx128 (hybrid AVX2/scalar CRT).
    • AVX2 VecZnxBig accumulation and normalization.
  • Reorganize FFT64 sources into fft64/ submodule.
  • Add NTT120 benchmarks and unit tests for all AVX subroutines.

poulpy-core

  • Add NTT120 backend support across all operations: encryption, decryption, automorphisms, external products, keyswitching, and noise analysis.
  • Extend test suite to cover NTT120Ref and NTT120Avx.