0.1.0
Initial placeholder version.
0.1.2
Add structs implementing GaloisField and constructors.
Add README.md and unit tests.
0.1.3
Add vector operations (no unit testing yet).
Refine documentation.
0.1.4
Add new guff::good module, to contain "reasonable" set of optimised
maths implementations.
Add optimised GF(2**4) implementation for field poly 0x13 there,
backed by two generic lookup table types (for inv and mul).
Fix bug in default implementation when calculating inverses in
GF(2**4).
Clean bill of clippy health.
0.1.5
Start using Criterion for benchmarking.
Benchmark guff::good GF(16) fields versus reference.
Add good GF(2**8) implementation (+test/benchmark)
Warning about exp not being used is OK (access via exp_entry).
Surprisingly, log/exp implementation is not faster than reference.
0.1.6
Document last run of benchmarks.
Add inv() method for good GF(2**8) (fixing a couple of bugs)
Add pow() method for good GF(2**8) (finding bug in reference pow)
Minor documentation fixes.
More benchmarking for new inv/pow methods.
0.1.7
Change field.mull() to Field::mull() since it doesn't depend on poly
For u16, u32 fields, need a new approach, since tables are too big:
* long multiplication on polynomial fragments
* bytewise modular reduction / modular shift (linear shift feedback
register)
Implement static (8k) MULL (long multiplication) table
Implement generic bytewise modular reduction table wrt poly
Implement u16 0x1002b field:
* inv via full table lookup
* mul via MULL plus field-specific modular reduction table
Benchmark new field, document same.