finite-fields 0.5.2

Traits and types for computations on finite fields.


cargo version badge

A crate providing explicit syntax for non-stdlib finite field types.


design goals

There are two parts to the crate's design:

  • Semantics: The types should facilitate direct expression of numeric types ranging over finite fields, so that the ideas expressed in the code are clear on their face.

  • Syntax: Syntax for working with the types should be transparent and universal where reasonable. For example, Add for GF(2) should present the same interface as Add for GF(4).


The implementations are not great, but they should work as a demonstration. The crate currently uses fixed-length arrays, with the idea that types be created by the programmer using macros. In other words, it stores the factored elements (the 'digits') of a number in the field as elements of a finite-length array.


  • Binary types
  • Binary macros
  • Big refactor about here
  • Non-binary types
  • Non-binary macros
  • Rigorous tests
  • Refactor down huge macros
  • Tiny pieces

weird readings