2 instantiations of PowersOf1e9
System.Runtime.Numerics (2)
System\Number.BigInteger.cs (2)
1173return new PowersOf1e9(cached); 1177PowersOf1e9 result = new((Span<nuint>)buffer);
29 references to PowersOf1e9
System.Runtime.Numerics (29)
System\Number.BigInteger.cs (29)
423int base1E9Length = (intDigits.Length + PowersOf1e9.MaxPartialDigits - 1) / PowersOf1e9.MaxPartialDigits; 427ReadOnlySpan<byte> leadingDigits = intDigits[..(intDigits.Length % PowersOf1e9.MaxPartialDigits)]; 435Debug.Assert(intDigits.Length % PowersOf1e9.MaxPartialDigits == 0); 439uint.TryParse(intDigits.Slice(0, PowersOf1e9.MaxPartialDigits), out uint partialVal); 441intDigits = intDigits.Slice(PowersOf1e9.MaxPartialDigits); 472int valueDigits = (base1E9.Length - 1) * PowersOf1e9.MaxPartialDigits + FormattingHelpers.CountDigits(base1E9[^1]); 474int powersOf1e9BufferLength = PowersOf1e9.GetBufferSize(Math.Max(valueDigits, trailingZeroCount + 1), out int maxIndex); 475PowersOf1e9 powersOf1e9 = PowersOf1e9.GetCached(powersOf1e9BufferLength); 480int leadingLength = checked((int)(digitRatio * PowersOf1e9.MaxPartialDigits * base1E9.Length) + 3); 496static void Recursive(in PowersOf1e9 powersOf1e9, int powersOf1e9Index, ReadOnlySpan<nuint> base1E9, Span<nuint> bits) 515int multiplierTrailingZeroCount = PowersOf1e9.OmittedLength(powersOf1e9Index); 520int bufferLength = checked((int)(digitRatio * PowersOf1e9.MaxPartialDigits * multiplier1E9Length) + 1 + 2); 548int trailingPartialCount = Math.DivRem(trailingZeroCount, PowersOf1e9.MaxPartialDigits, out int remainingTrailingZeroCount); 551nuint carry = MultiplyAdd(bits.Slice(0, resultLength), PowersOf1e9.TenPowMaxPartial, 0); 582nuint carry = MultiplyAdd(bits.Slice(0, resultLength), PowersOf1e9.TenPowMaxPartial, base1E9[i]); 891int valueDigits = (base1E9Value.Length - 1) * PowersOf1e9.MaxPartialDigits + FormattingHelpers.CountDigits(base1E9Value[^1]); 1024bufferEnd = UInt32ToDecChars(bufferEnd, (uint)base1E9Value[i], PowersOf1e9.MaxPartialDigits); 1025digits -= PowersOf1e9.MaxPartialDigits; 1048PowersOf1e9.FloorBufferSize(bits.Length, out int powersOf1e9BufferLength, out int maxIndex); 1049PowersOf1e9 powersOf1e9 = PowersOf1e9.GetCached(powersOf1e9BufferLength); 1053static void DivideAndConquer(in PowersOf1e9 powersOf1e9, int powersIndex, ReadOnlySpan<nuint> bits, Span<nuint> base1E9Buffer, out int base1E9Written) 1065int omittedLength = PowersOf1e9.OmittedLength(powersIndex); 1071omittedLength = PowersOf1e9.OmittedLength(powersIndex); 1137const uint Divisor = (uint)PowersOf1e9.TenPowMaxPartial; 1168public static PowersOf1e9 GetCached(int bufferLength) 1177PowersOf1e9 result = new((Span<nuint>)buffer);