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);
}