diff --git a/ecc/bls12-377/g1.go b/ecc/bls12-377/g1.go index cef48cffa..17ea4160f 100644 --- a/ecc/bls12-377/g1.go +++ b/ecc/bls12-377/g1.go @@ -634,6 +634,10 @@ func (p *g1JacExtended) setInfinity() *g1JacExtended { return p } +func (p *g1JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G1Affine) fromJacExtended(Q *g1JacExtended) *G1Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bls12-377/g2.go b/ecc/bls12-377/g2.go index 08154fb92..0f06e46fa 100644 --- a/ecc/bls12-377/g2.go +++ b/ecc/bls12-377/g2.go @@ -572,6 +572,10 @@ func (p *g2JacExtended) setInfinity() *g2JacExtended { return p } +func (p *g2JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G2Affine) fromJacExtended(Q *g2JacExtended) *G2Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bls12-377/multiexp_affine.go b/ecc/bls12-377/multiexp_affine.go index d8ed9f8c4..422862c77 100644 --- a/ecc/bls12-377/multiexp_affine.go +++ b/ecc/bls12-377/multiexp_affine.go @@ -226,7 +226,7 @@ func processChunkG1BatchAffine[BJE ibg1JacExtended, B ibG1Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) @@ -554,7 +554,7 @@ func processChunkG2BatchAffine[BJE ibg2JacExtended, B ibG2Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) diff --git a/ecc/bls12-377/multiexp_jacobian.go b/ecc/bls12-377/multiexp_jacobian.go index f766d8adb..0df516f5b 100644 --- a/ecc/bls12-377/multiexp_jacobian.go +++ b/ecc/bls12-377/multiexp_jacobian.go @@ -56,7 +56,7 @@ func processChunkG1Jacobian[B ibg1JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) @@ -145,7 +145,7 @@ func processChunkG2Jacobian[B ibg2JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) diff --git a/ecc/bls12-378/g1.go b/ecc/bls12-378/g1.go index 19365a3f4..a1e14cf60 100644 --- a/ecc/bls12-378/g1.go +++ b/ecc/bls12-378/g1.go @@ -634,6 +634,10 @@ func (p *g1JacExtended) setInfinity() *g1JacExtended { return p } +func (p *g1JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G1Affine) fromJacExtended(Q *g1JacExtended) *G1Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bls12-378/g2.go b/ecc/bls12-378/g2.go index d9332655b..ba6437496 100644 --- a/ecc/bls12-378/g2.go +++ b/ecc/bls12-378/g2.go @@ -572,6 +572,10 @@ func (p *g2JacExtended) setInfinity() *g2JacExtended { return p } +func (p *g2JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G2Affine) fromJacExtended(Q *g2JacExtended) *G2Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bls12-378/multiexp_affine.go b/ecc/bls12-378/multiexp_affine.go index 6fe167218..276ef2e4d 100644 --- a/ecc/bls12-378/multiexp_affine.go +++ b/ecc/bls12-378/multiexp_affine.go @@ -226,7 +226,7 @@ func processChunkG1BatchAffine[BJE ibg1JacExtended, B ibG1Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) @@ -554,7 +554,7 @@ func processChunkG2BatchAffine[BJE ibg2JacExtended, B ibG2Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) diff --git a/ecc/bls12-378/multiexp_jacobian.go b/ecc/bls12-378/multiexp_jacobian.go index 86b7dbc9a..866b5b98f 100644 --- a/ecc/bls12-378/multiexp_jacobian.go +++ b/ecc/bls12-378/multiexp_jacobian.go @@ -56,7 +56,7 @@ func processChunkG1Jacobian[B ibg1JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) @@ -147,7 +147,7 @@ func processChunkG2Jacobian[B ibg2JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) diff --git a/ecc/bls12-381/g1.go b/ecc/bls12-381/g1.go index 19e24ce9d..8eb803c3b 100644 --- a/ecc/bls12-381/g1.go +++ b/ecc/bls12-381/g1.go @@ -634,6 +634,10 @@ func (p *g1JacExtended) setInfinity() *g1JacExtended { return p } +func (p *g1JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G1Affine) fromJacExtended(Q *g1JacExtended) *G1Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bls12-381/g2.go b/ecc/bls12-381/g2.go index 563339274..798337382 100644 --- a/ecc/bls12-381/g2.go +++ b/ecc/bls12-381/g2.go @@ -573,6 +573,10 @@ func (p *g2JacExtended) setInfinity() *g2JacExtended { return p } +func (p *g2JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G2Affine) fromJacExtended(Q *g2JacExtended) *G2Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bls12-381/multiexp_affine.go b/ecc/bls12-381/multiexp_affine.go index 14a1dc29d..937a43c9d 100644 --- a/ecc/bls12-381/multiexp_affine.go +++ b/ecc/bls12-381/multiexp_affine.go @@ -226,7 +226,7 @@ func processChunkG1BatchAffine[BJE ibg1JacExtended, B ibG1Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) @@ -554,7 +554,7 @@ func processChunkG2BatchAffine[BJE ibg2JacExtended, B ibG2Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) diff --git a/ecc/bls12-381/multiexp_jacobian.go b/ecc/bls12-381/multiexp_jacobian.go index b5af1128a..1b8c0e79a 100644 --- a/ecc/bls12-381/multiexp_jacobian.go +++ b/ecc/bls12-381/multiexp_jacobian.go @@ -56,7 +56,7 @@ func processChunkG1Jacobian[B ibg1JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) @@ -145,7 +145,7 @@ func processChunkG2Jacobian[B ibg2JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) diff --git a/ecc/bls24-315/g1.go b/ecc/bls24-315/g1.go index 0195f4d09..26f0c28fe 100644 --- a/ecc/bls24-315/g1.go +++ b/ecc/bls24-315/g1.go @@ -636,6 +636,10 @@ func (p *g1JacExtended) setInfinity() *g1JacExtended { return p } +func (p *g1JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G1Affine) fromJacExtended(Q *g1JacExtended) *G1Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bls24-315/g2.go b/ecc/bls24-315/g2.go index 99937f729..4b6062206 100644 --- a/ecc/bls24-315/g2.go +++ b/ecc/bls24-315/g2.go @@ -588,6 +588,10 @@ func (p *g2JacExtended) setInfinity() *g2JacExtended { return p } +func (p *g2JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G2Affine) fromJacExtended(Q *g2JacExtended) *G2Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bls24-315/multiexp_affine.go b/ecc/bls24-315/multiexp_affine.go index 7d27c125c..65c478570 100644 --- a/ecc/bls24-315/multiexp_affine.go +++ b/ecc/bls24-315/multiexp_affine.go @@ -226,7 +226,7 @@ func processChunkG1BatchAffine[BJE ibg1JacExtended, B ibG1Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) @@ -554,7 +554,7 @@ func processChunkG2BatchAffine[BJE ibg2JacExtended, B ibG2Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) diff --git a/ecc/bls24-315/multiexp_jacobian.go b/ecc/bls24-315/multiexp_jacobian.go index c6f10cc79..c55478337 100644 --- a/ecc/bls24-315/multiexp_jacobian.go +++ b/ecc/bls24-315/multiexp_jacobian.go @@ -56,7 +56,7 @@ func processChunkG1Jacobian[B ibg1JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) @@ -145,7 +145,7 @@ func processChunkG2Jacobian[B ibg2JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) diff --git a/ecc/bls24-317/g1.go b/ecc/bls24-317/g1.go index 3a979d3b6..c6dd46698 100644 --- a/ecc/bls24-317/g1.go +++ b/ecc/bls24-317/g1.go @@ -636,6 +636,10 @@ func (p *g1JacExtended) setInfinity() *g1JacExtended { return p } +func (p *g1JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G1Affine) fromJacExtended(Q *g1JacExtended) *G1Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bls24-317/g2.go b/ecc/bls24-317/g2.go index fb5fca970..728ec59b1 100644 --- a/ecc/bls24-317/g2.go +++ b/ecc/bls24-317/g2.go @@ -588,6 +588,10 @@ func (p *g2JacExtended) setInfinity() *g2JacExtended { return p } +func (p *g2JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G2Affine) fromJacExtended(Q *g2JacExtended) *G2Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bls24-317/multiexp_affine.go b/ecc/bls24-317/multiexp_affine.go index cbbb29700..7affe92ae 100644 --- a/ecc/bls24-317/multiexp_affine.go +++ b/ecc/bls24-317/multiexp_affine.go @@ -226,7 +226,7 @@ func processChunkG1BatchAffine[BJE ibg1JacExtended, B ibG1Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) @@ -554,7 +554,7 @@ func processChunkG2BatchAffine[BJE ibg2JacExtended, B ibG2Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) diff --git a/ecc/bls24-317/multiexp_jacobian.go b/ecc/bls24-317/multiexp_jacobian.go index a1eb686cb..9eda05280 100644 --- a/ecc/bls24-317/multiexp_jacobian.go +++ b/ecc/bls24-317/multiexp_jacobian.go @@ -56,7 +56,7 @@ func processChunkG1Jacobian[B ibg1JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) @@ -145,7 +145,7 @@ func processChunkG2Jacobian[B ibg2JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) diff --git a/ecc/bn254/g1.go b/ecc/bn254/g1.go index 18470a5a4..c03823d25 100644 --- a/ecc/bn254/g1.go +++ b/ecc/bn254/g1.go @@ -605,6 +605,10 @@ func (p *g1JacExtended) setInfinity() *g1JacExtended { return p } +func (p *g1JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G1Affine) fromJacExtended(Q *g1JacExtended) *G1Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bn254/g2.go b/ecc/bn254/g2.go index 553192394..bb57fe175 100644 --- a/ecc/bn254/g2.go +++ b/ecc/bn254/g2.go @@ -577,6 +577,10 @@ func (p *g2JacExtended) setInfinity() *g2JacExtended { return p } +func (p *g2JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G2Affine) fromJacExtended(Q *g2JacExtended) *G2Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bn254/multiexp_affine.go b/ecc/bn254/multiexp_affine.go index e4b3bfced..0958526ea 100644 --- a/ecc/bn254/multiexp_affine.go +++ b/ecc/bn254/multiexp_affine.go @@ -226,7 +226,7 @@ func processChunkG1BatchAffine[BJE ibg1JacExtended, B ibG1Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) @@ -554,7 +554,7 @@ func processChunkG2BatchAffine[BJE ibg2JacExtended, B ibG2Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) diff --git a/ecc/bn254/multiexp_jacobian.go b/ecc/bn254/multiexp_jacobian.go index f9b8a901b..32f728fc0 100644 --- a/ecc/bn254/multiexp_jacobian.go +++ b/ecc/bn254/multiexp_jacobian.go @@ -56,7 +56,7 @@ func processChunkG1Jacobian[B ibg1JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) @@ -147,7 +147,7 @@ func processChunkG2Jacobian[B ibg2JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) diff --git a/ecc/bw6-633/g1.go b/ecc/bw6-633/g1.go index aad92593b..5bb8d1f9e 100644 --- a/ecc/bw6-633/g1.go +++ b/ecc/bw6-633/g1.go @@ -664,6 +664,10 @@ func (p *g1JacExtended) setInfinity() *g1JacExtended { return p } +func (p *g1JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G1Affine) fromJacExtended(Q *g1JacExtended) *G1Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bw6-633/g2.go b/ecc/bw6-633/g2.go index d42d80665..cce9c360c 100644 --- a/ecc/bw6-633/g2.go +++ b/ecc/bw6-633/g2.go @@ -574,6 +574,10 @@ func (p *g2JacExtended) setInfinity() *g2JacExtended { return p } +func (p *g2JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G2Affine) fromJacExtended(Q *g2JacExtended) *G2Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bw6-633/multiexp_affine.go b/ecc/bw6-633/multiexp_affine.go index afa4a2bf3..97342412c 100644 --- a/ecc/bw6-633/multiexp_affine.go +++ b/ecc/bw6-633/multiexp_affine.go @@ -225,7 +225,7 @@ func processChunkG1BatchAffine[BJE ibg1JacExtended, B ibG1Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) @@ -493,7 +493,7 @@ func processChunkG2BatchAffine[BJE ibg2JacExtended, B ibG2Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) diff --git a/ecc/bw6-633/multiexp_jacobian.go b/ecc/bw6-633/multiexp_jacobian.go index e8d707ec0..5f2e6906d 100644 --- a/ecc/bw6-633/multiexp_jacobian.go +++ b/ecc/bw6-633/multiexp_jacobian.go @@ -56,7 +56,7 @@ func processChunkG1Jacobian[B ibg1JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) @@ -129,7 +129,7 @@ func processChunkG2Jacobian[B ibg2JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) diff --git a/ecc/bw6-756/g1.go b/ecc/bw6-756/g1.go index 736c797d7..5cad95ab9 100644 --- a/ecc/bw6-756/g1.go +++ b/ecc/bw6-756/g1.go @@ -664,6 +664,10 @@ func (p *g1JacExtended) setInfinity() *g1JacExtended { return p } +func (p *g1JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G1Affine) fromJacExtended(Q *g1JacExtended) *G1Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bw6-756/g2.go b/ecc/bw6-756/g2.go index b20c5173f..40be72f49 100644 --- a/ecc/bw6-756/g2.go +++ b/ecc/bw6-756/g2.go @@ -567,6 +567,10 @@ func (p *g2JacExtended) setInfinity() *g2JacExtended { return p } +func (p *g2JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G2Affine) fromJacExtended(Q *g2JacExtended) *G2Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bw6-756/multiexp_affine.go b/ecc/bw6-756/multiexp_affine.go index edcf8f1b8..f2ab30472 100644 --- a/ecc/bw6-756/multiexp_affine.go +++ b/ecc/bw6-756/multiexp_affine.go @@ -225,7 +225,7 @@ func processChunkG1BatchAffine[BJE ibg1JacExtended, B ibG1Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) @@ -493,7 +493,7 @@ func processChunkG2BatchAffine[BJE ibg2JacExtended, B ibG2Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) diff --git a/ecc/bw6-756/multiexp_jacobian.go b/ecc/bw6-756/multiexp_jacobian.go index 503e51b34..13c370337 100644 --- a/ecc/bw6-756/multiexp_jacobian.go +++ b/ecc/bw6-756/multiexp_jacobian.go @@ -56,7 +56,7 @@ func processChunkG1Jacobian[B ibg1JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) @@ -129,7 +129,7 @@ func processChunkG2Jacobian[B ibg2JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) diff --git a/ecc/bw6-761/g1.go b/ecc/bw6-761/g1.go index da59bd522..3f00288a0 100644 --- a/ecc/bw6-761/g1.go +++ b/ecc/bw6-761/g1.go @@ -675,6 +675,10 @@ func (p *g1JacExtended) setInfinity() *g1JacExtended { return p } +func (p *g1JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G1Affine) fromJacExtended(Q *g1JacExtended) *G1Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bw6-761/g2.go b/ecc/bw6-761/g2.go index 00847857d..9f6ccbf13 100644 --- a/ecc/bw6-761/g2.go +++ b/ecc/bw6-761/g2.go @@ -581,6 +581,10 @@ func (p *g2JacExtended) setInfinity() *g2JacExtended { return p } +func (p *g2JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G2Affine) fromJacExtended(Q *g2JacExtended) *G2Affine { if Q.ZZ.IsZero() { diff --git a/ecc/bw6-761/multiexp_affine.go b/ecc/bw6-761/multiexp_affine.go index 38f11c5b0..8aee61aeb 100644 --- a/ecc/bw6-761/multiexp_affine.go +++ b/ecc/bw6-761/multiexp_affine.go @@ -225,7 +225,7 @@ func processChunkG1BatchAffine[BJE ibg1JacExtended, B ibG1Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) @@ -493,7 +493,7 @@ func processChunkG2BatchAffine[BJE ibg2JacExtended, B ibG2Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) diff --git a/ecc/bw6-761/multiexp_jacobian.go b/ecc/bw6-761/multiexp_jacobian.go index 2401259a3..21c669647 100644 --- a/ecc/bw6-761/multiexp_jacobian.go +++ b/ecc/bw6-761/multiexp_jacobian.go @@ -56,7 +56,7 @@ func processChunkG1Jacobian[B ibg1JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) @@ -131,7 +131,7 @@ func processChunkG2Jacobian[B ibg2JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) diff --git a/ecc/secp256k1/g1.go b/ecc/secp256k1/g1.go index eb294f23e..862e9c6ac 100644 --- a/ecc/secp256k1/g1.go +++ b/ecc/secp256k1/g1.go @@ -605,6 +605,10 @@ func (p *g1JacExtended) setInfinity() *g1JacExtended { return p } +func (p *g1JacExtended) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *G1Affine) fromJacExtended(Q *g1JacExtended) *G1Affine { if Q.ZZ.IsZero() { diff --git a/ecc/secp256k1/multiexp_affine.go b/ecc/secp256k1/multiexp_affine.go index 9cb8e2e16..b7bcb9330 100644 --- a/ecc/secp256k1/multiexp_affine.go +++ b/ecc/secp256k1/multiexp_affine.go @@ -225,7 +225,7 @@ func processChunkG1BatchAffine[BJE ibg1JacExtended, B ibG1Affine, BS bitSet, TP total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) diff --git a/ecc/secp256k1/multiexp_jacobian.go b/ecc/secp256k1/multiexp_jacobian.go index 40a34f8fa..a63c09e41 100644 --- a/ecc/secp256k1/multiexp_jacobian.go +++ b/ecc/secp256k1/multiexp_jacobian.go @@ -56,7 +56,7 @@ func processChunkG1Jacobian[B ibg1JacExtended](chunk uint64, runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) diff --git a/internal/generator/ecc/template/multiexp_affine.go.tmpl b/internal/generator/ecc/template/multiexp_affine.go.tmpl index a1c4dd80a..5ba73557f 100644 --- a/internal/generator/ecc/template/multiexp_affine.go.tmpl +++ b/internal/generator/ecc/template/multiexp_affine.go.tmpl @@ -230,7 +230,7 @@ func processChunk{{ $.UPointName }}BatchAffine[BJE ib{{ $.TJacobianExtended }},B total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { runningSum.addMixed(&buckets[k]) - if !bucketsJE[k].ZZ.IsZero() { + if !bucketsJE[k].IsZero() { runningSum.add(&bucketsJE[k]) } total.add(&runningSum) diff --git a/internal/generator/ecc/template/multiexp_jacobian.go.tmpl b/internal/generator/ecc/template/multiexp_jacobian.go.tmpl index 95dfcdeb3..1dce6fc55 100644 --- a/internal/generator/ecc/template/multiexp_jacobian.go.tmpl +++ b/internal/generator/ecc/template/multiexp_jacobian.go.tmpl @@ -58,7 +58,7 @@ func processChunk{{ $.UPointName }}Jacobian[B ib{{ $.TJacobianExtended }}](chunk runningSum.setInfinity() total.setInfinity() for k := len(buckets) - 1; k >= 0; k-- { - if !buckets[k].ZZ.IsZero() { + if !buckets[k].IsZero() { runningSum.add(&buckets[k]) } total.add(&runningSum) diff --git a/internal/generator/ecc/template/point.go.tmpl b/internal/generator/ecc/template/point.go.tmpl index 6fcddde16..d4e0fe760 100644 --- a/internal/generator/ecc/template/point.go.tmpl +++ b/internal/generator/ecc/template/point.go.tmpl @@ -1234,6 +1234,10 @@ func (p *{{ $TJacobianExtended }}) setInfinity() *{{ $TJacobianExtended }} { return p } +func (p *{{ $TJacobianExtended }}) IsZero() bool { + return p.ZZ.IsZero() +} + // fromJacExtended sets Q in affine coordinates func (p *{{ $TAffine }}) fromJacExtended (Q *{{ $TJacobianExtended }}) *{{ $TAffine }} { if Q.ZZ.IsZero() {