Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ModPow()

static BigInteger System.Numerics.BigInteger.ModPow ( BigInteger value,
BigInteger exponent,
BigInteger modulus )
inlinestatic

Definition at line 814 of file BigInteger.cs.

815 {
816 if (exponent.Sign < 0)
817 {
818 throw new ArgumentOutOfRangeException("exponent", System.SR.ArgumentOutOfRange_MustBeNonNeg);
819 }
820 bool flag = value._bits == null;
821 bool flag2 = exponent._bits == null;
822 if (modulus._bits == null)
823 {
824 uint num = ((flag && flag2) ? BigIntegerCalculator.Pow(NumericsHelpers.Abs(value._sign), NumericsHelpers.Abs(exponent._sign), NumericsHelpers.Abs(modulus._sign)) : (flag ? BigIntegerCalculator.Pow(NumericsHelpers.Abs(value._sign), exponent._bits, NumericsHelpers.Abs(modulus._sign)) : (flag2 ? BigIntegerCalculator.Pow(value._bits, NumericsHelpers.Abs(exponent._sign), NumericsHelpers.Abs(modulus._sign)) : BigIntegerCalculator.Pow(value._bits, exponent._bits, NumericsHelpers.Abs(modulus._sign)))));
825 return (value._sign < 0 && !exponent.IsEven) ? (-1 * num) : num;
826 }
827 uint[] array = ((flag && flag2) ? BigIntegerCalculator.Pow(NumericsHelpers.Abs(value._sign), NumericsHelpers.Abs(exponent._sign), modulus._bits) : (flag ? BigIntegerCalculator.Pow(NumericsHelpers.Abs(value._sign), exponent._bits, modulus._bits) : (flag2 ? BigIntegerCalculator.Pow(value._bits, NumericsHelpers.Abs(exponent._sign), modulus._bits) : BigIntegerCalculator.Pow(value._bits, exponent._bits, modulus._bits))));
828 return new BigInteger(array, array, value._sign < 0 && !exponent.IsEven);
829 }
static string ArgumentOutOfRange_MustBeNonNeg
Definition SR.cs:24
Definition SR.cs:7
readonly uint[] _bits
Definition BigInteger.cs:20
static BigInteger Abs(BigInteger value)
static BigInteger Pow(BigInteger value, int exponent)

References System.Numerics.BigInteger.BigInteger(), System.Numerics.BigInteger._bits, System.Numerics.BigInteger._sign, System.Numerics.NumericsHelpers.Abs(), System.SR.ArgumentOutOfRange_MustBeNonNeg, System.array, System.Numerics.BigInteger.IsEven, System.Numerics.BigIntegerCalculator.Pow(), System.Numerics.BigInteger.Sign, and System.value.

Referenced by System.Security.Cryptography.DSAKeyFormatHelper.ReadDsaPrivateKey().