I started reading the specification for OpenCL, and admit I am somewhat confused about the data types section with respect to 'double'.
based on 6.1.1, double is not a "built-in scaler data type."
based on 6.1.3, double is not an "other built-in data type."
So at this point, it seems either double is not built-in or it is not scaler.
The description for "long double" in table 6.4 in section 6.1.4, suggests that double is scaler. It is also apparent that the word double is a reserved data type.
So at this point, it seems that double is conclusively not built-in, but that perhaps a future version of OpenCL will support double.
However, continuing on with the specification, I find example code in:
"Section: 126.96.36.199 Reinterpreting Types Using Unions"
that uses "double."
So, does this example code not meet the specification?