Esempio n. 1
0
        public static HugeNumber operator -(HugeNumber a, HugeNumber b)
        {
            HugeNumber num = new HugeNumber(a);

            num.Substract(b);
            return(num);
        }
Esempio n. 2
0
        public void Divide(HugeNumber num)
        {
            if (num.IsZero)
            {
                throw new System.Exception(string.Format("{0} divided by 0 or null was not allowed.", this));
            }
            if (IsZero)
            {
                return;
            }
            if (CompareAbsTo(num) < 0)
            {
                Reset();
                return;
            }
            mNegative = mNegative ^ num.mNegative;
            HugeNumber tmp = new HugeNumber(this);

            tmp.Abs();
            HugeNumber div = new HugeNumber(num);

            div.Abs();
            Reset();
            HugeNumber sum = Zero;

            while (tmp.CompareTo(div) >= 0)
            {
                int mov = tmp.mOffset - div.mOffset;
                div.MoveLeft(mov);
                if (tmp.CompareTo(div) < 0)
                {
                    mov--;
                    div.MoveRight(1);
                }
                tmp.Substract(div);
                if (tmp.CompareTo(Zero) >= 0)
                {
                    sum.SetABit(mov);
                    Add(sum);
                    div.MoveRight(mov);
                }
                else
                {
                    break;
                }
            }
        }