gnark-plonky2-verifier/plonky2_verifier/utils.go
plonky2_verifier/utils.goRaw
1package plonky2_verifier
2
3import (
4 "fmt"
5 . "gnark-ed25519/field"
6 "math/bits"
7)
8
9func reduceWithPowers(qe *QuadraticExtensionAPI, terms []QuadraticExtension, scalar QuadraticExtension) QuadraticExtension {
10 sum := qe.ZERO_QE
11
12 for i := len(terms) - 1; i >= 0; i-- {
13 sum = qe.AddExtension(
14 qe.MulExtension(
15 sum,
16 scalar,
17 ),
18 terms[i],
19 )
20 }
21
22 return sum
23}
24
25// Computes `log_2(n)`, panicking if `n` is not a power of two.
26func log2Strict(n uint) int {
27 res := bits.TrailingZeros(n)
28 if n>>res != 1 {
29 panic(fmt.Sprintf("Not a power of two: %d", n))
30 }
31 return res
32}