title: double-double precision floating point as sum of two doubles
body: <p>Following <a href="http://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format#Double-double_arithmetic" rel="nofollow noreferrer">papers and source code for double-double arithmetic</a> for some time, I still can't find out how exactly a dd_real ( defined as <code>struct dd_real { double x[2];...}</code>) number is split into two doubles. Say if I initialize it with a string, <code>dd_real pi = &quot;3.14159265358979323846264338327950&quot;;</code> what will be <code>pi.x[0]</code> and <code>pi.xi[1]</code>? I need to understand it and then write a hopefully small Python function that does it.</p>
  <p>The reason I don't just want to call into the QD library is that I'd prefer to reimplement the correct split in Python so that I send my 35-digit precision constants (given as strings) as <code>double2</code> to CUDA code where it will be treated as double-double reals by the <a href="http://code.google.com/p/gpuprec/" rel="nofollow noreferrer">GQD library</a> -- the only library, it seems, to deal with extended precision calculations in CUDA. That unfortunately rules out mpmath too, on Python side.</p>