System.Xml.Xsl.XPathConvert.BigInteger.Add C# (CSharp) Method

Add() public method

public Add ( BigInteger bi ) : void
bi BigInteger
return void
            public void Add(BigInteger bi) {
                AssertValid();
                bi.AssertValid();
                Debug.Assert((object)this != (object)bi);

                int idx, cuMax, cuMin;
                uint wCarry;

                if ((cuMax = length) < (cuMin = bi.length)) {
                    cuMax = bi.length;
                    cuMin = length;
                    Ensure(cuMax + 1);
                }

                wCarry = 0;
                for (idx = 0; idx < cuMin; idx++) {
                    if (0 != wCarry) {
                        wCarry = AddU(ref digits[idx], wCarry);
                    }
                    wCarry += AddU(ref digits[idx], bi.digits[idx]);
                }

                if (length < bi.length) {
                    for ( ; idx < cuMax; idx++) {
                        digits[idx] = bi.digits[idx];
                        if (0 != wCarry) {
                            wCarry = AddU(ref digits[idx], wCarry);
                        }
                    }
                    length = cuMax;
                } else {
                    for ( ; 0 != wCarry && idx < cuMax; idx++) {
                        wCarry = AddU(ref digits[idx], wCarry);
                    }
                }

                if (0 != wCarry) {
                    Ensure(length + 1);
                    digits[length++] = wCarry;
                }
                AssertValid();
            }