Many scientific computations are done in double precision floating-point (i.e. fp64). Support for fp64 varies between GPU architectures as well as GPGPU APIs. Here I just recap the capabilities of various APIs, assuming the hardware support is present:
1. CUDA: Full support for fp64 including exponentials, trigonometry etc.
2. OpenCL: Full support for fp64, similar to CUDA
3. OpenGL: An extension called gpu_shader_fp64 is available but it only supports basics like addition, multiplication and divison. Does not supportĀ exponentials, trigonometry etc.
4. DirectCompute: On Windows 7, only supports fp64 add, multiply and a few comparison operators but not divison or exponentials etc. On Windows 8, some GPUs support double precision division, reciprocal and FMA. However, afaik still no support for exponentials and trigonometry etc.?
So, if you want full fp64 support, I guess OpenCL and CUDA are the way to go currently.
you can approximate double using float HW http://hal.archives-ouvertes.fr/docs/00/06/33/56/PDF/float-float.pdf
you can approximate fp64 using fp32 operations http://hal.archives-ouvertes.fr/docs/00/06/33/56/PDF/float-float.pdf