physics: switched to double precision again, workaround

GCC... What the hell. It works fine and dandy with Clang, but GCC just can't do it. The code it produces is so, so, so slow. But it kinda works I guess. Anyway, managed to simplify by using ifdeffery. Clang supports OpenCL's vectors, so we can just use those instead. We can do scalar operations on them so that simplified the code quite a bit.