Description
The following table describes the list of built-in geometric functions.
The generic type name gentypef indicates that the function can take any of
-
float,float2,float3, orfloat4
as the type for the arguments.
The generic type name gentyped [1] indicates
that the function can take any of
-
double,double2,double3, ordouble4
as the type for the arguments.
The generic type name gentypeh [2] indicates
that the function can take any of
-
half,half2,half3, orhalf4
as the type for the arguments.
All functions taking or returning half types are supported only when
the cl_khr_ extension macro is supported.
|
For any specific use of a function with gentype* arguments the actual type
has to be the same for all arguments and the return type, unless they are
explicitly specified as an actual type.
| Function | Description |
|---|---|
float4 cross(float4 p0, float4 p1) half4 cross(half4 p0, half4 p1) |
Returns the cross product of p0.xyz and p1.xyz.
The w component of |
float dot(gentypef p0, gentypef p1) half dot(gentypeh p0, gentypeh p1) |
Compute the dot product of p0 and p1. |
float distance(gentypef p0, gentypef p1) half distance(gentypeh p0, gentypeh p1) |
Returns the distance between p0 and p1. This is calculated as length(p0 - p1). |
float length(gentypef p) half length(gentypeh p) |
Return the length of vector p, i.e., √ p.x2 + p.y 2 + … |
gentypef normalize(gentypef p) gentypeh normalize(gentypeh p) |
Returns a vector in the same direction as p but with a length of 1. |
float fast_distance(floatn p0, floatn p1) |
Returns fast_length(p0 - p1). |
float fast_length(floatn p) |
Returns the length of vector p computed as: half_sqrt(p.x2 + p.y2 + …) |
floatn fast_normalize(floatn p) |
Returns a vector in the same direction as p but with a length of 1. fast_normalize is computed as: p * half_rsqrt(p.x2 + p.y2 + …) The result shall be within 8192 ulps error from the infinitely precise result of
with the following exceptions:
|
Document Notes
For more information, see the OpenCL C Specification
This page is extracted from the OpenCL C Specification. Fixes and changes should be made to the Specification, not directly.