Skip to Content
⚠️ This documentation is AI-generated, for personal use only, and is not supported or endorsed by Google.
ReferenceAlgebra & FieldsOverview

Algebra & Fields

The bottom layer of Longfellow. Every higher layer picks a concrete field, a concrete polynomial routine, or a concrete code from here. Two questions drive most decisions in this layer: which field do I encode my statement over? and which polynomial machinery does my proof system instantiation need?

Picking a field

If you do not yet know which field to pick, start with fp_p256: it matches the curve most attestation and identity systems use.

Pages in this group

  • Prime Fieldsfp_generic, the concrete instantiations, and the extension fields Fp2 / Fp24_6.
  • Big Integers (Nat) — the fixed-width big-integer layer underneath the prime fields.
  • FFT & Convolution — forward/reverse FFT, twiddle factors, Nussbaumer, CRT convolution.
  • Reed-Solomon — the RS encoder Ligero commits over. Level-3 treatment.
  • Interpolation — univariate evaluation and interpolation, used across sumcheck.
  • Elliptic Curves — P-256 and P-256k1 points and operations.
  • Binary Fields (GF(2^k)) — GF(2^128), GF(2) polynomials, and LCH14 codes.

Small helpers

A handful of headers in algebra/ are internal utilities that rarely appear in user code and do not get their own pages: hash.h, compare.h, blas.h, static_string.h, bogorng.h, utility.h, sysdep.h, limb.h, permutations.h. Read them on demand from the upstream source.

Last updated on