public ECFieldElement multiply(ECFieldElement b) { long[] z = Nat192.create64(); SecT163Field.multiply(x, ((SecT163FieldElement)b).x, z); return new SecT163FieldElement(z); }
public static void sqrt(long[] x, long[] z) { long[] odd = Nat192.create64(); long u0, u1; u0 = Interleave.unshuffle(x[0]); u1 = Interleave.unshuffle(x[1]); long e0 = (u0 & 0x00000000FFFFFFFFL) | (u1 << 32); odd[0] = (u0 >>> 32) | (u1 & 0xFFFFFFFF00000000L); u0 = Interleave.unshuffle(x[2]); long e1 = (u0 & 0x00000000FFFFFFFFL); odd[1] = (u0 >>> 32); multiply(odd, ROOT_Z, z); z[0] ^= e0; z[1] ^= e1; }