We have released a library that contains code for negation, addition, subtraction, multiplication, division, and square root of double-double operands using a simple C-style interface.

Developers whose applications require precision beyond double precision will likely find this helpful, as double-double offers almost twice the precision of double precision.

It is available in the CUDA Registered Developer Page. The tar file also contains a simple example ( solution of a quadratic equation with different precisions)

$ ./example_dd

Solving quadratic equation with a = 1 b = -100000 c = 1

Using double precision (std. quadratic formula):

x1 = 9.99999999900e+04 a*x1**2+b*x1+c = 0.00000000000e+00

x2 = 1.00000033854e-05 a*x2**2+b*x2+c =-3.38435755864e-07

Using double-double (std. quadratic formula):

x1 = 9.99999999900e+04 a*x1**2+b*x1+c = 0.00000000000e+00

x2 = 1.00000000010e-05 a*x2**2+b*x2+c = 0.00000000000e+00

Using double precision (more robust formula):

x1 = 9.99999999900e+04 a*x1**2+b*x1+c = 0.00000000000e+00

x2 = 1.00000000010e-05 a*x2**2+b*x2+c = 0.00000000000e+00