fast_normalize(3clc)

fast_normalize3clc

Normal vector length 1.

floatn fast_normalize(floatn p);

Overview

Returns a vector in the same direction as p but with a length of 1. fast_normalize is computed as:

p * sqrt(3clc)(p.x2 + p.y2 +...)

The result shall be within 8192 ulps error from the infinitely precise result of:

if ( any(3clc)(p == 0.0f))
result = p;
else
result = p /  sqrt(3clc)(p.x2 + p.y2 +...);

with the following exceptions:

1. If the sum of squares is greater than FLT_MAX then the value of the floating-point values in the result vector are undefined.

2. If the sum of squares is less than FLT_MIN then the implementation may return back p.

3. If the device is in 'denorms are flushed to zero' mode, individual operand elements with magnitude less than sqrt(3clc)(FLT_MIN) may be flushed to zero before proceeding with the calculation.

Notes

Built-in geometric functions operate component-wise. The description is per-component. floatn is float, float2, float3, or float4 and doublen is double, double2, double3, or double4. The built-in geometric functions are implemented using the round to nearest even rounding mode.

The geometric functions can be implemented using contractions such as mad(3clc) or fma(3clc).

Specification

OpenCL Specification[1]

Notes

1.

OpenCL Specification

page 262, section 6.12.5 - Geometric Functions

Releases

5 releases since Debian 8 (Jessie); the text changed 3 times.

  1. 8–9
  2. 10
  3. 11
  4. 13

Authors

The Khronos Group

From opencl-1.2-man-doc 1.0~svn33624-5.1 in Debian 13 (Trixie). Parsed by carta from the page's man source.