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); }
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); }
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); }