Beispiel #1
0
        /// <summary>
        /// Умножение больших чисел с учетом знака
        /// </summary>
        /// <param name="value">На что умножаем</param>
        /// <returns>Произведение</returns>
        public BigInteger Multiply(BigInteger value)
        {
            BigInteger a = this;
            BigInteger b = value;
            BigInteger ans;

            if (a.sign && b.sign)
            {
                return(a.AbsMultiply(b));
            }
            else if (!a.sign && !b.sign)
            {
                a.ChangeSign(true);
                b.ChangeSign(true);
                ans = a.AbsMultiply(b);
                a.ChangeSign(false);
                b.ChangeSign(false);
                return(ans);
            }
            else if (!a.sign)
            {
                a.ChangeSign(true);
                b      = a.AbsMultiply(b);
                b.sign = false;
                a.ChangeSign(false);
                return(b);
            }
            else
            {
                b.sign = true;
                a      = a.AbsMultiply(b);
                a.sign = false;
                b.sign = false;
                return(a);
            }
        }