title: Fixed point multiply/divide for 15.16 numbers
body: <p>I am looking for an algorithm to multiply and divide fixed point 15.16 numbers. </p>
  
  <p>I already have addition and subtraction. Those were easy - simple 32-bit add and subtract. With multiply and divide, I can also add many trigonometric and exponential/log functions. And I think I can deal with just multiply, as my library has a reciprocal function and I can use that to implement division: <code>a * (1/b) = a / b</code>. But a 32-bit multiply does not work as it ignores the radix point. </p>
  
  <p>I am working on a 16-bit microcontroller, so I would like to avoid anything more than 32-bit multiply, which takes about 4 cycles on my processor. It's not crucial though, I'm just trying to replace floating point math.</p>
  
  <p>I have heard I need to shift or rotate the result, but I am not sure how this would help or specifically how to shift it. Any suggestions or help appreciated!</p>