Beispiel #1
0
        public static BigNumber operator +(BigNumber firstNumber, BigNumber secondNumber)
        {
            BigNumber result = null;

            if (firstNumber.sign == secondNumber.sign)
            {
                result      = NumberOperation.Sum(firstNumber, secondNumber);
                result.sign = firstNumber.sign;
            }
            else
            {
                var compareResult = (Abs(firstNumber)).CompareTo(Abs(secondNumber));
                if (compareResult == 1)
                {
                    result      = NumberOperation.Diff(firstNumber, secondNumber);
                    result.sign = firstNumber.sign;
                }
                else if (compareResult == -1)
                {
                    result      = NumberOperation.Diff(secondNumber, firstNumber);
                    result.sign = secondNumber.sign;
                }
                else
                {
                    result = new BigNumber(0);
                }
            }
            return(result);
        }
Beispiel #2
0
        public static BigNumber operator /(BigNumber firstNumber, BigNumber secondNumber)
        {
            if (NumberUtils.IsZero(secondNumber))
            {
                throw new DivideByZeroException();
            }
            var result = NumberOperation.Divide(Abs(firstNumber), Abs(secondNumber));

            if (firstNumber.sign != secondNumber.sign)
            {
                result.sign = -1;
            }

            return(result);
        }
Beispiel #3
0
        public static BigNumber operator *(BigNumber firstNumber, BigNumber secondNumber)
        {
            BigNumber result = new BigNumber();

            if (Abs(firstNumber) > Abs(secondNumber))
            {
                result = NumberOperation.Multiply(Abs(firstNumber), Abs(secondNumber));
            }
            else
            {
                result = NumberOperation.Multiply(Abs(secondNumber), Abs(firstNumber));
            }

            if (firstNumber.sign != secondNumber.sign)
            {
                result.sign = -1;
            }

            return(result);
        }