Division

This describes the division algorithm used by the MPI library.

Input:    a, b; a > b
Compute:  Q, R; a = Qb + R

The input numbers are normalized so that the high-order digit of b is
at least half the radix.  This guarantees that we have a reasonable
way to guess at the digits of the quotient (this method was taken from
Knuth, vol. 2, with adaptations).

To normalize, test the high-order digit of b.  If it is less than half
the radix, multiply both a and b by d, where:

             radix - 1
	d = -----------
              bmax + 1

...where bmax is the high-order digit of b.  Otherwise, set d = 1.

Given normalize values for a and b, let the notation a[n] denote the
nth digit of a.  Let #a be the number of significant figures of a (not
including any leading zeroes).

	Let R = 0
	Let p = #a - 1

	while(p >= 0)
	  do
	    R = (R * radix) + a[p]
	    p = p - 1
	  while(R < b and p >= 0)

	  if(R < b)
	    break

	  q = (R[#R - 1] * radix) + R[#R - 2]
	  q = q / b[#b - 1]

	  T = b * q

	  while(T > L)
	    q = q - 1
	    T = T - b
	  endwhile

	  L = L - T

	  Q = (Q * radix) + q

	endwhile

At this point, Q is the quotient, and R is the normalized remainder.
To denormalize R, compute:

	R = (R / d)

At this point, you are finished.

------------------------------------------------------------------
 This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
