Ejemplo n.º 1
0
        public NetBigInteger Add(
			NetBigInteger value)
        {
            if (m_sign == 0)
                return value;

            if (m_sign != value.m_sign)
            {
                if (value.m_sign == 0)
                    return this;

                if (value.m_sign < 0)
                    return Subtract(value.Negate());

                return value.Subtract(Negate());
            }

            return AddToMagnitude(value.m_magnitude);
        }
Ejemplo n.º 2
0
        public NetBigInteger Subtract(
			NetBigInteger n)
        {
            if (n.m_sign == 0)
                return this;

            if (m_sign == 0)
                return n.Negate();

            if (m_sign != n.m_sign)
                return Add(n.Negate());

            int compare = CompareNoLeadingZeroes(0, m_magnitude, 0, n.m_magnitude);
            if (compare == 0)
                return Zero;

            NetBigInteger bigun, lilun;
            if (compare < 0)
            {
                bigun = n;
                lilun = this;
            }
            else
            {
                bigun = this;
                lilun = n;
            }

            return new NetBigInteger(m_sign * compare, doSubBigLil(bigun.m_magnitude, lilun.m_magnitude), true);
        }