int xRecover(int y)

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