From 059e1dfa88b76ca56fa9ae2b5f0072f53fd80e70 Mon Sep 17 00:00:00 2001 From: Thomas Piellard Date: Mon, 16 Sep 2024 19:05:09 +0200 Subject: [PATCH 1/3] fix: fixed point shifting bn254 --- ecc/bn254/fr/iop/polynomial.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ecc/bn254/fr/iop/polynomial.go b/ecc/bn254/fr/iop/polynomial.go index bdb8ed375a..802da4f0ca 100644 --- a/ecc/bn254/fr/iop/polynomial.go +++ b/ecc/bn254/fr/iop/polynomial.go @@ -170,8 +170,8 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } var g fr.Element + gen, err := fft.Generator(uint64(p.size)) if p.shift <= 5 { - gen, err := fft.Generator(uint64(p.size)) if err != nil { panic(err) } @@ -181,7 +181,7 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } bs := big.NewInt(int64(p.shift)) - g = *g.Exp(g, bs) + g = *g.Exp(gen, bs) x.Mul(&x, &g) return p.polynomial.evaluate(x) } From 397dd85c5308021e184674ca2d89a72b8abd3171 Mon Sep 17 00:00:00 2001 From: Thomas Piellard Date: Mon, 16 Sep 2024 19:09:39 +0200 Subject: [PATCH 2/3] feat: code gen --- ecc/bls12-377/fr/iop/polynomial.go | 5 +++-- ecc/bls12-381/fr/iop/polynomial.go | 5 +++-- ecc/bls24-315/fr/iop/polynomial.go | 5 +++-- ecc/bls24-317/fr/iop/polynomial.go | 5 +++-- ecc/bn254/fr/iop/polynomial.go | 1 + ecc/bw6-633/fr/iop/polynomial.go | 5 +++-- ecc/bw6-761/fr/iop/polynomial.go | 5 +++-- internal/generator/iop/template/polynomial.go.tmpl | 5 +++-- 8 files changed, 22 insertions(+), 14 deletions(-) diff --git a/ecc/bls12-377/fr/iop/polynomial.go b/ecc/bls12-377/fr/iop/polynomial.go index 9954e3cc8d..6d45547c10 100644 --- a/ecc/bls12-377/fr/iop/polynomial.go +++ b/ecc/bls12-377/fr/iop/polynomial.go @@ -170,8 +170,8 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } var g fr.Element + gen, err := fft.Generator(uint64(p.size)) if p.shift <= 5 { - gen, err := fft.Generator(uint64(p.size)) if err != nil { panic(err) } @@ -181,8 +181,9 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } bs := big.NewInt(int64(p.shift)) - g = *g.Exp(g, bs) + g = *g.Exp(gen, bs) x.Mul(&x, &g) + return p.polynomial.evaluate(x) } diff --git a/ecc/bls12-381/fr/iop/polynomial.go b/ecc/bls12-381/fr/iop/polynomial.go index 1064e65b8b..b673c032c0 100644 --- a/ecc/bls12-381/fr/iop/polynomial.go +++ b/ecc/bls12-381/fr/iop/polynomial.go @@ -170,8 +170,8 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } var g fr.Element + gen, err := fft.Generator(uint64(p.size)) if p.shift <= 5 { - gen, err := fft.Generator(uint64(p.size)) if err != nil { panic(err) } @@ -181,8 +181,9 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } bs := big.NewInt(int64(p.shift)) - g = *g.Exp(g, bs) + g = *g.Exp(gen, bs) x.Mul(&x, &g) + return p.polynomial.evaluate(x) } diff --git a/ecc/bls24-315/fr/iop/polynomial.go b/ecc/bls24-315/fr/iop/polynomial.go index 4226d08852..f778b6fdb7 100644 --- a/ecc/bls24-315/fr/iop/polynomial.go +++ b/ecc/bls24-315/fr/iop/polynomial.go @@ -170,8 +170,8 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } var g fr.Element + gen, err := fft.Generator(uint64(p.size)) if p.shift <= 5 { - gen, err := fft.Generator(uint64(p.size)) if err != nil { panic(err) } @@ -181,8 +181,9 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } bs := big.NewInt(int64(p.shift)) - g = *g.Exp(g, bs) + g = *g.Exp(gen, bs) x.Mul(&x, &g) + return p.polynomial.evaluate(x) } diff --git a/ecc/bls24-317/fr/iop/polynomial.go b/ecc/bls24-317/fr/iop/polynomial.go index 50d37556d4..bcf3908675 100644 --- a/ecc/bls24-317/fr/iop/polynomial.go +++ b/ecc/bls24-317/fr/iop/polynomial.go @@ -170,8 +170,8 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } var g fr.Element + gen, err := fft.Generator(uint64(p.size)) if p.shift <= 5 { - gen, err := fft.Generator(uint64(p.size)) if err != nil { panic(err) } @@ -181,8 +181,9 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } bs := big.NewInt(int64(p.shift)) - g = *g.Exp(g, bs) + g = *g.Exp(gen, bs) x.Mul(&x, &g) + return p.polynomial.evaluate(x) } diff --git a/ecc/bn254/fr/iop/polynomial.go b/ecc/bn254/fr/iop/polynomial.go index 802da4f0ca..bbdf0855a4 100644 --- a/ecc/bn254/fr/iop/polynomial.go +++ b/ecc/bn254/fr/iop/polynomial.go @@ -183,6 +183,7 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { bs := big.NewInt(int64(p.shift)) g = *g.Exp(gen, bs) x.Mul(&x, &g) + return p.polynomial.evaluate(x) } diff --git a/ecc/bw6-633/fr/iop/polynomial.go b/ecc/bw6-633/fr/iop/polynomial.go index 8c0c72d0c4..a9f4e359c9 100644 --- a/ecc/bw6-633/fr/iop/polynomial.go +++ b/ecc/bw6-633/fr/iop/polynomial.go @@ -170,8 +170,8 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } var g fr.Element + gen, err := fft.Generator(uint64(p.size)) if p.shift <= 5 { - gen, err := fft.Generator(uint64(p.size)) if err != nil { panic(err) } @@ -181,8 +181,9 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } bs := big.NewInt(int64(p.shift)) - g = *g.Exp(g, bs) + g = *g.Exp(gen, bs) x.Mul(&x, &g) + return p.polynomial.evaluate(x) } diff --git a/ecc/bw6-761/fr/iop/polynomial.go b/ecc/bw6-761/fr/iop/polynomial.go index 4a7c3295c7..456842a647 100644 --- a/ecc/bw6-761/fr/iop/polynomial.go +++ b/ecc/bw6-761/fr/iop/polynomial.go @@ -170,8 +170,8 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } var g fr.Element + gen, err := fft.Generator(uint64(p.size)) if p.shift <= 5 { - gen, err := fft.Generator(uint64(p.size)) if err != nil { panic(err) } @@ -181,8 +181,9 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } bs := big.NewInt(int64(p.shift)) - g = *g.Exp(g, bs) + g = *g.Exp(gen, bs) x.Mul(&x, &g) + return p.polynomial.evaluate(x) } diff --git a/internal/generator/iop/template/polynomial.go.tmpl b/internal/generator/iop/template/polynomial.go.tmpl index bb6b500886..9ef17e3923 100644 --- a/internal/generator/iop/template/polynomial.go.tmpl +++ b/internal/generator/iop/template/polynomial.go.tmpl @@ -152,8 +152,8 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } var g fr.Element + gen, err := fft.Generator(uint64(p.size)) if p.shift <= 5 { - gen, err := fft.Generator(uint64(p.size)) if err != nil { panic(err) } @@ -163,8 +163,9 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { } bs := big.NewInt(int64(p.shift)) - g = *g.Exp(g, bs) + g = *g.Exp(gen, bs) x.Mul(&x, &g) + return p.polynomial.evaluate(x) } From e502092d2dbd27cdcde0b1363c39c9810650c9d7 Mon Sep 17 00:00:00 2001 From: Thomas Piellard Date: Tue, 17 Sep 2024 09:18:06 +0200 Subject: [PATCH 3/3] fix: moved err outside of the if scope --- ecc/bls12-377/fr/iop/polynomial.go | 6 +++--- ecc/bls12-381/fr/iop/polynomial.go | 6 +++--- ecc/bls24-315/fr/iop/polynomial.go | 6 +++--- ecc/bls24-317/fr/iop/polynomial.go | 6 +++--- ecc/bn254/fr/iop/polynomial.go | 6 +++--- ecc/bw6-633/fr/iop/polynomial.go | 6 +++--- ecc/bw6-761/fr/iop/polynomial.go | 6 +++--- internal/generator/iop/template/polynomial.go.tmpl | 6 +++--- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/ecc/bls12-377/fr/iop/polynomial.go b/ecc/bls12-377/fr/iop/polynomial.go index 6d45547c10..42bcf9f270 100644 --- a/ecc/bls12-377/fr/iop/polynomial.go +++ b/ecc/bls12-377/fr/iop/polynomial.go @@ -171,10 +171,10 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { var g fr.Element gen, err := fft.Generator(uint64(p.size)) + if err != nil { + panic(err) + } if p.shift <= 5 { - if err != nil { - panic(err) - } g = smallExp(gen, p.shift) x.Mul(&x, &g) return p.polynomial.evaluate(x) diff --git a/ecc/bls12-381/fr/iop/polynomial.go b/ecc/bls12-381/fr/iop/polynomial.go index b673c032c0..a928787e41 100644 --- a/ecc/bls12-381/fr/iop/polynomial.go +++ b/ecc/bls12-381/fr/iop/polynomial.go @@ -171,10 +171,10 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { var g fr.Element gen, err := fft.Generator(uint64(p.size)) + if err != nil { + panic(err) + } if p.shift <= 5 { - if err != nil { - panic(err) - } g = smallExp(gen, p.shift) x.Mul(&x, &g) return p.polynomial.evaluate(x) diff --git a/ecc/bls24-315/fr/iop/polynomial.go b/ecc/bls24-315/fr/iop/polynomial.go index f778b6fdb7..3b1deecdf4 100644 --- a/ecc/bls24-315/fr/iop/polynomial.go +++ b/ecc/bls24-315/fr/iop/polynomial.go @@ -171,10 +171,10 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { var g fr.Element gen, err := fft.Generator(uint64(p.size)) + if err != nil { + panic(err) + } if p.shift <= 5 { - if err != nil { - panic(err) - } g = smallExp(gen, p.shift) x.Mul(&x, &g) return p.polynomial.evaluate(x) diff --git a/ecc/bls24-317/fr/iop/polynomial.go b/ecc/bls24-317/fr/iop/polynomial.go index bcf3908675..6b4988d988 100644 --- a/ecc/bls24-317/fr/iop/polynomial.go +++ b/ecc/bls24-317/fr/iop/polynomial.go @@ -171,10 +171,10 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { var g fr.Element gen, err := fft.Generator(uint64(p.size)) + if err != nil { + panic(err) + } if p.shift <= 5 { - if err != nil { - panic(err) - } g = smallExp(gen, p.shift) x.Mul(&x, &g) return p.polynomial.evaluate(x) diff --git a/ecc/bn254/fr/iop/polynomial.go b/ecc/bn254/fr/iop/polynomial.go index bbdf0855a4..d8a1b7b0ec 100644 --- a/ecc/bn254/fr/iop/polynomial.go +++ b/ecc/bn254/fr/iop/polynomial.go @@ -171,10 +171,10 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { var g fr.Element gen, err := fft.Generator(uint64(p.size)) + if err != nil { + panic(err) + } if p.shift <= 5 { - if err != nil { - panic(err) - } g = smallExp(gen, p.shift) x.Mul(&x, &g) return p.polynomial.evaluate(x) diff --git a/ecc/bw6-633/fr/iop/polynomial.go b/ecc/bw6-633/fr/iop/polynomial.go index a9f4e359c9..8be0f8ece3 100644 --- a/ecc/bw6-633/fr/iop/polynomial.go +++ b/ecc/bw6-633/fr/iop/polynomial.go @@ -171,10 +171,10 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { var g fr.Element gen, err := fft.Generator(uint64(p.size)) + if err != nil { + panic(err) + } if p.shift <= 5 { - if err != nil { - panic(err) - } g = smallExp(gen, p.shift) x.Mul(&x, &g) return p.polynomial.evaluate(x) diff --git a/ecc/bw6-761/fr/iop/polynomial.go b/ecc/bw6-761/fr/iop/polynomial.go index 456842a647..6626eb5d3f 100644 --- a/ecc/bw6-761/fr/iop/polynomial.go +++ b/ecc/bw6-761/fr/iop/polynomial.go @@ -171,10 +171,10 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { var g fr.Element gen, err := fft.Generator(uint64(p.size)) + if err != nil { + panic(err) + } if p.shift <= 5 { - if err != nil { - panic(err) - } g = smallExp(gen, p.shift) x.Mul(&x, &g) return p.polynomial.evaluate(x) diff --git a/internal/generator/iop/template/polynomial.go.tmpl b/internal/generator/iop/template/polynomial.go.tmpl index 9ef17e3923..9f5cb333e6 100644 --- a/internal/generator/iop/template/polynomial.go.tmpl +++ b/internal/generator/iop/template/polynomial.go.tmpl @@ -153,10 +153,10 @@ func (p *Polynomial) Evaluate(x fr.Element) fr.Element { var g fr.Element gen, err := fft.Generator(uint64(p.size)) + if err != nil { + panic(err) + } if p.shift <= 5 { - if err != nil { - panic(err) - } g = smallExp(gen, p.shift) x.Mul(&x, &g) return p.polynomial.evaluate(x)