[−][src]Macro g2gen::g2p
g2p!() { /* proc-macro */ }
Generate a newtype of the given name and implement finite field arithmetic on it.
The generated type have implementations for Add
,
Sub
, Mul
and Div
.
There are also implementations for equality, copy and debug. Conversion from and to the base
type are implemented via the From trait.
Depending on the size of p
the underlying type is u8, u16 or u32.
Example
ⓘThis example is not tested
g2p!( GF256, // Name of the newtype 8, // The power of 2 specifying the field size 2^8 = 256 in this // case. modulus: 0b1_0001_1101, // The reduction polynomial to use, each bit is a coefficient. // Can be left out in case it is not needed. ); let a: GF256 = 255.into(); // Conversion from the base type assert_eq!(a - a, a + a); // Finite field arithmetic. assert_eq!(format("{}", a), "255_GF256");