arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
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}