This code will compile fine on some systems but not on others:
float4 b = pow( a, 2.0f );
The documentation says that the arguments have to be the same type, so I assume some systems are capable of implicitly widening the float to a float4?
Other functions have more flexibility in their inputs, e.g.
So pow does look a bit inconsistent. Should this change?