28 writes to _bits
System.Runtime.Numerics (28)
System\Numerics\BigInteger.cs (28)
59_bits = null; 70_bits = null; 75_bits = new uint[1]; 86_bits = null; 108_bits = new uint[1]; 113_bits = new uint[2]; 128_bits = null; 133_bits = new uint[1]; 139_bits = new uint[2]; 166_bits = null; 213_bits = new uint[cu + 2]; 246_bits = null; 250_bits = new uint[size]; 323_bits = null; 347_bits = null; 354_bits = new uint[1] { unchecked((uint)_sign) }; 448_bits = null; 460_bits = new uint[len]; 466_bits = val; 472_bits = val; 490_bits = bits; 523_bits = null; 533_bits = [value[0]]; 539_bits = value.ToArray(); 599_bits = null; 605_bits = [value[0]]; 610_bits = null; 629_bits = value.ToArray();
318 references to _bits
System.Runtime.Numerics (318)
System\Number.BigInteger.cs (3)
772if (value._bits == null) 818int base1E9BufferLength = (int)(value._bits.Length * digitRatio) + 1; 826BigIntegerToBase1E9(value._bits, base1E9Buffer, out int written);
System\Numerics\BigInteger.cs (315)
76_bits[0] = value; 109_bits[0] = (uint)x; 114_bits[0] = unchecked((uint)x); 115_bits[1] = (uint)(x >> kcbitUint); 134_bits[0] = (uint)value; 140_bits[0] = unchecked((uint)value); 141_bits[1] = (uint)(value >> kcbitUint); 214_bits[cu + 1] = (uint)(man >> (cbit + kcbitUint)); 215_bits[cu] = unchecked((uint)(man >> cbit)); 217_bits[cu - 1] = unchecked((uint)man) << (kcbitUint - cbit); 254_bits[0] = (uint)bits[0]; 256_bits[1] = (uint)bits[1]; 258_bits[2] = (uint)bits[2]; 461Array.Copy(val, _bits, len); 646if (_bits == null) 652int iu = _bits.Length - 1; 654return BitOperations.IsPow2(_bits[iu]) && !_bits.AsSpan(0, iu).ContainsAnyExcept(0u); 660public bool IsOne { get { AssertValid(); return _sign == 1 && _bits == null; } } 662public bool IsEven { get { AssertValid(); return _bits == null ? (_sign & 1) == 0 : (_bits[0] & 1) == 0; } } 738return new BigInteger(unchecked((int)NumericsHelpers.Abs(value._sign)), value._bits); 771bool trivialDividend = dividend._bits == null; 772bool trivialDivisor = divisor._bits == null; 789Debug.Assert(dividend._bits != null); 796int size = dividend._bits.Length; 804BigIntegerCalculator.Divide(dividend._bits, NumericsHelpers.Abs(divisor._sign), quotient, out rest); 816Debug.Assert(divisor._bits != null); 818if (dividend._bits.Length < divisor._bits.Length) 826int size = dividend._bits.Length; 832size = dividend._bits.Length - divisor._bits.Length + 1; 837BigIntegerCalculator.Divide(dividend._bits, divisor._bits, quotient, rest); 870if (value._bits == null) 873ulong h = value._bits[value._bits.Length - 1]; 874ulong m = value._bits.Length > 1 ? value._bits[value._bits.Length - 2] : 0; 875ulong l = value._bits.Length > 2 ? value._bits[value._bits.Length - 3] : 0; 879long b = (long)value._bits.Length * 32 - c; 899bool trivialLeft = left._bits == null; 900bool trivialRight = right._bits == null; 909Debug.Assert(right._bits != null); 911? BigIntegerCalculator.Gcd(right._bits, NumericsHelpers.Abs(left._sign)) 912: new BigInteger(right._bits, negative: false); 917Debug.Assert(left._bits != null); 919? BigIntegerCalculator.Gcd(left._bits, NumericsHelpers.Abs(right._sign)) 920: new BigInteger(left._bits, negative: false); 923Debug.Assert(left._bits != null && right._bits != null); 925if (BigIntegerCalculator.Compare(left._bits, right._bits) < 0) 927return GreatestCommonDivisor(right._bits, left._bits); 931return GreatestCommonDivisor(left._bits, right._bits); 999bool trivialValue = value._bits == null; 1000bool trivialExponent = exponent._bits == null; 1001bool trivialModulus = modulus._bits == null; 1008trivialValue ? BigIntegerCalculator.Pow(NumericsHelpers.Abs(value._sign), exponent._bits!, NumericsHelpers.Abs(modulus._sign)) : 1009trivialExponent ? BigIntegerCalculator.Pow(value._bits!, NumericsHelpers.Abs(exponent._sign), NumericsHelpers.Abs(modulus._sign)) : 1010BigIntegerCalculator.Pow(value._bits!, exponent._bits!, NumericsHelpers.Abs(modulus._sign)); 1016int size = (modulus._bits?.Length ?? 1) << 1; 1026BigIntegerCalculator.Pow(NumericsHelpers.Abs(value._sign), NumericsHelpers.Abs(exponent._sign), modulus._bits!, bits); 1030BigIntegerCalculator.Pow(NumericsHelpers.Abs(value._sign), exponent._bits!, modulus._bits!, bits); 1035BigIntegerCalculator.Pow(value._bits!, NumericsHelpers.Abs(exponent._sign), modulus._bits!, bits); 1039BigIntegerCalculator.Pow(value._bits!, exponent._bits!, modulus._bits!, bits); 1062bool trivialValue = value._bits == null; 1088int size = BigIntegerCalculator.PowBound(power, value._bits!.Length); 1094BigIntegerCalculator.Pow(value._bits, power, bits); 1108if (_bits is null) 1112hash.AddBytes(MemoryMarshal.AsBytes(_bits.AsSpan())); 1128if (_bits == null) 1132if ((_sign ^ other) < 0 || (cu = _bits.Length) > 2) 1137return _bits[0] == uu; 1139return NumericsHelpers.MakeUInt64(_bits[1], _bits[0]) == uu; 1149if (_bits == null) 1152int cu = _bits.Length; 1156return _bits[0] == other; 1157return NumericsHelpers.MakeUInt64(_bits[1], _bits[0]) == other; 1165return _sign == other._sign && _bits.AsSpan().SequenceEqual(other._bits); 1172if (_bits == null) 1175if ((_sign ^ other) < 0 || (cu = _bits.Length) > 2) 1178ulong uuTmp = cu == 2 ? NumericsHelpers.MakeUInt64(_bits[1], _bits[0]) : _bits[0]; 1189if (_bits == null) 1191int cu = _bits.Length; 1194ulong uuTmp = cu == 2 ? NumericsHelpers.MakeUInt64(_bits[1], _bits[0]) : _bits[0]; 1210if (_bits == null) 1212if (other._bits == null) 1217if (other._bits == null) 1220int bitsResult = BigIntegerCalculator.Compare(_bits, other._bits); 1380uint[]? bits = _bits; 1564Debug.Assert(_bits is null || _sign == 0 ? buffer.Length == 2 : buffer.Length >= _bits.Length + 1); 1568if (_bits is null) 1575_bits.CopyTo(buffer); 1576buffer = buffer.Slice(0, _bits.Length + 1); 1640if ((_bits is null) || (_bits.Length <= 4)) 1650ulong highBits = ((ulong)_bits[^1] << kcbitUint) + _bits[^2]; 1651double lowBitsCount32 = _bits.Length - 2; // if Length > int.MaxValue/32, counting in bits can cause overflow 1766if (left._bits == null && right._bits == null) 1770return Add(left._bits, left._sign, right._bits, -1 * right._sign); 1771return Subtract(left._bits, left._sign, right._bits, right._sign); 1857if (value._bits == null) 1860int length = value._bits.Length; 1867if (length > 2) hi = (int)value._bits[2]; 1868if (length > 1) mi = (int)value._bits[1]; 1869if (length > 0) lo = (int)value._bits[0]; 1880uint[]? bits = value._bits; 1936if (value._bits == null) 1940if (value._bits.Length > 1) 1947return checked((int)value._bits[0]); 1949if (value._bits[0] > kuMaskHighBit) 1954return unchecked(-(int)value._bits[0]); 1960if (value._bits == null) 1965int len = value._bits.Length; 1974uu = NumericsHelpers.MakeUInt64(value._bits[1], value._bits[0]); 1978uu = value._bits[0]; 1997if (value._bits is null) 2002int len = value._bits.Length; 2014NumericsHelpers.MakeUInt64((len > 3) ? value._bits[3] : 0, value._bits[2]), 2015NumericsHelpers.MakeUInt64(value._bits[1], value._bits[0]) 2020uu = NumericsHelpers.MakeUInt64(value._bits[1], value._bits[0]); 2024uu = value._bits[0]; 2073if (value._bits == null) 2077else if (value._bits.Length > 1 || value._sign < 0) 2083return value._bits[0]; 2091if (value._bits == null) 2096int len = value._bits.Length; 2104return NumericsHelpers.MakeUInt64(value._bits[1], value._bits[0]); 2106return value._bits[0]; 2117if (value._bits is null) 2122int len = value._bits.Length; 2132NumericsHelpers.MakeUInt64((len > 3) ? value._bits[3] : 0, value._bits[2]), 2133NumericsHelpers.MakeUInt64(value._bits[1], value._bits[0]) 2138return NumericsHelpers.MakeUInt64(value._bits[1], value._bits[0]); 2140return value._bits[0]; 2406if (left._bits is null && right._bits is null) 2415int size = (left._bits?.Length ?? 1) + 1; 2422size = (right._bits?.Length ?? 1) + 1; 2462if (left._bits is null && right._bits is null) 2471int size = (left._bits?.Length ?? 1) + 1; 2478size = (right._bits?.Length ?? 1) + 1; 2513if (left._bits is null && right._bits is null) 2522int size = (left._bits?.Length ?? 1) + 1; 2529size = (right._bits?.Length ?? 1) + 1; 2575if (value._bits is null) 2579ReadOnlySpan<uint> bits = value._bits; 2657if (value._bits is null) 2670ReadOnlySpan<uint> bits = value._bits; 2716return new BigInteger(-value._sign, value._bits); 2740if (left._bits == null && right._bits == null) 2744return Subtract(left._bits, left._sign, right._bits, -1 * right._sign); 2745return Add(left._bits, left._sign, right._bits, right._sign); 2753if (left._bits == null && right._bits == null) 2756return Multiply(left._bits, left._sign, right._bits, right._sign); 2841bool trivialDividend = dividend._bits == null; 2842bool trivialDivisor = divisor._bits == null; 2860Debug.Assert(dividend._bits != null); 2862int size = dividend._bits.Length; 2870BigIntegerCalculator.Divide(dividend._bits, NumericsHelpers.Abs(divisor._sign), quotient); 2880Debug.Assert(dividend._bits != null && divisor._bits != null); 2882if (dividend._bits.Length < divisor._bits.Length) 2888int size = dividend._bits.Length - divisor._bits.Length + 1; 2893BigIntegerCalculator.Divide(dividend._bits, divisor._bits, quotient); 2908bool trivialDividend = dividend._bits == null; 2909bool trivialDivisor = divisor._bits == null; 2925Debug.Assert(dividend._bits != null); 2926uint remainder = BigIntegerCalculator.Remainder(dividend._bits, NumericsHelpers.Abs(divisor._sign)); 2930Debug.Assert(dividend._bits != null && divisor._bits != null); 2932if (dividend._bits.Length < divisor._bits.Length) 2938int size = dividend._bits.Length; 2943BigIntegerCalculator.Remainder(dividend._bits, divisor._bits, bits); 3125uint[]? bits = _bits; 3165if (_bits != null) 3170Debug.Assert(_bits.Length > 0); 3172Debug.Assert(_bits.Length > 1 || _bits[0] >= kuMaskHighBit); 3174Debug.Assert(_bits[_bits.Length - 1] != 0); 3176Debug.Assert(_bits.Length <= MaxLength); 3208if (value._bits is null) 3216return (value._sign >= 0) ? uint.LeadingZeroCount(value._bits[^1]) : 0; 3224if (value._bits is null) 3235for (int i = 0; i < value._bits.Length; i++) 3237uint part = value._bits[i]; 3253part = ~value._bits[i] + 1; 3258while ((part == 0) && (i < value._bits.Length)); 3260while (i < value._bits.Length) 3264part = ~value._bits[i]; 3283if (value._bits is null) 3291return Rotate(value._bits, neg, rotateAmount); 3304if (value._bits is null) 3312return Rotate(value._bits, neg, -(long)rotateAmount); 3377if (value._bits is null) 3387uint part = value._bits[0]; 3389for (int i = 1; (part == 0) && (i < value._bits.Length); i++) 3391part = value._bits[i]; 3418uint[]? bits = _bits; 3470uint[]? bits = _bits; 3572uint[]? bits = _bits; 3672uint[]? bits = _bits; 3729if (value._bits is null) 3734return ((value._bits.Length * 32) - 1) ^ uint.LeadingZeroCount(value._bits[^1]); 3787if (value._bits is null) 3794if (sign._bits is null) 3813if (value._bits is null) 3896if (value._bits is null) 3900return (value._bits[0] & 1) == 0; 3936if (value._bits is null) 3940return (value._bits[0] & 1) != 0; 4497if (value._bits is not null) 4514if (value._bits is not null) 4556if (value._bits is not null) 4573if (value._bits is not null) 4617if (value._bits is not null) 4640if (value._bits is not null) 4696if (value._bits is not null) 4698uint bits = value._bits[0]; 4719if (value._bits is not null) 4721uint bits = value._bits[0]; 4767if (value._bits is not null) 4769actualResult = IsNegative(value) ? (short)(~value._bits[0] + 1) : (short)value._bits[0]; 4783if (value._bits is not null) 4785actualResult = IsNegative(value) ? (int)(~value._bits[0] + 1) : (int)value._bits[0]; 4799if (value._bits is not null) 4803if (value._bits.Length >= 2) 4805bits = value._bits[1]; 4809bits |= value._bits[0]; 4830if (value._bits is not null) 4835if (value._bits.Length >= 4) 4837upperBits = value._bits[3]; 4841if (value._bits.Length >= 3) 4843upperBits |= value._bits[2]; 4846if (value._bits.Length >= 2) 4848lowerBits = value._bits[1]; 4852lowerBits |= value._bits[0]; 4875if (value._bits is not null) 4879if (Environment.Is64BitProcess && (value._bits.Length >= 2)) 4881bits = value._bits[1]; 4885bits |= value._bits[0]; 4912if (value._bits is not null) 4914actualResult = IsNegative(value) ? (sbyte)(~value._bits[0] + 1) : (sbyte)value._bits[0]; 4934if (value._bits is not null) 4936uint bits = value._bits[0]; 4957if (value._bits is not null) 4959uint bits = value._bits[0]; 4980if (value._bits is not null) 4984if (value._bits.Length >= 2) 4986bits = value._bits[1]; 4990bits |= value._bits[0]; 5011if (value._bits is not null) 5016if (value._bits.Length >= 4) 5018upperBits = value._bits[3]; 5022if (value._bits.Length >= 3) 5024upperBits |= value._bits[2]; 5027if (value._bits.Length >= 2) 5029lowerBits = value._bits[1]; 5033lowerBits |= value._bits[0]; 5056if (value._bits is not null) 5060if (Environment.Is64BitProcess && (value._bits.Length >= 2)) 5062bits = value._bits[1]; 5066bits |= value._bits[0]; 5117if (value._bits is null) 5127ReadOnlySpan<uint> bits = value._bits;