public ECFieldElement multiplyPlusProduct(ECFieldElement b, ECFieldElement x, ECFieldElement y) { long[] ax = this.x, bx = ((SecT113FieldElement) b).x; long[] xx = ((SecT113FieldElement) x).x, yx = ((SecT113FieldElement) y).x; long[] tt = Nat128.createExt64(); SecT113Field.multiplyAddToExt(ax, bx, tt); SecT113Field.multiplyAddToExt(xx, yx, tt); long[] z = Nat128.create64(); SecT113Field.reduce(tt, z); return new SecT113FieldElement(z); }
public SecT113FieldElement(BigInteger x) { if (x == null || x.signum() < 0 || x.bitLength() > 113) { throw new IllegalArgumentException("x value invalid for SecT113FieldElement"); } this.x = SecT113Field.fromBigInteger(x); }
public ECFieldElement squarePow(int pow) { if (pow < 1) { return this; } long[] z = Nat128.create64(); SecT113Field.squareN(x, pow, z); return new SecT113FieldElement(z); }
public ECFieldElement multiply(ECFieldElement b) { long[] z = Nat128.create64(); SecT113Field.multiply(x, ((SecT113FieldElement) b).x, z); return new SecT113FieldElement(z); }
public ECFieldElement addOne() { long[] z = Nat128.create64(); SecT113Field.addOne(x, z); return new SecT113FieldElement(z); }
public ECFieldElement sqrt() { long[] z = Nat128.create64(); SecT113Field.sqrt(x, z); return new SecT113FieldElement(z); }