Winter math

This crate contains modules with mathematical operations needed in STARK proof generation and verification.

Finite field

Finite field module implements arithmetic operations in STARK-friendly finite fields. The operation include:

Currently, there are two implementations of finite fields:

Extension fields

Currently, the library provides a generic way to create quadratic extensions of STARK fields. An extension element is defined as α + β * φ, where φ is a root of the polynomial x2 - x - 1, and α and β are base field elements.

Support for cubic extension fields is not yet available.

Polynomials

Polynomials module implements basic polynomial operations such as:

Fast Fourier transform

FFT module contains operations for computing Fast Fourier transform in a prime field (also called Number-theoretic transform). This can be used to interpolate and evaluate polynomials in O(n log n) time as long as the domain of the polynomial is a multiplicative subgroup with size which is a power of 2.

Crate features

This crate can be compiled with the following features:

Concurrent execution

When compiled with concurrent feature enabled, the following operations will be executed in multiple threads:

The number of threads can be configured via RAYON_NUM_THREADS environment variable, and usually defaults to the number of logical cores on the machine.

WebAssembly support

To compile this crate to WebAssembly, disable default features and enable the alloc feature.

License

This project is MIT licensed.