1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
// +build !amd64 purego
package fourq
func doubleGeneric(P *pointR1) {
var Px = &P.X
var Py = &P.Y
var Pz = &P.Z
var Pta = &P.Ta
var Ptb = &P.Tb
var a = Px
var b = Py
var c = Pz
var d = Pta
var e = Ptb
var f = b
var g = a
fqAdd(e, Px, Py)
fqSqr(a, Px)
fqSqr(b, Py)
fqSqr(c, Pz)
fqAdd(c, c, c)
fqAdd(d, a, b)
fqSqr(e, e)
fqSub(e, e, d)
fqSub(f, b, a)
fqSub(g, c, f)
fqMul(Pz, f, g)
fqMul(Px, e, g)
fqMul(Py, d, f)
}
func addGeneric(P *pointR1, Q *pointR2) {
var addYX = &Q.addYX
var subYX = &Q.subYX
var z2 = &Q.z2
var dt2 = &Q.dt2
var Px = &P.X
var Py = &P.Y
var Pz = &P.Z
var Pta = &P.Ta
var Ptb = &P.Tb
var a = Px
var b = Py
var c = &Fq{}
var d = b
var e = Pta
var f = a
var g = b
var h = Ptb
fqMul(c, Pta, Ptb)
fqSub(h, b, a)
fqAdd(b, b, a)
fqMul(a, h, subYX)
fqMul(b, b, addYX)
fqSub(e, b, a)
fqAdd(h, b, a)
fqMul(d, Pz, z2)
fqMul(c, c, dt2)
fqSub(f, d, c)
fqAdd(g, d, c)
fqMul(Pz, f, g)
fqMul(Px, e, f)
fqMul(Py, g, h)
}
func mixAddGeneric(P *pointR1, Q *pointR3) {
var addYX = &Q.addYX
var subYX = &Q.subYX
var dt2 = &Q.dt2
var Px = &P.X
var Py = &P.Y
var Pz = &P.Z
var Pta = &P.Ta
var Ptb = &P.Tb
var a = Px
var b = Py
var c = &Fq{}
var d = b
var e = Pta
var f = a
var g = b
var h = Ptb
fqMul(c, Pta, Ptb)
fqSub(h, b, a)
fqAdd(b, b, a)
fqMul(a, h, subYX)
fqMul(b, b, addYX)
fqSub(e, b, a)
fqAdd(h, b, a)
fqAdd(d, Pz, Pz)
fqMul(c, c, dt2)
fqSub(f, d, c)
fqAdd(g, d, c)
fqMul(Pz, f, g)
fqMul(Px, e, f)
fqMul(Py, g, h)
}
|