public bool Equals(BigInt bi) { if (bi == null) { return(false); } if (_isNegative != bi._isNegative) { return(false); } var allSame = new DigitsEnumerable(_digits, bi._digits) .All((p) => p.Item1 == p.Item2); return(allSame); }
private static IReadOnlyList <byte> AddDigits(DigitsEnumerable enumerable) { var digits = new List <byte>(); byte extra = 0; foreach (var(d1, d2) in enumerable) { byte d = (byte)(d1 + d2 + extra); extra = (byte)(d / BASE); d = (byte)(d % BASE); digits.Add(d); } if (extra != 0) { digits.Add(extra); } return(digits); }
private static IReadOnlyList <byte> SubstructDigits(DigitsEnumerable enumerable) { var digits = new List <byte>(); byte extra = 0; foreach (var(d1, d2) in enumerable) { int d = d1 - d2 - extra; if (d < 0) { extra = 1; d += BASE; } else { extra = 0; } digits.Add((byte)d); } return(digits); }