OpenCL specification doesn't require the pragma for the uses of `double` type when it is supported by the targets. The wording in the spec is as follows:
> 80. Only if double precision is supported. In OpenCL C 3.0 this will be indicated by the presence of the __opencl_c_fp64 feature macro.
in contrast to `half` type
> 79. Only if the cl_khr_fp16 extension is supported and has been enabled.
This is primarily due to the fact that `double` is a type from C99 spec where it can be used without any pragmas. This is to align the core OpenCL behavior with C.