geMixedSub function
Implementation
void geMixedSub(CompletedGroupElement r, ExtendedGroupElement p,
PreComputedGroupElement q) {
var t0 = FieldElement();
FeAdd(r.X, p.Y, p.X);
FeSub(r.Y, p.Y, p.X);
FeMul(r.Z, r.X, q.yMinusX);
FeMul(r.Y, r.Y, q.yPlusX);
FeMul(r.T, q.xy2d, p.T);
FeAdd(t0, p.Z, p.Z);
FeSub(r.X, r.Z, r.Y);
FeAdd(r.Y, r.Z, r.Y);
FeSub(r.Z, t0, r.T);
FeAdd(r.T, t0, r.T);
}