github.com/consensys/gnark-crypto@v0.14.0/internal/generator/tower/template/fq12over6over2/amd64.fq2.go.tmpl (about)

     1  
     2  //go:noescape
     3  func addE2(res,x,y *E2)
     4  
     5  //go:noescape
     6  func subE2(res,x,y *E2)
     7  
     8  //go:noescape
     9  func doubleE2(res,x *E2)
    10  
    11  //go:noescape
    12  func negE2(res,x *E2)
    13  
    14  {{if eq .Name "bn254"}}
    15  
    16  //go:noescape
    17  func mulNonResE2(res, x *E2)
    18  
    19  //go:noescape
    20  func squareAdxE2(res, x *E2)
    21  
    22  //go:noescape
    23  func mulAdxE2(res, x, y *E2)
    24  
    25  // MulByNonResidue multiplies a E2 by (9,1)
    26  func (z *E2) MulByNonResidue(x *E2) *E2 {
    27  	mulNonResE2(z, x)
    28  	return z
    29  }
    30  
    31  // Mul sets z to the E2-product of x,y, returns z
    32  func (z *E2) Mul(x, y *E2) *E2 {
    33  	mulAdxE2(z, x, y)
    34  	return z
    35  }
    36  
    37  // Square sets z to the E2-product of x,x, returns z
    38  func (z *E2) Square(x *E2) *E2 {
    39  	squareAdxE2(z, x)
    40  	return z
    41  }
    42  
    43  {{else if eq .Name "bls12-381"}}
    44  
    45  //go:noescape
    46  func mulNonResE2(res, x *E2)
    47  
    48  //go:noescape
    49  func squareAdxE2(res, x *E2)
    50  
    51  //go:noescape
    52  func mulAdxE2(z, x, y *E2)
    53  
    54  // Mul sets z to the E2-product of x,y, returns z
    55  func (z *E2) Mul(x, y *E2) *E2 {
    56  	mulAdxE2(z, x, y)
    57  	return z
    58  }
    59  
    60  
    61  // MulByNonResidue multiplies a E2 by (1,1)
    62  func (z *E2) MulByNonResidue(x *E2) *E2 {
    63  	mulNonResE2(z, x)
    64  	return z
    65  }
    66  // Square sets z to the E2-product of x,x, returns z
    67  func (z *E2) Square(x *E2) *E2 {
    68  	squareAdxE2(z, x)
    69  	return z
    70  }
    71  
    72  {{end}}