129 Commits

Author SHA1 Message Date
Nicholas Ward
8de59c2a84 cargo fmt 2021-06-30 21:59:18 -07:00
Hamish Ivey-Law
574a3d4847
FFT improvements (#81)
* Use built-in `reverse_bits`; remove duplicate `reverse_index_bits`.

* Reduce precomputation time/space complexity from quadratic to linear.

* Several working cache-friendly FFTs.

* Fix to allow FFT of constant polynomial.

* Simplify FFT strategy choice.

* Add PrimeField and CHARACTERISTIC properties to Fields.

* Add faster method for inverse of 2^m.

* Pre-compute some of the roots; tidy up loop iteration.

* Precomputation for both FFT variants.

* Refactor precomputation; add optional parameters; rename some things.

* Unrolled version with zero tail.

* Iterative version of Unrolled precomputation.

* Test zero tail algo.

* Restore default degree.

* Address comments from @dlubarov and @wborgeaud.
2021-07-01 14:55:41 +10:00
wborgeaud
a017e79f65 Merge branch 'main' into add_routed_wires
# Conflicts:
#	src/gadgets/arithmetic.rs
2021-06-30 08:30:10 +02:00
wborgeaud
42db0a31c1 Clippy 2021-06-25 16:49:29 +02:00
wborgeaud
fc4738869d Rearrange files 2021-06-25 16:45:02 +02:00
wborgeaud
8602ae1549 Typo 2021-06-25 16:35:58 +02:00
wborgeaud
b62c2e6990 Supplant ArithmeticGate with ArithmeticExtensionGate 2021-06-25 16:31:10 +02:00
wborgeaud
beadce72fc Add ZeroOutGenerator 2021-06-25 15:11:49 +02:00
wborgeaud
e195fe58ed Merge branch 'main' into add_routed_wires 2021-06-25 13:53:30 +02:00
wborgeaud
6605ca9d89 Add comment for coset_shift 2021-06-24 21:05:59 +02:00
wborgeaud
8aa9c7b816 Merge branch 'main' into gate_tree
# Conflicts:
#	src/circuit_data.rs
#	src/witness.rs
2021-06-24 20:58:17 +02:00
wborgeaud
b0550979a6 Optimize evaluation of Z_H on coset. 2021-06-24 15:42:29 +02:00
wborgeaud
31f4eee367 Fix bug with shifted x 2021-06-24 14:11:47 +02:00
wborgeaud
ef7561fc84 Merge branch 'main' into permutation_argument
# Conflicts:
#	src/circuit_builder.rs
#	src/circuit_data.rs
#	src/polynomial/commitment.rs
#	src/prover.rs
#	src/witness.rs
2021-06-24 10:51:18 +02:00
Daniel Lubarov
ac1179255a
Delete coset [I]FFT methods (#72)
I think they had a mistake, and in any case we have a similar method in `polynomial.rs` now which has tests.
2021-06-23 15:45:48 -07:00
wborgeaud
ff74887ab9 Use with_capacity when length is known 2021-06-23 18:06:53 +02:00
wborgeaud
8796c73362 Change MulExtensionGate to ArithmeticExtensionGate and change gadgets to use the new wires in this gate. 2021-06-23 18:04:43 +02:00
wborgeaud
cfa3d3a660 Added comments 2021-06-22 15:34:50 +02:00
wborgeaud
37171505c7 Remove useless interpolation from open_plonk 2021-06-18 12:49:40 +02:00
wborgeaud
a4c86a6b08 lagrange.rs -> interpolation.rs 2021-06-18 11:44:06 +02:00
wborgeaud
4f8ef2e178 Optimize some polynomial operations 2021-06-18 11:10:33 +02:00
wborgeaud
ad5c18b499 Comments and Clippy 2021-06-17 16:23:15 +02:00
wborgeaud
1b99f8272f Merge branch 'main' into permutation_argument 2021-06-17 14:00:44 +02:00
wborgeaud
a6acd14dfa Minor rewrites and optimizations 2021-06-16 17:43:41 +02:00
wborgeaud
5edaab59e6 Renaming + Clippy 2021-06-16 11:37:07 +02:00
wborgeaud
89c6a6b4e6 Use repeated_frobenius in ExtensionTarget::frobenius. 2021-06-15 17:34:37 +02:00
wborgeaud
b44a01c975 Merge main 2021-06-15 09:20:00 +02:00
wborgeaud
fa229d9a27 Add comments on possible optimizations 2021-06-14 13:41:44 +02:00
wborgeaud
6132b2ad73 Use mul_extension in scalar_mul_ext since mul_extension now uses a single gate. 2021-06-14 13:30:14 +02:00
wborgeaud
19b47b5251 Clippy 2021-06-14 10:33:38 +02:00
wborgeaud
445ea3771d Remove Frobeniable trait 2021-06-14 10:28:15 +02:00
wborgeaud
5200d70cf0 Add interpolation gadgets 2021-06-11 16:22:29 +02:00
wborgeaud
4b1f368e89 Use Frobenius optimization in the circuit 2021-06-11 14:16:40 +02:00
wborgeaud
bc7f67c316 In-circuit repeated frobenius 2021-06-11 13:58:05 +02:00
wborgeaud
20741cfb4a Implement out-of-circuit repeated_frobenius using hardcoded constants 2021-06-11 13:45:51 +02:00
wborgeaud
1ebeab2c3a Implement Frobenius optimization discussed in #61 comments to avoid calling the Frobenius for every wires. 2021-06-11 10:27:03 +02:00
wborgeaud
4106a47ded Test rotate gadget 2021-06-11 09:59:55 +02:00
wborgeaud
2cd99ff84c Change ExtensionTarget::frobenius to use 4 constants instead of 1. 2021-06-11 09:35:22 +02:00
Daniel Lubarov
f929f94626
Have rustfmt group imports (#60)
* Have rustfmt group imports

See `rustfmt.toml`; the rest is automated changes.

* fmt
2021-06-10 14:10:35 -07:00
wborgeaud
dea6db00ac Rotation gadgets 2021-06-10 17:45:45 +02:00
wborgeaud
bb551092a0 Remove mul_extension_naive 2021-06-09 21:12:15 +02:00
wborgeaud
3db6e38d26 Convert some mul_extension_naive to mul_extension 2021-06-09 18:04:58 +02:00
wborgeaud
9adf5bb43f Use ExtensionAlgebra + new CircuitBuilder::mul_extension 2021-06-09 10:51:50 +02:00
wborgeaud
7f63276623 Merge branch 'main' into recursive_verifier 2021-06-09 10:04:45 +02:00
wborgeaud
f965211435 Use Daniel's fmt 2021-06-08 19:36:30 +02:00
wborgeaud
e1e4bb36db Started query round 2021-06-08 19:32:23 +02:00
Daniel Lubarov
db1ef913e0 Remove quartic_quartic 2021-06-08 10:08:17 -07:00
wborgeaud
c6c71ef574 Working fri_combine_initial 2021-06-08 14:56:49 +02:00
wborgeaud
47da1ef68c Add MLE tests for algebras 2021-06-08 14:01:47 +02:00
wborgeaud
19a38682ab Minor tweaks 2021-06-08 12:49:45 +02:00