* Working "faster" inverse algo, using u128s.
* Faster inverse_2exp for large exp.
* More inverse tests.
* Make f, g u64.
* Comments.
* Unroll first two iterations.
* Fix bug and re-unroll first two iterations.
* Simplify loop.
* Refactoring and documentation.
* Clean up testing.
* Move inverse code to inversion.rs; use in GoldilocksField.
* Bench quartic Goldilocks extension too.
* cargo fmt
* Add more documentation.
* Address Jakub's comments.
* Replace `CrandallQuarticField` with a more generic `QuarticExtension`
And likewise for `CrandallQuadraticField`.
There are a few parameters which we can't automatically derive (in const Rust), so I specified them in a `AutoExtendable` trait.
This would make it fairly easy to add extension fields for `GoldilocksField` and any future fields.
* Attempt to derive 2-adicity, see Hamish's feedback
* Simplify TWO_ADICITY based on chat with Hamish
* PR feedback
* Merge AutoExtendable into Extendable (#235)
* Goldilocks field
Based on Hamish's old branch, but I updated it with a few missing things like generators.
Pulled the inversion code into a shared helper method to avoid redundancy.
Just the base field for now. We can add a quartic extension field later.
* typo
* PR feedback
* More overflowing -> wrapping
* fmt
* cleanup