Variable type problem

Hello all,
I have reached a dilema in that the code I have written for a linear CPU processing application seems to require doubles or long floats to preform its asthmatic (if variables are changed to floats then some of the array entries turn to NaN). I have an NVIDIA Tesla C870 which doesn’t seem to be able to handle doubles or long floats. When I run the parallel version of my code with doubles or long floats all of the entries of the returned array are zero. (array doesn’t get changed by kernel), but when I run the code with floats I get that entries are either zero or NaN. It seems that based on the precision required by my code I need doubles, but this does not work with the C870. Do you guys have any idea of how I can increase the precision of the variables, but still have my kernels and memcopy work correctly on a C870?