101 references to BigIntegerCalculator
System.Runtime.Numerics (101)
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 (76)
38
internal static int MaxLength => Array.MaxLength /
BigIntegerCalculator
.BitsPerLimb;
215
int bitsPerLimb =
BigIntegerCalculator
.BitsPerLimb;
923
BigIntegerCalculator
.Divide(dividend._bits, NumericsHelpers.Abs(divisor._sign), quotient, out nuint rest);
946
BigIntegerCalculator
.Divide(dividend._bits, divisor._bits, quotient, rest);
1037
return
BigIntegerCalculator
.Gcd(NumericsHelpers.Abs(left._sign), NumericsHelpers.Abs(right._sign));
1044
?
BigIntegerCalculator
.Gcd(right._bits, NumericsHelpers.Abs(left._sign))
1052
?
BigIntegerCalculator
.Gcd(left._bits, NumericsHelpers.Abs(right._sign))
1058
return
BigIntegerCalculator
.Compare(left._bits, right._bits) < 0
1065
Debug.Assert(
BigIntegerCalculator
.Compare(leftBits, rightBits) >= 0);
1072
nuint temp =
BigIntegerCalculator
.Remainder(leftBits, rightBits[0]);
1073
result =
BigIntegerCalculator
.Gcd(rightBits[0], temp);
1079
BigIntegerCalculator
.Remainder(leftBits, rightBits, bits);
1084
result =
BigIntegerCalculator
.Gcd(left, right);
1091
BigIntegerCalculator
.Gcd(leftBits, rightBits, bits);
1121
nuint bitsResult = trivialValue && trivialExponent ?
BigIntegerCalculator
.Pow(NumericsHelpers.Abs(value._sign), NumericsHelpers.Abs(exponent._sign), NumericsHelpers.Abs(modulus._sign)) :
1122
trivialValue ?
BigIntegerCalculator
.Pow(NumericsHelpers.Abs(value._sign), exponent._bits!, NumericsHelpers.Abs(modulus._sign)) :
1123
trivialExponent ?
BigIntegerCalculator
.Pow(value._bits!, NumericsHelpers.Abs(exponent._sign), NumericsHelpers.Abs(modulus._sign)) :
1124
BigIntegerCalculator
.Pow(value._bits!, exponent._bits!, NumericsHelpers.Abs(modulus._sign));
1136
BigIntegerCalculator
.Pow(NumericsHelpers.Abs(value._sign), NumericsHelpers.Abs(exponent._sign), modulus._bits!, bits);
1140
BigIntegerCalculator
.Pow(NumericsHelpers.Abs(value._sign), exponent._bits!, modulus._bits!, bits);
1145
BigIntegerCalculator
.Pow(value._bits!, NumericsHelpers.Abs(exponent._sign), modulus._bits!, bits);
1149
BigIntegerCalculator
.Pow(value._bits!, exponent._bits!, modulus._bits!, bits);
1196
int size =
BigIntegerCalculator
.PowBound(power, 1);
1199
BigIntegerCalculator
.Pow(NumericsHelpers.Abs(value._sign), power, bits);
1205
int size =
BigIntegerCalculator
.PowBound(power, value._bits!.Length);
1208
BigIntegerCalculator
.Pow(value._bits, power, bits);
1389
int bitsResult =
BigIntegerCalculator
.Compare(_bits, other._bits);
1757
nuint highBitMask = (nuint)1 << (
BigIntegerCalculator
.BitsPerLimb - 1);
1814
int bitsPerLimb =
BigIntegerCalculator
.BitsPerLimb;
1888
BigIntegerCalculator
.Add(rightBits, NumericsHelpers.Abs(leftSign), bits);
1899
BigIntegerCalculator
.Add(leftBits, NumericsHelpers.Abs(rightSign), bits);
1910
BigIntegerCalculator
.Add(rightBits, leftBits, bits);
1921
BigIntegerCalculator
.Add(leftBits, rightBits, bits);
1957
BigIntegerCalculator
.Subtract(rightBits, NumericsHelpers.Abs(leftSign), bits);
1968
BigIntegerCalculator
.Subtract(leftBits, NumericsHelpers.Abs(rightSign), bits);
1972
else if (
BigIntegerCalculator
.Compare(leftBits, rightBits) < 0)
1977
BigIntegerCalculator
.Subtract(rightBits, leftBits, bits);
1988
BigIntegerCalculator
.Subtract(leftBits, rightBits, bits);
2028
int bitsPerLimb =
BigIntegerCalculator
.BitsPerLimb;
2527
return BitwiseOp<
BigIntegerCalculator
.BitwiseAndOp>(in left, in right, zLen);
2537
return BitwiseOp<
BigIntegerCalculator
.BitwiseOrOp>(in left, in right, Math.Max(xLen, yLen) + 1);
2547
return BitwiseOp<
BigIntegerCalculator
.BitwiseXorOp>(in left, in right, Math.Max(xLen, yLen) + 1);
2551
where TOp : struct,
BigIntegerCalculator
.IBitwiseOp
2555
BigIntegerCalculator
.BitwiseOp<TOp>(
2584
(int digitShift, int smallShift) = Math.DivRem(shift,
BigIntegerCalculator
.BitsPerLimb);
2599
: bits[^1] >> (
BigIntegerCalculator
.BitsPerLimb - smallShift);
2617
BigIntegerCalculator
.LeftShiftSelf(zd, smallShift, out nuint carry);
2637
: m >> (
BigIntegerCalculator
.BitsPerLimb - smallShift);
2678
(int digitShift, int smallShift) = Math.DivRem(shift,
BigIntegerCalculator
.BitsPerLimb);
2709
BigIntegerCalculator
.RightShiftSelf(zd, smallShift, out nuint carry);
2746
BigIntegerCalculator
.Add(value._bits, 1, bits);
2755
BigIntegerCalculator
.Subtract(value._bits, 1, bits);
2781
BigIntegerCalculator
.Add(value._bits, 1, bits);
2789
BigIntegerCalculator
.Subtract(value._bits, 1, bits);
2810
BigIntegerCalculator
.Subtract(value._bits, 1, bits);
2819
BigIntegerCalculator
.Add(value._bits, 1, bits);
2860
BigIntegerCalculator
.Multiply(right, NumericsHelpers.Abs(leftSign), bits);
2871
BigIntegerCalculator
.Multiply(left, NumericsHelpers.Abs(rightSign), bits);
2880
BigIntegerCalculator
.Square(left, bits);
2891
BigIntegerCalculator
.Multiply(left, right, bits);
2924
BigIntegerCalculator
.Divide(dividend._bits, NumericsHelpers.Abs(divisor._sign), quotient);
2944
BigIntegerCalculator
.Divide(dividend._bits, divisor._bits, quotient);
2973
nuint remainder =
BigIntegerCalculator
.Remainder(dividend._bits, NumericsHelpers.Abs(divisor._sign));
2987
BigIntegerCalculator
.Remainder(dividend._bits, divisor._bits, bits);
3090
long bitLength = (long)bitsArrayLength *
BigIntegerCalculator
.BitsPerLimb -
3270
&& (leadingZeroCount != bits.Length - 1 || bits[^1] != ((nuint)1 << (
BigIntegerCalculator
.BitsPerLimb - 1))))
3296
BigIntegerCalculator
.RotateLeft(zd, rotateLeftAmount);
3332
result += (uint)
BigIntegerCalculator
.BitsPerLimb;
3366
int result = (bits.Length - 1) *
BigIntegerCalculator
.BitsPerLimb;
3370
result +=
BigIntegerCalculator
.BitsPerLimb - BitOperations.LeadingZeroCount(bits[^1]);
3385
result +=
BigIntegerCalculator
.BitsPerLimb + 1 - BitOperations.LeadingZeroCount(~part);
3602
? (BigInteger)((
BigIntegerCalculator
.BitsPerLimb - 1) ^ BitOperations.LeadingZeroCount((nuint)value._sign | 1))
3603
: (BigInteger)(((long)value._bits.Length *
BigIntegerCalculator
.BitsPerLimb - 1) ^ BitOperations.LeadingZeroCount(value._bits[^1]));
4984
(int digitShift, int smallShift) = Math.DivRem(shiftAmount,
BigIntegerCalculator
.BitsPerLimb);
5023
nuint signBit = (nuint)1 << (
BigIntegerCalculator
.BitsPerLimb - 1);
5073
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);