protected BigInteger modInverse(BigInteger x) {
   int bits = getFieldSize();
   int len = (bits + 31) >> 5;
   int[] p = Nat.fromBigInteger(bits, q);
   int[] n = Nat.fromBigInteger(bits, x);
   int[] z = Nat.create(len);
   Mod.invert(p, n, z);
   return Nat.toBigInteger(len, z);
 }