The source code is organized by subdirectories:

** include**: Headers describing
the official API. Headers in other places are for internal use
only.

** arith**: Finite fields: modular
arithmetic, polynomial rings, and polynomial rings modulo a
polynomial. Finite fields of low characteristic are
unsupported.

** ecc**: Elliptic curve
generation, elliptic curve groups and pairings. One source file
is dedicated to each type of pairing, containing specialized
optimizations. Some of the code requires arbitrary precision
complex numbers, which also live here but should be moved
elsewhere one day.

** misc**: Dynamic arrays, symbol
tables, benchmarking, logging, debugging, other utilities.

** gen**: Programs that generate
pairing parameters and list Hilbert polynomials. These were
used to prepare the samples in the

`param`

directory.** example**: Example programs
showing how to use the library.

** guru**: Tests, experimental
code.