title: Emulate "double" using 2 "float"s
body: <p>I am writing a program for an embedded hardware that only supports 32-bit single-precision floating-point arithmetic. The algorithm I am implementing, however, requires a 64-bit double-precision addition and comparison. I am trying to emulate <code>double</code> datatype using a tuple of two <code>float</code>s. So a <code>double d</code> will be emulated as a <code>struct</code> containing the tuple: <code>(float d.hi, float d.low)</code>.</p>
  
  <p>The comparison should be straightforward using a lexicographic ordering. The addition however is a bit tricky because I am not sure which base should I use. Should it be <code>FLT_MAX</code>? And how can I detect a carry?</p>
  
  <p>How can this be done?</p>
  
  <hr>
  
  <p><em>Edit (Clarity):</em> I need the extra significant digits rather than the extra range.</p>