BigInteger.operator C# (CSharp) Method

operator() public static method

public static operator ( ) : BigInteger
return BigInteger
        public static BigInteger operator +(BigInteger bi1, BigInteger bi2)
        {
                BigInteger result = new BigInteger();

                result.dataLength = (bi1.dataLength > bi2.dataLength) ? bi1.dataLength : bi2.dataLength;

                long carry = 0;
                for(int i = 0; i < result.dataLength; i++)
                {
                        long sum = (long)bi1.data[i] + (long)bi2.data[i] + carry;
                        carry  = sum >> 32;
                        result.data[i] = (uint)(sum & 0xFFFFFFFF);
                }

                if(carry != 0 && result.dataLength < maxLength)
                {
                        result.data[result.dataLength] = (uint)(carry);
                        result.dataLength++;
                }

                while(result.dataLength > 1 && result.data[result.dataLength-1] == 0)
                        result.dataLength--;


                // overflow check
                int lastPos = maxLength - 1;
                if((bi1.data[lastPos] & 0x80000000) == (bi2.data[lastPos] & 0x80000000) &&
                   (result.data[lastPos] & 0x80000000) != (bi1.data[lastPos] & 0x80000000))
                {
                        throw (new ArithmeticException());
                }

                return result;
        }

Same methods

BigInteger::operator ( ) : bool