Recovers coordinate x
by given coordinate y
.
Returns recovered x
.
xRecover(10); // 246881771...00105170855113893569705867530
Source
int xRecover(int y) { var xx = (y * y - 1) * modularInverse(d * y * y + 1); var x = xx.modPow((primeQ + 3) ~/ 8, primeQ); if ((x * x - xx) % primeQ != 0) { x = (x * I) % primeQ; } if (x % 2 != 0) { x = primeQ - x; } return x; }