172 Commits

Author SHA1 Message Date
wborgeaud
561228103f More scalar muls 2021-08-17 10:26:31 +02:00
Daniel Lubarov
f3bfd66657
Add a BoolTarget (#179)
It's just a wrapper around `Target`, which signifies that the wrapped `Target` has already been range checked. Should make it easier to audit code that expects bools.
2021-08-14 08:53:39 -07:00
wborgeaud
4433fd8048 Merge branch 'main' into optimize_arithmetic_ops 2021-08-10 09:11:08 +02:00
Daniel Lubarov
b89f4d656d
Update various dependencies (#163) 2021-08-09 10:11:42 -07:00
Daniel Lubarov
3eacd53b30
PolynomialBatchCommitment tweaks (#164)
Very minor things:
- A few renames
- Instead of having two constructors call a third constructor, just have one constructor call the other.
- Invoke FFT with the option that specifies the inputs are mostly zero, as a (minor) optimization
- Remove unused field
2021-08-09 10:11:35 -07:00
wborgeaud
4b44578ffa More optimizations 2021-08-09 12:39:37 +02:00
wborgeaud
eeb33f99ca Optimize mul_ext_algebra 2021-08-09 11:30:03 +02:00
Daniel Lubarov
2d9891983f
Add a reduce_polys_base (#149)
* Add a reduce_polys_base

Reducing the polynomials in `open_plonk` was taking ~100ms on my machine. It was converting BF polynomials to the EF early on; by doing more work in the BF we can reduce it to ~20ms.

* PR feedback
2021-08-03 13:00:50 -07:00
Daniel Lubarov
5c96e7b366 Trivial fixes from "cargo fix" 2021-08-02 10:58:03 -07:00
Daniel Lubarov
50b07f2ceb
Special cases for extension field arithmetic (#138)
We previously checked for special cases, like arithmetic on constant Targets, in `arithmetic`. We can handle those cases without actually adding an `ArithmeticGate`.

Now that `arithmetic` just calls `arithmetic_extension`, it makes more sense to check for special cases in the latter method, so it applies to both base and extension field arithmetic.

Reduces gate count from 16149 to 15689.
2021-07-30 09:03:11 -07:00
Daniel Lubarov
018fb005f8
Move stuff around (#135)
No functional changes here. The biggest change was moving certain files into new directories like `plonk` and `iop` (for things like `Challenger` that could be used in STARKs or other IOPs). I also split a few files, renames, etc, but again nothing functional, so I don't think a careful review is necessary (just a sanity check).
2021-07-29 22:00:29 -07:00
Daniel Lubarov
e382decc9f Import fixes 2021-07-29 11:45:58 -07:00
wborgeaud
8f18089aac Implement eval_unfiltered_recursively for ReducingGate 2021-07-23 18:06:14 +02:00
Nicholas Ward
0af5c3bdb8 addressed nit 2021-07-22 14:49:24 -07:00
Nicholas Ward
9c287aac79 fixed nits 2021-07-22 14:12:49 -07:00
Nicholas Ward
3612b9f05e Merge branch 'main' into order_bigint 2021-07-22 13:28:48 -07:00
Nicholas Ward
ff055b6466 cargo fmt 2021-07-22 13:27:40 -07:00
Nicholas Ward
3425bd0078 replaced some clones with refs 2021-07-22 13:26:38 -07:00
Nicholas Ward
57da32fb82 fixes to use references 2021-07-22 13:16:12 -07:00
Nicholas Ward
ffc90e902b exp_biguint test 2021-07-22 13:08:14 -07:00
Nicholas Ward
b6e74b8244 cargo fmt 2021-07-22 10:57:08 -07:00
Nicholas Ward
5d30124101 moved specific tests to prime_field_arithmetic 2021-07-22 10:56:20 -07:00
Nicholas Ward
1322b8d0d2 fixes 2021-07-21 14:59:14 -07:00
Nicholas Ward
59efe6a8fe added test_arithmetic for extension fields 2021-07-21 14:39:39 -07:00
Nicholas Ward
292a28e6e3 fixed tests 2021-07-21 14:34:01 -07:00
Nicholas Ward
b17dabefeb more fixes 2021-07-21 14:27:30 -07:00
Nicholas Ward
3e00a5819f fix: endian-ness 2021-07-21 14:12:33 -07:00
Nicholas Ward
ff56486189 compiles 2021-07-21 13:28:11 -07:00
Nicholas Ward
164bb7f5ca fixes 2021-07-21 13:23:50 -07:00
Nicholas Ward
7f92a33964 cargo fmt 2021-07-21 13:05:40 -07:00
Nicholas Ward
1dd850b0e5 fixes 2021-07-21 13:05:32 -07:00
Nicholas Ward
c5bbe9d503 fixes 2021-07-21 09:56:00 -07:00
Nicholas Ward
5062029d3f fixes 2021-07-21 09:32:18 -07:00
Daniel Lubarov
7d8bac7169
Change FFT methods to accept references (#115) 2021-07-21 08:26:41 -07:00
Nicholas Ward
906a0c00f4 Merge branch 'main' into order_bigint 2021-07-20 15:42:51 -07:00
Nicholas Ward
b103c0774f progress 2021-07-20 15:42:27 -07:00
Nicholas Ward
a74fce0196 quick fix 2021-07-19 17:11:42 -07:00
Nicholas Ward
8a51e6a323 started 2021-07-19 17:11:22 -07:00
Daniel Lubarov
35c8643681 Tiny cleanup 2021-07-18 23:31:21 -07:00
wborgeaud
461f24a57e Merge branch 'main' into more_recursive_verifier
# Conflicts:
#	src/polynomial/commitment.rs
#	src/proof.rs
2021-07-19 07:08:06 +02:00
Daniel Lubarov
77ce69dc15
Proof serialization (#93)
Using `serde_cbor` for now. It's probably far from optimal, as we have many `Vec`s which I assume it will prefix with their lengths, but it's a nice and easy method for now.
2021-07-15 07:35:12 -07:00
Daniel Lubarov
83a1430038
Fix some warnings (#94) 2021-07-15 07:34:46 -07:00
wborgeaud
5c2c01b1ab Circuit compiles 2021-07-13 15:20:14 +02:00
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