pub trait Field: Sized {
    type Elem: Default + Clone + Copy + PartialEq + Debug;

    const ORDER: usize;

    fn add(a: Self::Elem, b: Self::Elem) -> Self::Elem;
    fn mul(a: Self::Elem, b: Self::Elem) -> Self::Elem;
    fn div(a: Self::Elem, b: Self::Elem) -> Self::Elem;
    fn exp(a: Self::Elem, n: usize) -> Self::Elem;
    fn zero() -> Self::Elem;
    fn one() -> Self::Elem;
    fn nth_internal(n: usize) -> Self::Elem;

    fn nth(n: usize) -> Self::Elem { ... }
    fn mul_slice(elem: Self::Elem, input: &[Self::Elem], out: &mut [Self::Elem]) { ... }
    fn mul_slice_add(
        elem: Self::Elem,
        input: &[Self::Elem],
        out: &mut [Self::Elem]
    ) { ... } }
Expand description

A finite field to perform encoding over.

Required Associated Types

The representational type of the field.

Required Associated Constants

The order of the field. This is a limit on the number of shards in an encoding.

Required Methods

Add two elements together.

Multiply two elements together.

Divide a by b. Panics is b is zero.

Raise a to the n’th power.

The “zero” element or additive identity.

The “one” element or multiplicative identity.

Provided Methods

Yield the nth element of the field. Panics if n >= ORDER. Assignment is arbitrary but must be unique to n.

Multiply a slice of elements by another. Writes into the output slice.

Panics

Panics if the output slice does not have equal length to the input.

Multiply a slice of elements by another, adding each result to the corresponding value in out.

Panics

Panics if the output slice does not have equal length to the input.

Implementors