[][src]Trait g2p::GaloisField

pub trait GaloisField: Add<Output = Self> + AddAssign + Sub<Output = Self> + SubAssign + Mul<Output = Self> + MulAssign + Div<Output = Self> + DivAssign + Copy + PartialEq + Eq {
    const ZERO: Self;
    const ONE: Self;
    const GENERATOR: Self;
    fn pow(self, p: usize) -> Self { ... }
}

Common trait for finite fields

All types generated by g2p! implement this trait. The trait ensures that all the expected operations of a finite field are implemented.

In addition, some often used constants like ONE and ZERO are exported, as well as the more esoteric GENERATOR.

Associated Constants

const ZERO: Self

The value 0 as a finite field constant

const ONE: Self

The value 1 as a finite field constant

const GENERATOR: Self

A generator of the multiplicative group of a finite field

The powers of this element will generate all non-zero elements of the finite field

This example is not tested
use g2p::{GaloisField, g2p};

g2p!(GF4, 2);

let g = GF4::GENERATOR;
assert_ne!(g * g, GF4::ONE);
assert_ne!(g * g * g, GF4::ONE);
assert_eq!(g * g* g *g, GF4::ONE)
Loading content...

Provided methods

fn pow(self, p: usize) -> Self

Calculate the p-th power of a value

Calculate the value of x to the power p in finite field arithmethic

Example

This example is not tested
use g2p::{GaloisField, g2p};

g2p!(GF16, 4);

let g: GF16 = 2.into();
assert_eq!(g.pow(0), GF16::ONE);
assert_eq!(g.pow(1), g);
assert_eq!(g.pow(2), 4.into());
assert_eq!(g.pow(3), 8.into());
assert_eq!(g.pow(4), 3.into());
Loading content...

Implementors

Loading content...