Adds points on the Edwards curve. Returns sum of points.
edwards([1,2], [1,2]); // [38630...2017, 20917...5802]
Source
List<int> edwards(List<int> P, List<int> Q) { int x1, y1, x2, y2, x3, y3; x1 = P[0]; y1 = P[1]; x2 = Q[0]; y2 = Q[1]; x3 = (x1 * y2 + x2 * y1) * modularInverse(1 + d * x1 * x2 * y1 * y2); y3 = (y1 * y2 + x1 * x2) * modularInverse(1 - d * x1 * x2 * y1 * y2); return [x3 % primeQ, y3 % primeQ]; }