public static BigInteger LeastCommonMultiple(this BigInteger a, BigInteger b) { Extreme.Mathematics.BigInteger emA = ToUnsignedExtremeMathematics(a); Extreme.Mathematics.BigInteger emB = ToUnsignedExtremeMathematics(b); Extreme.Mathematics.BigInteger result = IntegerMath.LeastCommonMultiple(emA, emB); return(ToUnsignedBigInteger(result)); }
public static BigInteger ModularInverse(this BigInteger value, BigInteger modulus) { Extreme.Mathematics.BigInteger emValue = ToUnsignedExtremeMathematics(value); Extreme.Mathematics.BigInteger emModulus = ToUnsignedExtremeMathematics(modulus); Extreme.Mathematics.BigInteger result = Extreme.Mathematics.BigInteger.ModularInverse(emValue, emModulus); return(ToUnsignedBigInteger(result)); }
public static BigInteger GreatestCommonDivisor(this BigInteger a, BigInteger b) { Extreme.Mathematics.BigInteger emA = ToUnsignedExtremeMathematics(a); Extreme.Mathematics.BigInteger emB = ToUnsignedExtremeMathematics(b); Extreme.Mathematics.BigInteger result = IntegerMath.GreatestCommonDivisor(emA, emB); return(ToUnsignedBigInteger(result)); }
public static BigInteger ToUnsignedBigInteger(Extreme.Mathematics.BigInteger value) { if (value.Sign < 0) { throw new ArgumentException("Only non-negative values allowed"); } return(new BigInteger(value.ToByteArray())); }