public static BigInteger ModOddInverse(BigInteger M, BigInteger X) { if (!M.TestBit(0)) { throw new ArgumentException("must be odd", "M"); } if (M.SignValue != 1) { throw new ArithmeticException("BigInteger: modulus not positive"); } if (X.SignValue < 0 || X.CompareTo(M) >= 0) { X = X.Mod(M); } int bits = M.BitLength; uint[] m = Nat.FromBigInteger(bits, M); uint[] x = Nat.FromBigInteger(bits, X); int len = m.Length; uint[] z = Nat.Create(len); if (0 == Mod.ModOddInverse(m, x, z)) { throw new ArithmeticException("BigInteger not invertible"); } return(Nat.ToBigInteger(len, z)); }
private ECFieldElement GenerateSquareInput_CarryBug() { uint[] x = Nat.Create(12); x[0] = (uint)Random.NextInt() >> 1; x[6] = 2; x[10] = 0xFFFF0000; x[11] = 0xFFFFFFFF; return(FE(Nat.ToBigInteger(12, x))); }
protected virtual BigInteger ModInverse(BigInteger x) { int bits = FieldSize; int len = (bits + 31) >> 5; uint[] p = Nat.FromBigInteger(bits, q); uint[] n = Nat.FromBigInteger(bits, x); uint[] z = Nat.Create(len); Mod.Invert(p, n, z); return(Nat.ToBigInteger(len, z)); }
protected virtual BigInteger ModInverse(BigInteger x) { int fieldSize = FieldSize; int len = fieldSize + 31 >> 5; uint[] p = Nat.FromBigInteger(fieldSize, q); uint[] array = Nat.FromBigInteger(fieldSize, x); uint[] z = Nat.Create(len); Mod.Invert(p, array, z); return(Nat.ToBigInteger(len, z)); }
protected virtual BigInteger ModInverse(BigInteger x) { var bits = this.FieldSize; var len = (bits + 31) >> 5; var p = Nat.FromBigInteger(bits, this.Q); var n = Nat.FromBigInteger(bits, x); var z = Nat.Create(len); Mod.Invert(p, n, z); return(Nat.ToBigInteger(len, z)); }
public override BigInteger ToBigInteger() { return(Nat.ToBigInteger(12, x)); }
public override BigInteger ToBigInteger() { return(Nat.ToBigInteger(17, this.x)); }
public override BigInteger ToBigInteger() => Nat.ToBigInteger(0x11, this.x);