Closed cyphersnake closed 1 week ago
The algorithm separated from the context is here, for your reference
https://gist.github.com/rust-play/89ae0609d30feb22d2585a6f43ccc07e
I did not take into account that PlonkWitness
is not a matrix, in general it is not hard to correct by making the indexes trickier
I will postpone this task for now due to higher priority, however, the fix will be not very large
Benchmark data is still being collected, but there doesn't seem to be any code left there, I'm going back to this task
Generally fixed, but because of cloning there is multiple rows traversal, which can be annoying. It is also possible to create result vectors more optimally.
But in order not to delay, I suggest to return to this optimization, if it becomes bottle neck
@chaosma If you don't understand this big iterator, let me know, we may need a call to write a good doc to it together. It's really not very intuitive, but I had to sacrifice understandability for optimality
@chaosma If you don't understand this big iterator, let me know, we may need a call to write a good doc to it together. It's really not very intuitive, but I had to sacrifice understandability for optimality
I think I got it. Other comments are addressed. I leave a new comment there.
Motivation Close #260
Overview
compute_G
viatree_reduce
fold_witness
fold_plonk_challenges
implementation (there are not so many items, so there is no sense to use rayon)multi_product
, analogous to itertools, but withoutClone
.try_multi_product
, analogous to itertools, but with processingResult
in Item. This allows not to finish processing when the first error occurs.folded_trace
module to control the size ofprotogalaxy::poly