2024-08-02 13:02:25 +08:00
|
|
|
//go:build (amd64 && !purego && !plugin) || (arm64 && !purego)
|
|
|
|
|
|
|
|
package bn256
|
|
|
|
|
|
|
|
// gfP2 multiplication.
|
|
|
|
//
|
|
|
|
//go:noescape
|
|
|
|
func gfp2Mul(c, a, b *gfP2)
|
|
|
|
|
|
|
|
// gfP2 multiplication. c = a*b*u
|
|
|
|
//
|
|
|
|
//go:noescape
|
|
|
|
func gfp2MulU(c, a, b *gfP2)
|
|
|
|
|
|
|
|
// gfP2 multiplication. c = a*u
|
|
|
|
//
|
|
|
|
//go:noescape
|
|
|
|
func gfp2MulU1(c, a *gfP2)
|
|
|
|
|
|
|
|
// gfP2 square.
|
|
|
|
//
|
|
|
|
//go:noescape
|
|
|
|
func gfp2Square(c, a *gfP2)
|
|
|
|
|
|
|
|
// gfP2 square and mult u.
|
|
|
|
//
|
|
|
|
//go:noescape
|
|
|
|
func gfp2SquareU(c, a *gfP2)
|
|
|
|
|
|
|
|
// Point doubling. Sets res = in + in. in can be the point at infinity.
|
|
|
|
//
|
|
|
|
//go:noescape
|
|
|
|
func curvePointDoubleComplete(c, a *curvePoint)
|
|
|
|
|
|
|
|
// Point addition. Sets res = in1 + in2. in1 can be same as in2, also can be at infinity.
|
|
|
|
//
|
|
|
|
//go:noescape
|
|
|
|
func curvePointAddComplete(c, a, b *curvePoint)
|
|
|
|
|