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)
769if (value._bits == null) 815int base1E9BufferLength = (int)(value._bits.Length * digitRatio) + 1; 823BigIntegerToBase1E9(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); 2829bool trivialDividend = dividend._bits == null; 2830bool trivialDivisor = divisor._bits == null; 2848Debug.Assert(dividend._bits != null); 2850int size = dividend._bits.Length; 2858BigIntegerCalculator.Divide(dividend._bits, NumericsHelpers.Abs(divisor._sign), quotient); 2868Debug.Assert(dividend._bits != null && divisor._bits != null); 2870if (dividend._bits.Length < divisor._bits.Length) 2876int size = dividend._bits.Length - divisor._bits.Length + 1; 2881BigIntegerCalculator.Divide(dividend._bits, divisor._bits, quotient); 2896bool trivialDividend = dividend._bits == null; 2897bool trivialDivisor = divisor._bits == null; 2913Debug.Assert(dividend._bits != null); 2914uint remainder = BigIntegerCalculator.Remainder(dividend._bits, NumericsHelpers.Abs(divisor._sign)); 2918Debug.Assert(dividend._bits != null && divisor._bits != null); 2920if (dividend._bits.Length < divisor._bits.Length) 2926int size = dividend._bits.Length; 2931BigIntegerCalculator.Remainder(dividend._bits, divisor._bits, bits); 3113uint[]? bits = _bits; 3153if (_bits != null) 3158Debug.Assert(_bits.Length > 0); 3160Debug.Assert(_bits.Length > 1 || _bits[0] >= kuMaskHighBit); 3162Debug.Assert(_bits[_bits.Length - 1] != 0); 3164Debug.Assert(_bits.Length <= MaxLength); 3196if (value._bits is null) 3204return (value._sign >= 0) ? uint.LeadingZeroCount(value._bits[^1]) : 0; 3212if (value._bits is null) 3223for (int i = 0; i < value._bits.Length; i++) 3225uint part = value._bits[i]; 3241part = ~value._bits[i] + 1; 3246while ((part == 0) && (i < value._bits.Length)); 3248while (i < value._bits.Length) 3252part = ~value._bits[i]; 3271if (value._bits is null) 3279return Rotate(value._bits, neg, rotateAmount); 3292if (value._bits is null) 3300return Rotate(value._bits, neg, -(long)rotateAmount); 3365if (value._bits is null) 3375uint part = value._bits[0]; 3377for (int i = 1; (part == 0) && (i < value._bits.Length); i++) 3379part = value._bits[i]; 3406uint[]? bits = _bits; 3458uint[]? bits = _bits; 3560uint[]? bits = _bits; 3660uint[]? bits = _bits; 3717if (value._bits is null) 3722return ((value._bits.Length * 32) - 1) ^ uint.LeadingZeroCount(value._bits[^1]); 3775if (value._bits is null) 3782if (sign._bits is null) 3801if (value._bits is null) 3884if (value._bits is null) 3888return (value._bits[0] & 1) == 0; 3924if (value._bits is null) 3928return (value._bits[0] & 1) != 0; 4485if (value._bits is not null) 4502if (value._bits is not null) 4544if (value._bits is not null) 4561if (value._bits is not null) 4605if (value._bits is not null) 4628if (value._bits is not null) 4684if (value._bits is not null) 4686uint bits = value._bits[0]; 4707if (value._bits is not null) 4709uint bits = value._bits[0]; 4755if (value._bits is not null) 4757actualResult = IsNegative(value) ? (short)(~value._bits[0] + 1) : (short)value._bits[0]; 4771if (value._bits is not null) 4773actualResult = IsNegative(value) ? (int)(~value._bits[0] + 1) : (int)value._bits[0]; 4787if (value._bits is not null) 4791if (value._bits.Length >= 2) 4793bits = value._bits[1]; 4797bits |= value._bits[0]; 4818if (value._bits is not null) 4823if (value._bits.Length >= 4) 4825upperBits = value._bits[3]; 4829if (value._bits.Length >= 3) 4831upperBits |= value._bits[2]; 4834if (value._bits.Length >= 2) 4836lowerBits = value._bits[1]; 4840lowerBits |= value._bits[0]; 4863if (value._bits is not null) 4867if (Environment.Is64BitProcess && (value._bits.Length >= 2)) 4869bits = value._bits[1]; 4873bits |= value._bits[0]; 4900if (value._bits is not null) 4902actualResult = IsNegative(value) ? (sbyte)(~value._bits[0] + 1) : (sbyte)value._bits[0]; 4922if (value._bits is not null) 4924uint bits = value._bits[0]; 4945if (value._bits is not null) 4947uint bits = value._bits[0]; 4968if (value._bits is not null) 4972if (value._bits.Length >= 2) 4974bits = value._bits[1]; 4978bits |= value._bits[0]; 4999if (value._bits is not null) 5004if (value._bits.Length >= 4) 5006upperBits = value._bits[3]; 5010if (value._bits.Length >= 3) 5012upperBits |= value._bits[2]; 5015if (value._bits.Length >= 2) 5017lowerBits = value._bits[1]; 5021lowerBits |= value._bits[0]; 5044if (value._bits is not null) 5048if (Environment.Is64BitProcess && (value._bits.Length >= 2)) 5050bits = value._bits[1]; 5054bits |= value._bits[0]; 5105if (value._bits is null) 5115ReadOnlySpan<uint> bits = value._bits;