Implementing base-10 floating point division

32-bitfloating point

I'm implementing floating-point arithmetic, for a micro-controller which does not support floating point numbers, in either hardware or software.
(Software being "written" in a sort of electrical diagram program.)
I've finished encoding/decoding from/to integers, adding, subtracting, and multiplication.
My "floats" are represented as C * 10^E, where:

  1. C, the coefficient, is a 32-bit signed integer in the range 100000000-999999999, or 0.
    • (Nine digits of precision, plus the special case of zero.)
  2. E, the exponent, is a 32-bit signed integer covering the whole 32-bit range.
    • (Yes, it's overkill.)

I chose round base-10 numbers to make the verification of the math easy.
My strategy for the multiplication was to split up the two numbers AaaBbbCcc and DddEeeFff into three pieces each (millions, thousands, and ones) and compute the multiplication as

(ABC * 10^Y) * (DEF * 10^Z) =
  ((AD * 10^12) +
   ((AE + BD) * 10^9) +
   ((AF + BE + CD) * 10^6) +
   ((BF + CE) * 10^3) +
   (CF * 10^0))
  * 10^Y+Z

Each * and + representing a normal multiplication or addition, and 10^N being faked with me hard-coding in a 1000, 1000000, etc.
Also note that this neither recurses or loops, and any answer cannot recurse or loop.
I've got access to integer addition, subtraction, division, multiplication, modulo, cos/sin/tan/arccos/arcsin/arctan, absolute value, and square root.

Main Question:

I can/will eventually figure out how to do division with a similar approach of splitting the coefficients into smaller numbers which will be better for 32-bit division.
I haven't done my algebra in a long time, so multiplication took me about a day and a half.
Since I presume division to be more complicated conceptually, it would be super handy if somebody on SE could do the hard math for me.
So, how do I do this?

Best Answer

The Handbook of Floating-point Arithmetic, while rather expensive, is about as comprehensive a reference as you can get on the subject. It's designed with applicative uses in mind though it may be hard to parse the formal sections of math contained there-in. However, it will give a solution set for division in both hardware and software if you can parse the content which is not particularly mathy unless you delve into the proof sections of the book.

Wikipedia also lists a number of division algorithms, most of which are covered in mind-numbing detail in the above book. The article even links a Javascript simulator to test out various algorithms.