Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }