public static int subDWordAt(int len, long x, int[] z, int zOff, int zPos) { // assert zPos <= (len - 2); long c = (z[zOff + zPos] & M) - (x & M); z[zOff + zPos] = (int)c; c >>= 32; c += (z[zOff + zPos + 1] & M) - (x >>> 32); z[zOff + zPos + 1] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, zOff, zPos + 2); }
public static int sub33At(int len, int x, int[] z, int zOff, int zPos) { // assert zPos <= (len - 2); long c = (z[zOff + zPos] & M) - (x & M); z[zOff + zPos] = (int)c; c >>= 32; c += (z[zOff + zPos + 1] & M) - 1; z[zOff + zPos + 1] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, zOff, zPos + 2); }
public static int subDWordAt(int len, long x, int[] z, int zOff, int zPos) { // assert zPos <= (len - 2); long c = (z[zOff + zPos] & M) - (x & M); z[zOff + zPos] = (int)c; c >>= 32; c += (z[zOff + zPos + 1] & M) - (x >>> 32); z[zOff + zPos + 1] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, zOff, zPos + 2); }
public static int sub33From(int len, int x, int[] z) { long c = (z[0] & M) - (x & M); z[0] = (int)c; c >>= 32; c += (z[1] & M) - 1; z[1] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, 2); }
public static int subWordFrom(int len, int x, int[] z, int zOff) { long c = (z[zOff + 0] & M) - (x & M); z[zOff + 0] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, zOff, 1); }
public static int sub33At(int len, int x, int[] z, int zOff, int zPos) { // assert zPos <= (len - 2); long c = (z[zOff + zPos] & M) - (x & M); z[zOff + zPos] = (int)c; c >>= 32; c += (z[zOff + zPos + 1] & M) - 1; z[zOff + zPos + 1] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, zOff, zPos + 2); }
public static int subDWordFrom(int len, long x, int[] z, int zOff) { long c = (z[zOff + 0] & M) - (x & M); z[zOff + 0] = (int)c; c >>= 32; c += (z[zOff + 1] & M) - (x >>> 32); z[zOff + 1] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, zOff, 2); }
public static int subWordFrom(int len, int x, int[] z) { long c = (z[0] & M) - (x & M); z[0] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, 1); }
public static int subWordAt(int len, int x, int[] z, int zPos) { // assert zPos <= (len - 1); long c = (z[zPos] & M) - (x & M); z[zPos] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, zPos + 1); }
public static int subWordFrom(int len, int x, int[] z) { long c = (z[0] & M) - (x & M); z[0] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, 1); }
public static int subWordFrom(int len, int x, int[] z, int zOff) { long c = (z[zOff + 0] & M) - (x & M); z[zOff + 0] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, zOff, 1); }
public static int sub33From(int len, int x, int[] z) { long c = (z[0] & M) - (x & M); z[0] = (int)c; c >>= 32; c += (z[1] & M) - 1; z[1] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, 2); }
public static int subWordAt(int len, int x, int[] z, int zOff, int zPos) { // assert zPos <= (len - 1); long c = (z[zOff + zPos] & M) - (x & M); z[zOff + zPos] = (int)c; c >>= 32; return c == 0 ? 0 : decAt(len, z, zOff, zPos + 1); }
public static void subtractExt(int[] xx, int[] yy, int[] zz) { int c = Nat.sub(12, xx, yy, zz); if (c != 0) { if (Nat.subFrom(PExtInv.length, PExtInv, zz) != 0) { Nat.decAt(12, zz, PExtInv.length); } } }
public static void subtractExt(int[] xx, int[] yy, int[] zz) { int c = Nat.sub(14, xx, yy, zz); if (c != 0) { if (Nat.subFrom(PExtInv.length, PExtInv, zz) != 0) { Nat.decAt(14, zz, PExtInv.length); } } }
public static void subtractExt(int[] xx, int[] yy, int[] zz) { int c = Nat.sub(10, xx, yy, zz); if (c != 0) { if (Nat.subFrom(PExtInv.length, PExtInv, zz) != 0) { Nat.decAt(10, zz, PExtInv.length); } } }
public static void subtractExt(int[] xx, int[] yy, int[] zz) { int c = Nat.sub(12, xx, yy, zz); if (c != 0) { if (Nat.subFrom(PExtInv.length, PExtInv, zz) != 0) { Nat.decAt(12, zz, PExtInv.length); } } }
public static void subtractExt(int[] xx, int[] yy, int[] zz) { int c = Nat.sub(12, xx, yy, zz); if (c != 0) { if (Nat.subFrom(PExtInv.length, PExtInv, zz) != 0) { Nat.decAt(12, zz, PExtInv.length); } } }
public static void subtractExt(int[] xx, int[] yy, int[] zz) { int c = Nat.sub(12, xx, yy, zz); if (c != 0) { if (Nat.subFrom(PExtInv.length, PExtInv, zz) != 0) { Nat.decAt(12, zz, PExtInv.length); } } }
public static void subtractExt(int[] xx, int[] yy, int[] zz) { int c = Nat.sub(24, xx, yy, zz); if (c != 0) { if (Nat.subFrom(PExtInv.length, PExtInv, zz) != 0) { Nat.decAt(24, zz, PExtInv.length); } } }