Module arithmetic

Source
Expand description

This module provides common utilities, traits and structures for group, field and polynomial arithmetic.

Traits§

CurveAffine
This trait is the affine counterpart to Curve and is used for serialization, storage in memory, and inspection of $x$ and $y$ coordinates.
CurveExt
This trait is a common interface for dealing with elements of an elliptic curve group in a “projective” form, where that arithmetic is usually more efficient.
FftGroup
This represents an element of a group with basic operations that can be performed. This allows an FFT implementation (for example) to operate generically over either a field or elliptic curve group.
Field
This trait represents an element of a field.

Functions§

best_fft
Dispatcher
best_multiexp
Performs a multi-exponentiation operation.
bitreverse
Reverse l LSBs of bitvector n
compute_inner_product
This computes the inner product of two vectors a and b.
eval_polynomial
This evaluates a provided polynomial (in coefficient form) at point.
g_to_lagrange
Convert coefficient bases group elements to lagrange basis by inverse FFT.
kate_division
Divides polynomial a in X by X - b with no remainder.
lagrange_interpolate
Returns coefficients of an n - 1 degree polynomial given a set of n points and their evaluations. This function will panic if two values in points are the same.
log2_floor
parallelize
This utility function will parallelize an operation that is to be performed over a mutable slice.