/// <summary> /// Divides current MPUnit by short int ui, Quotient in q, Remainder in r /// </summary> /// <param name="i"></param> /// <param name="q"></param> /// <param name="r"></param> /// <returns></returns> public static void Div(MPUnit dividend, int i, ref MPUnit q, ref MPUnit r) { if(i < 0 || i > BASE) throw new ArgumentOutOfRangeException(); MPUnit pseudodividend = new MPUnit(dividend); pseudodividend.ASL(1); MPUnit divisor = new MPUnit(i); MPUnit pseudodivisor = new MPUnit(divisor); pseudodivisor.ASL(1); Div(pseudodividend, pseudodivisor, ref q, ref r); r = MPUnit.Sub(dividend, MPUnit.Mult(q,divisor)); }