mirror of
https://github.com/arnaucube/gnark-plonky2-verifier.git
synced 2026-01-12 09:01:32 +01:00
multiplication extension gate (#11)
This commit is contained in:
@@ -13,6 +13,8 @@ type QuadraticExtension = [2]F
|
||||
type QEAlgebra = [2]QuadraticExtension
|
||||
type Hash = [4]F
|
||||
|
||||
const D = 2
|
||||
|
||||
var TEST_CURVE = ecc.BN254
|
||||
|
||||
func NewFieldElement(x uint64) F {
|
||||
|
||||
@@ -177,21 +177,21 @@ func (c *QuadraticExtensionAPI) Println(a QuadraticExtension) {
|
||||
}
|
||||
|
||||
func (c *QuadraticExtensionAPI) MulExtensionAlgebra(a, b QEAlgebra) QEAlgebra {
|
||||
var inner [2][][2]QuadraticExtension
|
||||
var inner_w [2][][2]QuadraticExtension
|
||||
for i := 0; i < 2; i++ {
|
||||
for j := 0; j < 2-i; j++ {
|
||||
idx := (i + j) % 2
|
||||
var inner [D][][2]QuadraticExtension
|
||||
var inner_w [D][][2]QuadraticExtension
|
||||
for i := 0; i < D; i++ {
|
||||
for j := 0; j < D-i; j++ {
|
||||
idx := (i + j) % D
|
||||
inner[idx] = append(inner[idx], [2]QuadraticExtension{a[i], b[j]})
|
||||
}
|
||||
for j := 2 - i; j < 2; j++ {
|
||||
idx := (i + j) % 2
|
||||
for j := D - i; j < D; j++ {
|
||||
idx := (i + j) % D
|
||||
inner_w[idx] = append(inner_w[idx], [2]QuadraticExtension{a[i], b[j]})
|
||||
}
|
||||
}
|
||||
|
||||
var product QEAlgebra
|
||||
for i := 0; i < 2; i++ {
|
||||
for i := 0; i < D; i++ {
|
||||
acc := c.InnerProductExtension(NewFieldElement(7), c.ZERO_QE, inner_w[i])
|
||||
product[i] = c.InnerProductExtension(ONE_F, acc, inner[i])
|
||||
}
|
||||
@@ -201,7 +201,7 @@ func (c *QuadraticExtensionAPI) MulExtensionAlgebra(a, b QEAlgebra) QEAlgebra {
|
||||
|
||||
func (c *QuadraticExtensionAPI) ScalarMulExtensionAlgebra(a QuadraticExtension, b QEAlgebra) QEAlgebra {
|
||||
var product QEAlgebra
|
||||
for i := 0; i < 2; i++ {
|
||||
for i := 0; i < D; i++ {
|
||||
product[i] = c.MulExtension(a, b[i])
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ func (c *QuadraticExtensionAPI) ScalarMulExtensionAlgebra(a QuadraticExtension,
|
||||
|
||||
func (c *QuadraticExtensionAPI) AddExtensionAlgebra(a, b QEAlgebra) QEAlgebra {
|
||||
var sum QEAlgebra
|
||||
for i := 0; i < 2; i++ {
|
||||
for i := 0; i < D; i++ {
|
||||
sum[i] = c.AddExtension(a[i], b[i])
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@ func (c *QuadraticExtensionAPI) AddExtensionAlgebra(a, b QEAlgebra) QEAlgebra {
|
||||
|
||||
func (c *QuadraticExtensionAPI) SubExtensionAlgebra(a, b QEAlgebra) QEAlgebra {
|
||||
var diff QEAlgebra
|
||||
for i := 0; i < 2; i++ {
|
||||
for i := 0; i < D; i++ {
|
||||
diff[i] = c.SubExtension(a[i], b[i])
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user