## Expand description

## §g2poly

A small library to handle polynomials of degree < 64 over the finite field GF(2).

The main motivation for this library is generating finite fields of the form GF(2^p). Elements of GF(2^p) can be expressed as polynomials over GF(2) with degree < p. These finite fields are used in cryptographic algorithms as well as error detecting / correcting codes.

## §Example

```
use g2poly;
let a = g2poly::G2Poly(0b10011);
assert_eq!(format!("{}", a), "G2Poly { x^4 + x + 1 }");
let b = g2poly::G2Poly(0b1);
assert_eq!(a + b, g2poly::G2Poly(0b10010));
// Since products could overflow in u64, the product is defined as a u128
assert_eq!(a * a, g2poly::G2PolyProd(0b100000101));
// This can be reduced using another polynomial
let s = a * a % g2poly::G2Poly(0b1000000);
assert_eq!(s, g2poly::G2Poly(0b101));
```

## Structs§

- Main type exported by this library
- The result of multiplying two
`G2Poly`

## Functions§

- Calculate the greatest common divisor with Bézout coefficients
- Calculate the greatest common divisor of
`a`

and`b`