109 references to BigIntegerCalculator
System.Runtime.Numerics (109)
System\Number.BigInteger.cs (20)
398
double digitRatio = 0.10381025297 * 32.0 /
BigIntegerCalculator
.BitsPerLimb; // log_{2^BitsPerLimb}(10)
430
double digitRatio = 0.10381025297 * 32.0 /
BigIntegerCalculator
.BitsPerLimb;
435
leading = leading.Slice(0,
BigIntegerCalculator
.ActualLength(leading));
452
base1E9 = base1E9.Slice(0,
BigIntegerCalculator
.ActualLength(base1E9));
470
double digitRatio = 0.10381025297 * 32.0 /
BigIntegerCalculator
.BitsPerLimb;
476
ReadOnlySpan<nuint> buffer2 = buffer.Slice(0,
BigIntegerCalculator
.ActualLength(buffer));
478
BigIntegerCalculator
.Multiply(buffer2, multiplier, bitsUpper);
484
BigIntegerCalculator
.AddSelf(bits, buffer.Slice(0,
BigIntegerCalculator
.ActualLength(buffer)));
832
double digitRatio = 1.070328873472 *
BigIntegerCalculator
.BitsPerLimb / 32.0;
988
int ToStringNaiveThreshold =
BigIntegerCalculator
.DivideBurnikelZieglerThreshold;
1018
while (bits.Length < powOfTen.Length + omittedLength ||
BigIntegerCalculator
.Compare(bits.Slice(omittedLength), powOfTen) < 0)
1032
BigIntegerCalculator
.Divide(bits.Slice(omittedLength), powOfTen, upper, lower.Slice(omittedLength));
1041
lower.Slice(0,
BigIntegerCalculator
.ActualLength(lower)),
1052
upper.Slice(0,
BigIntegerCalculator
.ActualLength(upper)),
1346
BigIntegerCalculator
.Square(src, dst);
1396
return (MaxPartialDigits * (1 << index)) /
BigIntegerCalculator
.BitsPerLimb;
1429
BigIntegerCalculator
.Multiply(left, UInt32PowersOfTen[trailingZeroCount], bits.Slice(0, left.Length + 1));
1467
BigIntegerCalculator
.Multiply(src, power, dst);
1485
BigIntegerCalculator
.Multiply(left, powersOfTen, bits2);
System\Numerics\BigInteger.cs (84)
38
internal static int MaxLength => Array.MaxLength /
BigIntegerCalculator
.BitsPerLimb;
215
int bitsPerLimb =
BigIntegerCalculator
.BitsPerLimb;
924
BigIntegerCalculator
.Divide(dividend._bits, NumericsHelpers.Abs(divisor._sign), quotient, out nuint rest);
945
BigIntegerCalculator
.Divide(dividend._bits, divisor._bits, quotient, rest);
1036
return
BigIntegerCalculator
.Gcd(NumericsHelpers.Abs(left._sign), NumericsHelpers.Abs(right._sign));
1043
?
BigIntegerCalculator
.Gcd(right._bits, NumericsHelpers.Abs(left._sign))
1051
?
BigIntegerCalculator
.Gcd(left._bits, NumericsHelpers.Abs(right._sign))
1057
return
BigIntegerCalculator
.Compare(left._bits, right._bits) < 0
1064
Debug.Assert(
BigIntegerCalculator
.Compare(leftBits, rightBits) >= 0);
1071
nuint temp =
BigIntegerCalculator
.Remainder(leftBits, rightBits[0]);
1072
result =
BigIntegerCalculator
.Gcd(rightBits[0], temp);
1078
BigIntegerCalculator
.Remainder(leftBits, rightBits, bits);
1083
result =
BigIntegerCalculator
.Gcd(left, right);
1090
BigIntegerCalculator
.Gcd(leftBits, rightBits, bits);
1120
nuint bitsResult = trivialValue && trivialExponent ?
BigIntegerCalculator
.Pow(NumericsHelpers.Abs(value._sign), NumericsHelpers.Abs(exponent._sign), NumericsHelpers.Abs(modulus._sign)) :
1121
trivialValue ?
BigIntegerCalculator
.Pow(NumericsHelpers.Abs(value._sign), exponent._bits!, NumericsHelpers.Abs(modulus._sign)) :
1122
trivialExponent ?
BigIntegerCalculator
.Pow(value._bits!, NumericsHelpers.Abs(exponent._sign), NumericsHelpers.Abs(modulus._sign)) :
1123
BigIntegerCalculator
.Pow(value._bits!, exponent._bits!, NumericsHelpers.Abs(modulus._sign));
1135
BigIntegerCalculator
.Pow(NumericsHelpers.Abs(value._sign), NumericsHelpers.Abs(exponent._sign), modulus._bits!, bits);
1139
BigIntegerCalculator
.Pow(NumericsHelpers.Abs(value._sign), exponent._bits!, modulus._bits!, bits);
1144
BigIntegerCalculator
.Pow(value._bits!, NumericsHelpers.Abs(exponent._sign), modulus._bits!, bits);
1148
BigIntegerCalculator
.Pow(value._bits!, exponent._bits!, modulus._bits!, bits);
1195
int size =
BigIntegerCalculator
.PowBound(power, 1);
1198
BigIntegerCalculator
.Pow(NumericsHelpers.Abs(value._sign), power, bits);
1204
int size =
BigIntegerCalculator
.PowBound(power, value._bits!.Length);
1207
BigIntegerCalculator
.Pow(value._bits, power, bits);
1388
int bitsResult =
BigIntegerCalculator
.Compare(_bits, other._bits);
1756
nuint highBitMask = (nuint)1 << (
BigIntegerCalculator
.BitsPerLimb - 1);
1813
int bitsPerLimb =
BigIntegerCalculator
.BitsPerLimb;
1887
BigIntegerCalculator
.Add(rightBits, NumericsHelpers.Abs(leftSign), bits);
1898
BigIntegerCalculator
.Add(leftBits, NumericsHelpers.Abs(rightSign), bits);
1909
BigIntegerCalculator
.Add(rightBits, leftBits, bits);
1920
BigIntegerCalculator
.Add(leftBits, rightBits, bits);
1956
BigIntegerCalculator
.Subtract(rightBits, NumericsHelpers.Abs(leftSign), bits);
1967
BigIntegerCalculator
.Subtract(leftBits, NumericsHelpers.Abs(rightSign), bits);
1971
else if (
BigIntegerCalculator
.Compare(leftBits, rightBits) < 0)
1976
BigIntegerCalculator
.Subtract(rightBits, leftBits, bits);
1987
BigIntegerCalculator
.Subtract(leftBits, rightBits, bits);
2027
int bitsPerLimb =
BigIntegerCalculator
.BitsPerLimb;
2526
return BitwiseOp<
BigIntegerCalculator
.BitwiseAndOp>(in left, in right, zLen);
2536
return BitwiseOp<
BigIntegerCalculator
.BitwiseOrOp>(in left, in right, Math.Max(xLen, yLen) + 1);
2546
return BitwiseOp<
BigIntegerCalculator
.BitwiseXorOp>(in left, in right, Math.Max(xLen, yLen) + 1);
2550
where TOp : struct,
BigIntegerCalculator
.IBitwiseOp
2554
BigIntegerCalculator
.BitwiseOp<TOp>(
2583
(int digitShift, int smallShift) = Math.DivRem(shift,
BigIntegerCalculator
.BitsPerLimb);
2598
: bits[^1] >> (
BigIntegerCalculator
.BitsPerLimb - smallShift);
2616
BigIntegerCalculator
.LeftShiftSelf(zd, smallShift, out nuint carry);
2636
: m >> (
BigIntegerCalculator
.BitsPerLimb - smallShift);
2677
(int digitShift, int smallShift) = Math.DivRem(shift,
BigIntegerCalculator
.BitsPerLimb);
2708
BigIntegerCalculator
.RightShiftSelf(zd, smallShift, out nuint carry);
2745
BigIntegerCalculator
.Add(value._bits, 1, bits);
2754
BigIntegerCalculator
.Subtract(value._bits, 1, bits);
2780
BigIntegerCalculator
.Add(value._bits, 1, bits);
2788
BigIntegerCalculator
.Subtract(value._bits, 1, bits);
2809
BigIntegerCalculator
.Subtract(value._bits, 1, bits);
2818
BigIntegerCalculator
.Add(value._bits, 1, bits);
2859
BigIntegerCalculator
.Multiply(right, NumericsHelpers.Abs(leftSign), bits);
2870
BigIntegerCalculator
.Multiply(left, NumericsHelpers.Abs(rightSign), bits);
2879
BigIntegerCalculator
.Square(left, bits);
2890
BigIntegerCalculator
.Multiply(left, right, bits);
2923
BigIntegerCalculator
.Divide(dividend._bits, NumericsHelpers.Abs(divisor._sign), quotient);
2943
BigIntegerCalculator
.Divide(dividend._bits, divisor._bits, quotient);
2972
nuint remainder =
BigIntegerCalculator
.Remainder(dividend._bits, NumericsHelpers.Abs(divisor._sign));
2986
BigIntegerCalculator
.Remainder(dividend._bits, divisor._bits, bits);
3089
long bitLength = (long)bitsArrayLength *
BigIntegerCalculator
.BitsPerLimb -
3392
BigIntegerCalculator
.RightShiftSelf(zd, nuintSmallShift, out nuint carry);
3397
BigIntegerCalculator
.SwapUpperAndLower(zd, nuintDigitShift);
3401
BigIntegerCalculator
.LeftShiftSelf(zd, nuintSmallShift, out nuint carry);
3406
BigIntegerCalculator
.SwapUpperAndLower(zd, zd.Length - nuintDigitShift);
3420
BigIntegerCalculator
.RightShiftSelf(zd, smallShift32, out nuint carry);
3433
BigIntegerCalculator
.SwapUpperAndLower(words, effectiveDigitShift);
3443
BigIntegerCalculator
.LeftShiftSelf(zd, smallShift32, out _);
3458
BigIntegerCalculator
.SwapUpperAndLower(words, zWordCount - effectiveDigitShift);
3519
&& (leadingZeroCount != bits.Length - 1 || bits[^1] != ((nuint)1 << (
BigIntegerCalculator
.BitsPerLimb - 1))))
3537
BigIntegerCalculator
.RotateLeft(zd, rotateLeftAmount);
3573
result += (uint)
BigIntegerCalculator
.BitsPerLimb;
3607
int result = (bits.Length - 1) *
BigIntegerCalculator
.BitsPerLimb;
3611
result +=
BigIntegerCalculator
.BitsPerLimb - BitOperations.LeadingZeroCount(bits[^1]);
3626
result +=
BigIntegerCalculator
.BitsPerLimb + 1 - BitOperations.LeadingZeroCount(~part);
3843
? (BigInteger)((
BigIntegerCalculator
.BitsPerLimb - 1) ^ BitOperations.LeadingZeroCount((nuint)value._sign | 1))
3844
: (BigInteger)(((long)value._bits.Length *
BigIntegerCalculator
.BitsPerLimb - 1) ^ BitOperations.LeadingZeroCount(value._bits[^1]));
5225
(int digitShift, int smallShift) = Math.DivRem(shiftAmount,
BigIntegerCalculator
.BitsPerLimb);
5264
nuint signBit = (nuint)1 << (
BigIntegerCalculator
.BitsPerLimb - 1);
5314
BigIntegerCalculator
.RightShiftSelf(zd, smallShift, out _);
System\Numerics\BigIntegerCalculator.SquMul.cs (5)
708
BigIntegerCalculator
.Square(p0, r0);
709
BigIntegerCalculator
.Square(p1, r1);
710
BigIntegerCalculator
.Square(pm1, rm1);
711
BigIntegerCalculator
.Square(pm2, rm2);
712
BigIntegerCalculator
.Square(pInf, rInf);