title: Using two uint's to represent a double, then multiply?
body: <p>I'm working with CUDA (GPGPU programming) for some research and the innate Double Precision performance suffers compares to the Single Precision performance (by a factor of 24!), due to a new hardware architecture. I've decided to try and use two uint's to represent one double. This way I could run DP calculations without a significant performance hit. </p>
  
  <p>For example, let's say we want to represent the double 10.12 using this method. </p>
  
  <p>uint real = 10, decimal = 12;</p>
  
  <p>Therefore; 'real.decimal' visually represents our double.</p>
  
  <p>Let's call this type a 'single'.</p>
  
  <p>Given:
  single a = 10.12, b = 20.24;</p>
  
  <p>What would be an efficient algorithm to multiply, divide, add, and subtract two single's?</p>
  
  <p>single c = a * b;</p>
  
  <p>Please remember, for this to work, it's not possible to do ANY DP calculations or use a data type larger than 32 bits.</p>