1044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/*
2291330fbaf7486a1cea33de7dd26c18e57c71391Stephen Hines * Copyright (C) 2016 The Android Open Source Project
39df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
4044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * you may not use this file except in compliance with the License.
6044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * You may obtain a copy of the License at
709aeb8ac1b0b976c2de40dd00da0c6841e4e882aJason Sams *
8044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
99df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
10044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * Unless required by applicable law or agreed to in writing, software
11044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * See the License for the specific language governing permissions and
14044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * limitations under the License.
159df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
169df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams
174a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
1822fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams
19c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet/*
2020b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * rs_math.rsh: Mathematical Constants and Functions
21c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet *
226386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * The mathematical functions below can be applied to scalars and vectors.   When applied
236386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * to vectors, the returned value is a vector of the function applied to each entry of the input.
24be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
25be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For example:
26be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * float3 a, b;
27be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * // The following call sets
28be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * //   a.x to sin(b.x),
29be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * //   a.y to sin(b.y), and
30be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * //   a.z to sin(b.z).
31be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * a = sin(b);
32be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
33be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
346386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * See Vector Math Functions for functions like distance() and length() that interpret
356386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * instead the input as a single vector in n-dimensional space.
36be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
376386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * The precision of the mathematical operations on 32 bit floats is affected by the pragmas
386386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * rs_fp_relaxed and rs_fp_full.  Under rs_fp_relaxed, subnormal values may be flushed to zero and
396386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * rounding may be done towards zero.  In comparison, rs_fp_full requires correct handling of
406386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * subnormal values, i.e. smaller than 1.17549435e-38f.  rs_fp_rull also requires round to nearest
416386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * with ties to even.
42be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
436386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * Different precision/speed tradeoffs can be achieved by using variants of the common math
446386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * functions.  Functions with a name starting with
456386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * - native_: May have custom hardware implementations with weaker precision.  Additionally,
466386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   subnormal values may be flushed to zero, rounding towards zero may be used, and NaN and
476386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   infinity input may not be handled correctly.
486386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * - half_: May perform internal computations using 16 bit floats.  Additionally, subnormal
496386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   values may be flushed to zero, and rounding towards zero may be used.
50be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
51be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
524a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet
53be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#ifndef RENDERSCRIPT_RS_MATH_RSH
54be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define RENDERSCRIPT_RS_MATH_RSH
55be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
56be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
57be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_1_PI: 1 / pi, as a 32 bit float
58be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
59be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The inverse of pi, as a 32 bit float.
60be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
61be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_1_PI 0.318309886183790671537767526745028724f
62be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
63be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
64be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_2_PI: 2 / pi, as a 32 bit float
65be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
66be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 2 divided by pi, as a 32 bit float.
67be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
68be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_2_PI 0.636619772367581343075535053490057448f
69be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
70be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
7120b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * M_2_PIl: 2 / pi, as a 32 bit float
72be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
7320b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * DEPRECATED.  Do not use.
7420b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet *
7520b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * 2 divided by pi, as a 32 bit float.
76be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
77be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_2_PIl 0.636619772367581343075535053490057448f
78be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
79be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
80be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_2_SQRTPI: 2 / sqrt(pi), as a 32 bit float
81be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
82be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 2 divided by the square root of pi, as a 32 bit float.
83be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
84be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_2_SQRTPI 1.128379167095512573896158903121545172f
85be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
86be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
87be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_E: e, as a 32 bit float
88be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
89be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The number e, the base of the natural logarithm, as a 32 bit float.
90be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
91be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_E 2.718281828459045235360287471352662498f
92be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
93be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
94be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_LN10: log_e(10), as a 32 bit float
95be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
96be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The natural logarithm of 10, as a 32 bit float.
97be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
98be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_LN10 2.302585092994045684017991454684364208f
99be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
100be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
101be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_LN2: log_e(2), as a 32 bit float
102be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
103be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The natural logarithm of 2, as a 32 bit float.
104be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
105be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_LN2 0.693147180559945309417232121458176568f
106be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
107be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
108be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_LOG10E: log_10(e), as a 32 bit float
109be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
110be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The logarithm base 10 of e, as a 32 bit float.
111be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
112be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_LOG10E 0.434294481903251827651128918916605082f
113be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
114be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
115be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_LOG2E: log_2(e), as a 32 bit float
116be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
117be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The logarithm base 2 of e, as a 32 bit float.
118be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
119be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_LOG2E 1.442695040888963407359924681001892137f
120be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
121be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
122be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_PI: pi, as a 32 bit float
123be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
124be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The constant pi, as a 32 bit float.
125be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
126be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_PI 3.141592653589793238462643383279502884f
127be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
128be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
129be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_PI_2: pi / 2, as a 32 bit float
130be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
131be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Pi divided by 2, as a 32 bit float.
132be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
133be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_PI_2 1.570796326794896619231321691639751442f
134be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
135be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
136be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_PI_4: pi / 4, as a 32 bit float
137be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
138be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Pi divided by 4, as a 32 bit float.
139be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
140be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_PI_4 0.785398163397448309615660845819875721f
141be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
142be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
143be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_SQRT1_2: 1 / sqrt(2), as a 32 bit float
144be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
145be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The inverse of the square root of 2, as a 32 bit float.
146be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
147be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_SQRT1_2 0.707106781186547524400844362104849039f
148be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
149be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
150be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * M_SQRT2: sqrt(2), as a 32 bit float
151be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
152be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The square root of 2, as a 32 bit float.
153be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
154be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define M_SQRT2 1.414213562373095048801688724209698079f
155be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
156be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
157be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * abs: Absolute value of an integer
158be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
159be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the absolute value of an integer.
160be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
161be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For floats, use fabs().
162be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
163be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar __attribute__((const, overloadable))
164be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    abs(char v);
165be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
166be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar2 __attribute__((const, overloadable))
167be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    abs(char2 v);
168be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
169be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar3 __attribute__((const, overloadable))
170be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    abs(char3 v);
171be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
172be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar4 __attribute__((const, overloadable))
173be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    abs(char4 v);
174be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
175be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort __attribute__((const, overloadable))
176be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    abs(short v);
177be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
178be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort2 __attribute__((const, overloadable))
179be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    abs(short2 v);
180be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
181be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort3 __attribute__((const, overloadable))
182be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    abs(short3 v);
183be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
184be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort4 __attribute__((const, overloadable))
185be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    abs(short4 v);
186be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
187be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint __attribute__((const, overloadable))
188be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    abs(int v);
189be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
190be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint2 __attribute__((const, overloadable))
191be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    abs(int2 v);
192be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
193be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint3 __attribute__((const, overloadable))
194be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    abs(int3 v);
195be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
196be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint4 __attribute__((const, overloadable))
197be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    abs(int4 v);
198be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
199be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
200be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * acos: Inverse cosine
201be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
202be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the inverse cosine, in radians.
203be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
204be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_acos().
205be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
206be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
207be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    acos(float v);
208be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
209be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
210be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    acos(float2 v);
211be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
212be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
213be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    acos(float3 v);
214be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
215be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
216be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    acos(float4 v);
217be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
218d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
219586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
220586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    acos(half v);
221586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
222586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
223d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
224586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
225586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    acos(half2 v);
226586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
227586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
228d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
229586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
230586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    acos(half3 v);
231586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
232586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
233d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
234586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
235586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    acos(half4 v);
236586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
237586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
238be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
239be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * acosh: Inverse hyperbolic cosine
240be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
241be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the inverse hyperbolic cosine, in radians.
242be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
243be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_acosh().
244be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
245be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
246be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    acosh(float v);
247be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
248be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
249be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    acosh(float2 v);
250be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
251be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
252be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    acosh(float3 v);
253be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
254be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
255be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    acosh(float4 v);
256be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
257d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
258586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
259586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    acosh(half v);
260586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
261586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
262d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
263586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
264586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    acosh(half2 v);
265586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
266586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
267d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
268586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
269586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    acosh(half3 v);
270586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
271586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
272d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
273586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
274586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    acosh(half4 v);
275586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
276586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
277be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
278be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * acospi: Inverse cosine divided by pi
279be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
280be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the inverse cosine in radians, divided by pi.
281be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
282be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get an inverse cosine measured in degrees, use acospi(a) * 180.f.
283be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
284be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_acospi().
285be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
286be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
287be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    acospi(float v);
288be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
289be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
290be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    acospi(float2 v);
291be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
292be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
293be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    acospi(float3 v);
294be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
295be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
296be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    acospi(float4 v);
297be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
298d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
299586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
300586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    acospi(half v);
301586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
302586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
303d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
304586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
305586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    acospi(half2 v);
306586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
307586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
308d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
309586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
310586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    acospi(half3 v);
311586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
312586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
313d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
314586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
315586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    acospi(half4 v);
316586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
317586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
318be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
319be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * asin: Inverse sine
320be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
321be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the inverse sine, in radians.
322be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
323be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_asin().
324be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
325be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
326be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    asin(float v);
327be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
328be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
329be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    asin(float2 v);
330be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
331be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
332be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    asin(float3 v);
333be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
334be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
335be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    asin(float4 v);
336be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
337d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
338586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
339586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    asin(half v);
340586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
341586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
342d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
343586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
344586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    asin(half2 v);
345586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
346586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
347d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
348586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
349586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    asin(half3 v);
350586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
351586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
352d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
353586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
354586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    asin(half4 v);
355586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
356586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
357be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
358be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * asinh: Inverse hyperbolic sine
359be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
360be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the inverse hyperbolic sine, in radians.
361be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
362be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_asinh().
363be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
364be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
365be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    asinh(float v);
366be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
367be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
368be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    asinh(float2 v);
369be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
370be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
371be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    asinh(float3 v);
372be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
373be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
374be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    asinh(float4 v);
375be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
376d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
377586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
378586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    asinh(half v);
379586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
380586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
381d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
382586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
383586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    asinh(half2 v);
384586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
385586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
386d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
387586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
388586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    asinh(half3 v);
389586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
390586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
391d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
392586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
393586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    asinh(half4 v);
394586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
395586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
396be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
397be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * asinpi: Inverse sine divided by pi
398be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
399be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the inverse sine in radians, divided by pi.
400be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
401be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get an inverse sine measured in degrees, use asinpi(a) * 180.f.
402be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
403be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_asinpi().
404be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
405be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
406be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    asinpi(float v);
407be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
408be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
409be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    asinpi(float2 v);
410be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
411be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
412be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    asinpi(float3 v);
413be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
414be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
415be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    asinpi(float4 v);
416be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
417d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
418586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
419586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    asinpi(half v);
420586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
421586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
422d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
423586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
424586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    asinpi(half2 v);
425586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
426586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
427d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
428586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
429586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    asinpi(half3 v);
430586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
431586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
432d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
433586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
434586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    asinpi(half4 v);
435586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
436586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
437be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
438be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * atan: Inverse tangent
439be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
440be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the inverse tangent, in radians.
441be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
442be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_atan().
443be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
444be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
445be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atan(float v);
446be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
447be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
448be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atan(float2 v);
449be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
450be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
451be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atan(float3 v);
452be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
453be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
454be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atan(float4 v);
455be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
456d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
457586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
458586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atan(half v);
459586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
460586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
461d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
462586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
463586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atan(half2 v);
464586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
465586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
466d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
467586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
468586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atan(half3 v);
469586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
470586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
471d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
472586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
473586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atan(half4 v);
474586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
475586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
476be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
477be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * atan2: Inverse tangent of a ratio
478be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
479be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the inverse tangent of (numerator / denominator), in radians.
480be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
481be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_atan2().
482be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
483be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
4846386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   numerator: Numerator.
4856386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   denominator: Denominator.  Can be 0.
486be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
487be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
488be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atan2(float numerator, float denominator);
489be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
490be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
491be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atan2(float2 numerator, float2 denominator);
492be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
493be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
494be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atan2(float3 numerator, float3 denominator);
495be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
496be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
497be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atan2(float4 numerator, float4 denominator);
498be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
499d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
500586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
501586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atan2(half numerator, half denominator);
502586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
503586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
504d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
505586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
506586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atan2(half2 numerator, half2 denominator);
507586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
508586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
509d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
510586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
511586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atan2(half3 numerator, half3 denominator);
512586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
513586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
514d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
515586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
516586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atan2(half4 numerator, half4 denominator);
517586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
518586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
519be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
520be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * atan2pi: Inverse tangent of a ratio, divided by pi
521be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
522be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the inverse tangent of (numerator / denominator), in radians, divided by pi.
523be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
524be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get an inverse tangent measured in degrees, use atan2pi(n, d) * 180.f.
525be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
526be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_atan2pi().
527be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
528be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
5296386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   numerator: Numerator.
5306386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   denominator: Denominator.  Can be 0.
531be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
532be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
533be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atan2pi(float numerator, float denominator);
534be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
535be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
536be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atan2pi(float2 numerator, float2 denominator);
537be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
538be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
539be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atan2pi(float3 numerator, float3 denominator);
540be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
541be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
542be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atan2pi(float4 numerator, float4 denominator);
543be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
544d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
545586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
546586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atan2pi(half numerator, half denominator);
547586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
548586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
549d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
550586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
551586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atan2pi(half2 numerator, half2 denominator);
552586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
553586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
554d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
555586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
556586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atan2pi(half3 numerator, half3 denominator);
557586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
558586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
559d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
560586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
561586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atan2pi(half4 numerator, half4 denominator);
562586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
563586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
564be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
565be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * atanh: Inverse hyperbolic tangent
566be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
567be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the inverse hyperbolic tangent, in radians.
568be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
569be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_atanh().
570be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
571be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
572be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atanh(float v);
573be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
574be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
575be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atanh(float2 v);
576be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
577be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
578be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atanh(float3 v);
579be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
580be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
581be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atanh(float4 v);
582be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
583d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
584586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
585586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atanh(half v);
586586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
587586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
588d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
589586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
590586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atanh(half2 v);
591586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
592586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
593d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
594586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
595586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atanh(half3 v);
596586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
597586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
598d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
599586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
600586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atanh(half4 v);
601586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
602586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
603be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
604be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * atanpi: Inverse tangent divided by pi
605be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
606be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the inverse tangent in radians, divided by pi.
607be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
608be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get an inverse tangent measured in degrees, use atanpi(a) * 180.f.
609be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
610be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_atanpi().
611be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
612be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
613be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atanpi(float v);
614be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
615be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
616be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atanpi(float2 v);
617be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
618be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
619be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atanpi(float3 v);
620be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
621be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
622be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    atanpi(float4 v);
623be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
624d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
625586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
626586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atanpi(half v);
627586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
628586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
629d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
630586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
631586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atanpi(half2 v);
632586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
633586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
634d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
635586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
636586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atanpi(half3 v);
637586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
638586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
639d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
640586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
641586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    atanpi(half4 v);
642586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
643586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
644be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
645be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * cbrt: Cube root
646be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
647be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the cube root.
648be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
649be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_cbrt().
650be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
651be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
652be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cbrt(float v);
653be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
654be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
655be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cbrt(float2 v);
656be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
657be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
658be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cbrt(float3 v);
659be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
660be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
661be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cbrt(float4 v);
662be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
663d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
664586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
665586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cbrt(half v);
666586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
667586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
668d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
669586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
670586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cbrt(half2 v);
671586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
672586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
673d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
674586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
675586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cbrt(half3 v);
676586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
677586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
678d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
679586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
680586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cbrt(half4 v);
681586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
682586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
683be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
684be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * ceil: Smallest integer not less than a value
685be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
686be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the smallest integer not less than a value.
687be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
688be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For example, ceil(1.2f) returns 2.f, and ceil(-1.2f) returns -1.f.
689be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
690be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also floor().
691be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
692be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
693be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ceil(float v);
694be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
695be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
696be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ceil(float2 v);
697be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
698be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
699be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ceil(float3 v);
700be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
701be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
702be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ceil(float4 v);
703be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
704d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
705586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
706586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    ceil(half v);
707586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
708586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
709d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
710586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
711586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    ceil(half2 v);
712586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
713586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
714d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
715586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
716586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    ceil(half3 v);
717586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
718586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
719d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
720586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
721586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    ceil(half4 v);
722586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
723586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
724be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
725be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * clamp: Restrain a value to a range
726be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
727be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Clamps a value to a specified high and low bound.  clamp() returns min_value
728be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * if value < min_value, max_value if value > max_value, otherwise value.
729be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
730be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * There are two variants of clamp: one where the min and max are scalars applied
731be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * to all entries of the value, the other where the min and max are also vectors.
732be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
733be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * If min_value is greater than max_value, the results are undefined.
734be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
735be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
7364a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   value: Value to be clamped.
7374a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   min_value: Lower bound, a scalar or matching vector.
7384a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   max_value: High bound, must match the type of low.
739be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
740be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
741be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(float value, float min_value, float max_value);
742be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
743be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
744be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(float2 value, float2 min_value, float2 max_value);
745be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
746be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
747be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(float3 value, float3 min_value, float3 max_value);
748be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
749be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
750be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(float4 value, float4 min_value, float4 max_value);
751be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
752be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
753be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(float2 value, float min_value, float max_value);
754be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
755be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
756be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(float3 value, float min_value, float max_value);
757be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
758be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
759be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(float4 value, float min_value, float max_value);
760be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
761be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
762be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char __attribute__((const, overloadable))
763be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(char value, char min_value, char max_value);
764be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
765be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
766be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
767be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char2 __attribute__((const, overloadable))
768be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(char2 value, char2 min_value, char2 max_value);
769be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
770be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
771be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
772be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char3 __attribute__((const, overloadable))
773be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(char3 value, char3 min_value, char3 max_value);
774be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
775be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
776be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
777be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char4 __attribute__((const, overloadable))
778be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(char4 value, char4 min_value, char4 max_value);
779be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
780be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
781be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
782be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar __attribute__((const, overloadable))
783be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uchar value, uchar min_value, uchar max_value);
784be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
785be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
786be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
787be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar2 __attribute__((const, overloadable))
788be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uchar2 value, uchar2 min_value, uchar2 max_value);
789be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
790be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
791be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
792be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar3 __attribute__((const, overloadable))
793be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uchar3 value, uchar3 min_value, uchar3 max_value);
794be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
795be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
796be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
797be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar4 __attribute__((const, overloadable))
798be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uchar4 value, uchar4 min_value, uchar4 max_value);
799be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
800be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
801be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
802be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short __attribute__((const, overloadable))
803be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(short value, short min_value, short max_value);
804be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
805be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
806be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
807be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short2 __attribute__((const, overloadable))
808be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(short2 value, short2 min_value, short2 max_value);
809be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
810be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
811be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
812be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short3 __attribute__((const, overloadable))
813be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(short3 value, short3 min_value, short3 max_value);
814be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
815be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
816be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
817be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short4 __attribute__((const, overloadable))
818be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(short4 value, short4 min_value, short4 max_value);
819be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
820be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
821be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
822be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort __attribute__((const, overloadable))
823be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ushort value, ushort min_value, ushort max_value);
824be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
825be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
826be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
827be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort2 __attribute__((const, overloadable))
828be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ushort2 value, ushort2 min_value, ushort2 max_value);
829be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
830be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
831be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
832be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort3 __attribute__((const, overloadable))
833be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ushort3 value, ushort3 min_value, ushort3 max_value);
834be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
835be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
836be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
837be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort4 __attribute__((const, overloadable))
838be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ushort4 value, ushort4 min_value, ushort4 max_value);
839be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
840be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
841be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
842be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int __attribute__((const, overloadable))
843be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(int value, int min_value, int max_value);
844be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
845be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
846be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
847be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int2 __attribute__((const, overloadable))
848be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(int2 value, int2 min_value, int2 max_value);
849be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
850be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
851be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
852be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int3 __attribute__((const, overloadable))
853be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(int3 value, int3 min_value, int3 max_value);
854be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
855be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
856be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
857be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int4 __attribute__((const, overloadable))
858be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(int4 value, int4 min_value, int4 max_value);
859be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
860be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
861be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
862be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint __attribute__((const, overloadable))
863be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uint value, uint min_value, uint max_value);
864be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
865be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
866be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
867be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint2 __attribute__((const, overloadable))
868be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uint2 value, uint2 min_value, uint2 max_value);
869be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
870be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
871be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
872be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint3 __attribute__((const, overloadable))
873be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uint3 value, uint3 min_value, uint3 max_value);
874be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
875be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
876be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
877be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint4 __attribute__((const, overloadable))
878be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uint4 value, uint4 min_value, uint4 max_value);
879be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
880be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
881be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
882be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long __attribute__((const, overloadable))
883be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(long value, long min_value, long max_value);
884be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
885be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
886be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
887be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long2 __attribute__((const, overloadable))
888be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(long2 value, long2 min_value, long2 max_value);
889be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
890be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
891be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
892be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long3 __attribute__((const, overloadable))
893be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(long3 value, long3 min_value, long3 max_value);
894be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
895be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
896be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
897be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long4 __attribute__((const, overloadable))
898be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(long4 value, long4 min_value, long4 max_value);
899be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
900be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
901be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
902be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong __attribute__((const, overloadable))
903be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ulong value, ulong min_value, ulong max_value);
904be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
905be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
906be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
907be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong2 __attribute__((const, overloadable))
908be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ulong2 value, ulong2 min_value, ulong2 max_value);
909be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
910be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
911be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
912be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong3 __attribute__((const, overloadable))
913be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ulong3 value, ulong3 min_value, ulong3 max_value);
914be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
915be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
916be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
917be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong4 __attribute__((const, overloadable))
918be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ulong4 value, ulong4 min_value, ulong4 max_value);
919be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
920be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
921be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
922be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char2 __attribute__((const, overloadable))
923be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(char2 value, char min_value, char max_value);
924be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
925be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
926be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
927be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char3 __attribute__((const, overloadable))
928be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(char3 value, char min_value, char max_value);
929be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
930be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
931be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
932be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char4 __attribute__((const, overloadable))
933be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(char4 value, char min_value, char max_value);
934be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
935be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
936be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
937be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar2 __attribute__((const, overloadable))
938be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uchar2 value, uchar min_value, uchar max_value);
939be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
940be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
941be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
942be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar3 __attribute__((const, overloadable))
943be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uchar3 value, uchar min_value, uchar max_value);
944be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
945be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
946be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
947be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar4 __attribute__((const, overloadable))
948be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uchar4 value, uchar min_value, uchar max_value);
949be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
950be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
951be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
952be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short2 __attribute__((const, overloadable))
953be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(short2 value, short min_value, short max_value);
954be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
955be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
956be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
957be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short3 __attribute__((const, overloadable))
958be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(short3 value, short min_value, short max_value);
959be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
960be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
961be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
962be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short4 __attribute__((const, overloadable))
963be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(short4 value, short min_value, short max_value);
964be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
965be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
966be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
967be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort2 __attribute__((const, overloadable))
968be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ushort2 value, ushort min_value, ushort max_value);
969be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
970be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
971be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
972be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort3 __attribute__((const, overloadable))
973be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ushort3 value, ushort min_value, ushort max_value);
974be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
975be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
976be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
977be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort4 __attribute__((const, overloadable))
978be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ushort4 value, ushort min_value, ushort max_value);
979be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
980be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
981be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
982be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int2 __attribute__((const, overloadable))
983be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(int2 value, int min_value, int max_value);
984be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
985be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
986be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
987be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int3 __attribute__((const, overloadable))
988be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(int3 value, int min_value, int max_value);
989be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
990be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
991be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
992be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int4 __attribute__((const, overloadable))
993be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(int4 value, int min_value, int max_value);
994be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
995be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
996be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
997be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint2 __attribute__((const, overloadable))
998be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uint2 value, uint min_value, uint max_value);
999be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
1000be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1001be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
1002be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint3 __attribute__((const, overloadable))
1003be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uint3 value, uint min_value, uint max_value);
1004be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
1005be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1006be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
1007be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint4 __attribute__((const, overloadable))
1008be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(uint4 value, uint min_value, uint max_value);
1009be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
1010be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1011be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
1012be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long2 __attribute__((const, overloadable))
1013be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(long2 value, long min_value, long max_value);
1014be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
1015be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1016be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
1017be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long3 __attribute__((const, overloadable))
1018be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(long3 value, long min_value, long max_value);
1019be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
1020be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1021be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
1022be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long4 __attribute__((const, overloadable))
1023be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(long4 value, long min_value, long max_value);
1024be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
1025be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1026be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
1027be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong2 __attribute__((const, overloadable))
1028be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ulong2 value, ulong min_value, ulong max_value);
1029be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
1030be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1031be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
1032be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong3 __attribute__((const, overloadable))
1033be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ulong3 value, ulong min_value, ulong max_value);
1034be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
1035be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1036be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 19))
1037be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong4 __attribute__((const, overloadable))
1038be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clamp(ulong4 value, ulong min_value, ulong max_value);
1039be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
1040be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1041d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1042586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1043586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    clamp(half value, half min_value, half max_value);
1044586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1045586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1046d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1047586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1048586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    clamp(half2 value, half2 min_value, half2 max_value);
1049586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1050586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1051d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1052586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1053586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    clamp(half3 value, half3 min_value, half3 max_value);
1054586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1055586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1056d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1057586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1058586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    clamp(half4 value, half4 min_value, half4 max_value);
1059586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1060586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1061d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1062586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1063586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    clamp(half2 value, half min_value, half max_value);
1064586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1065586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1066d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1067586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1068586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    clamp(half3 value, half min_value, half max_value);
1069586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1070586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1071d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1072586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1073586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    clamp(half4 value, half min_value, half max_value);
1074586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1075586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1076be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1077be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * clz: Number of leading 0 bits
1078be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1079be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the number of leading 0-bits in a value.
1080be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1081be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For example, clz((char)0x03) returns 6.
1082be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1083be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char __attribute__((const, overloadable))
1084be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(char value);
1085be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1086be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char2 __attribute__((const, overloadable))
1087be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(char2 value);
1088be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1089be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char3 __attribute__((const, overloadable))
1090be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(char3 value);
1091be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1092be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char4 __attribute__((const, overloadable))
1093be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(char4 value);
1094be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1095be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar __attribute__((const, overloadable))
1096be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(uchar value);
1097be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1098be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar2 __attribute__((const, overloadable))
1099be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(uchar2 value);
1100be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1101be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar3 __attribute__((const, overloadable))
1102be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(uchar3 value);
1103be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1104be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar4 __attribute__((const, overloadable))
1105be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(uchar4 value);
1106be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1107be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short __attribute__((const, overloadable))
1108be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(short value);
1109be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1110be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short2 __attribute__((const, overloadable))
1111be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(short2 value);
1112be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1113be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short3 __attribute__((const, overloadable))
1114be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(short3 value);
1115be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1116be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short4 __attribute__((const, overloadable))
1117be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(short4 value);
1118be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1119be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort __attribute__((const, overloadable))
1120be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(ushort value);
1121be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1122be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort2 __attribute__((const, overloadable))
1123be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(ushort2 value);
1124be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1125be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort3 __attribute__((const, overloadable))
1126be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(ushort3 value);
1127be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1128be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort4 __attribute__((const, overloadable))
1129be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(ushort4 value);
1130be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1131be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int __attribute__((const, overloadable))
1132be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(int value);
1133be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1134be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int2 __attribute__((const, overloadable))
1135be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(int2 value);
1136be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1137be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int3 __attribute__((const, overloadable))
1138be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(int3 value);
1139be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1140be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int4 __attribute__((const, overloadable))
1141be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(int4 value);
1142be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1143be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint __attribute__((const, overloadable))
1144be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(uint value);
1145be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1146be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint2 __attribute__((const, overloadable))
1147be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(uint2 value);
1148be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1149be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint3 __attribute__((const, overloadable))
1150be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(uint3 value);
1151be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1152be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint4 __attribute__((const, overloadable))
1153be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    clz(uint4 value);
1154be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1155be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1156be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * copysign: Copies the sign of a number to another
1157be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1158be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Copies the sign from sign_value to magnitude_value.
1159be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1160be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The value returned is either magnitude_value or -magnitude_value.
1161be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1162be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For example, copysign(4.0f, -2.7f) returns -4.0f and copysign(-4.0f, 2.7f) returns 4.0f.
1163be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1164be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1165be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    copysign(float magnitude_value, float sign_value);
1166be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1167be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1168be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    copysign(float2 magnitude_value, float2 sign_value);
1169be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1170be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1171be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    copysign(float3 magnitude_value, float3 sign_value);
1172be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1173be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1174be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    copysign(float4 magnitude_value, float4 sign_value);
1175be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1176d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1177f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1178f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar    copysign(half magnitude_value, half sign_value);
1179f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar#endif
1180f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar
1181d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1182f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1183f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar    copysign(half2 magnitude_value, half2 sign_value);
1184f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar#endif
1185f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar
1186d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1187f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1188f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar    copysign(half3 magnitude_value, half3 sign_value);
1189f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar#endif
1190f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar
1191d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1192f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1193f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar    copysign(half4 magnitude_value, half4 sign_value);
1194f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar#endif
1195f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar
1196be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1197be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * cos: Cosine
1198be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1199be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the cosine of an angle measured in radians.
1200be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1201be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_cos().
1202be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1203be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1204be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cos(float v);
1205be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1206be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1207be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cos(float2 v);
1208be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1209be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1210be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cos(float3 v);
1211be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1212be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1213be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cos(float4 v);
1214be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1215d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1216586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1217586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cos(half v);
1218586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1219586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1220d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1221586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1222586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cos(half2 v);
1223586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1224586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1225d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1226586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1227586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cos(half3 v);
1228586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1229586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1230d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1231586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1232586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cos(half4 v);
1233586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1234586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1235be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1236be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * cosh: Hypebolic cosine
1237be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1238be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the hypebolic cosine of v, where v is measured in radians.
1239be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1240be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_cosh().
1241be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1242be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1243be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cosh(float v);
1244be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1245be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1246be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cosh(float2 v);
1247be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1248be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1249be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cosh(float3 v);
1250be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1251be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1252be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cosh(float4 v);
1253be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1254d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1255586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1256586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cosh(half v);
1257586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1258586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1259d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1260586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1261586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cosh(half2 v);
1262586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1263586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1264d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1265586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1266586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cosh(half3 v);
1267586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1268586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1269d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1270586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1271586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cosh(half4 v);
1272586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1273586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1274be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1275be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * cospi: Cosine of a number multiplied by pi
1276be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1277be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the cosine of (v * pi), where (v * pi) is measured in radians.
1278be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1279be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get the cosine of a value measured in degrees, call cospi(v / 180.f).
1280be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1281be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_cospi().
1282be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1283be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1284be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cospi(float v);
1285be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1286be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1287be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cospi(float2 v);
1288be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1289be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1290be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cospi(float3 v);
1291be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1292be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1293be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    cospi(float4 v);
1294be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1295d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1296586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1297586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cospi(half v);
1298586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1299586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1300d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1301586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1302586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cospi(half2 v);
1303586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1304586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1305d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1306586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1307586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cospi(half3 v);
1308586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1309586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1310d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1311586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1312586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    cospi(half4 v);
1313586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1314586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1315be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1316be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * degrees: Converts radians into degrees
1317be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1318be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Converts from radians to degrees.
1319be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1320be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1321be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    degrees(float v);
1322be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1323be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1324be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    degrees(float2 v);
1325be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1326be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1327be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    degrees(float3 v);
1328be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1329be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1330be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    degrees(float4 v);
1331be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1332d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1333586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1334586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    degrees(half v);
1335586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1336586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1337d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1338586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1339586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    degrees(half2 v);
1340586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1341586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1342d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1343586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1344586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    degrees(half3 v);
1345586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1346586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1347d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1348586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1349586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    degrees(half4 v);
1350586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1351586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1352be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1353be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * erf: Mathematical error function
1354be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1355be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the error function.
1356be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1357be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1358be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    erf(float v);
1359be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1360be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1361be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    erf(float2 v);
1362be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1363be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1364be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    erf(float3 v);
1365be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1366be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1367be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    erf(float4 v);
1368be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1369d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1370586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1371586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    erf(half v);
1372586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1373586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1374d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1375586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1376586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    erf(half2 v);
1377586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1378586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1379d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1380586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1381586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    erf(half3 v);
1382586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1383586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1384d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1385586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1386586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    erf(half4 v);
1387586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1388586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1389be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1390be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * erfc: Mathematical complementary error function
1391be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1392be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the complementary error function.
1393be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1394be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1395be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    erfc(float v);
1396be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1397be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1398be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    erfc(float2 v);
1399be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1400be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1401be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    erfc(float3 v);
1402be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1403be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1404be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    erfc(float4 v);
1405be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1406d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1407586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1408586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    erfc(half v);
1409586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1410586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1411d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1412586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1413586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    erfc(half2 v);
1414586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1415586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1416d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1417586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1418586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    erfc(half3 v);
1419586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1420586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1421d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1422586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1423586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    erfc(half4 v);
1424586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1425586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1426be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1427be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * exp: e raised to a number
1428be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1429be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns e raised to v, i.e. e ^ v.
1430be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1431be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_exp().
1432be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1433be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1434be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    exp(float v);
1435be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1436be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1437be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    exp(float2 v);
1438be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1439be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1440be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    exp(float3 v);
1441be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1442be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1443be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    exp(float4 v);
1444be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1445d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1446586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1447586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    exp(half v);
1448586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1449586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1450d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1451586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1452586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    exp(half2 v);
1453586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1454586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1455d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1456586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1457586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    exp(half3 v);
1458586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1459586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1460d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1461586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1462586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    exp(half4 v);
1463586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1464586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1465be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1466be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * exp10: 10 raised to a number
1467be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1468be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns 10 raised to v, i.e. 10.f ^ v.
1469be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1470be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_exp10().
1471be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1472be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1473be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    exp10(float v);
1474be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1475be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1476be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    exp10(float2 v);
1477be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1478be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1479be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    exp10(float3 v);
1480be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1481be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1482be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    exp10(float4 v);
1483be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1484d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1485586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1486586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    exp10(half v);
1487586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1488586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1489d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1490586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1491586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    exp10(half2 v);
1492586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1493586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1494d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1495586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1496586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    exp10(half3 v);
1497586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1498586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1499d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1500586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1501586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    exp10(half4 v);
1502586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1503586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1504be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1505be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * exp2: 2 raised to a number
1506be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1507be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns 2 raised to v, i.e. 2.f ^ v.
1508be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1509be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_exp2().
1510be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1511be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1512be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    exp2(float v);
1513be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1514be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1515be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    exp2(float2 v);
1516be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1517be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1518be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    exp2(float3 v);
1519be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1520be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1521be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    exp2(float4 v);
1522be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1523d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1524586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1525586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    exp2(half v);
1526586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1527586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1528d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1529586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1530586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    exp2(half2 v);
1531586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1532586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1533d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1534586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1535586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    exp2(half3 v);
1536586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1537586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1538d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1539586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1540586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    exp2(half4 v);
1541586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1542586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1543be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1544be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * expm1: e raised to a number minus one
1545be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1546be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns e raised to v minus 1, i.e. (e ^ v) - 1.
1547be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1548be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_expm1().
1549be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1550be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1551be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    expm1(float v);
1552be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1553be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1554be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    expm1(float2 v);
1555be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1556be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1557be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    expm1(float3 v);
1558be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1559be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1560be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    expm1(float4 v);
1561be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1562d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1563586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1564586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    expm1(half v);
1565586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1566586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1567d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1568586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1569586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    expm1(half2 v);
1570586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1571586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1572d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1573586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1574586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    expm1(half3 v);
1575586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1576586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1577d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1578586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1579586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    expm1(half4 v);
1580586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1581586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1582be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1583be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fabs: Absolute value of a float
1584be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1585be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the absolute value of the float v.
1586be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1587be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For integers, use abs().
1588be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1589be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1590be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fabs(float v);
1591be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1592be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1593be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fabs(float2 v);
1594be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1595be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1596be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fabs(float3 v);
1597be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1598be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1599be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fabs(float4 v);
1600be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1601d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1602586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1603586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fabs(half v);
1604586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1605586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1606d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1607586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1608586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fabs(half2 v);
1609586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1610586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1611d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1612586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1613586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fabs(half3 v);
1614586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1615586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1616d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1617586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1618586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fabs(half4 v);
1619586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1620586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1621be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1622be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fdim: Positive difference between two values
1623be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1624be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the positive difference between two values.
1625be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1626be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * If a > b, returns (a - b) otherwise returns 0f.
1627be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1628be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1629be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fdim(float a, float b);
1630be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1631be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1632be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fdim(float2 a, float2 b);
1633be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1634be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1635be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fdim(float3 a, float3 b);
1636be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1637be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1638be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fdim(float4 a, float4 b);
1639be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1640d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1641586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1642586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fdim(half a, half b);
1643586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1644586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1645d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1646586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1647586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fdim(half2 a, half2 b);
1648586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1649586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1650d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1651586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1652586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fdim(half3 a, half3 b);
1653586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1654586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1655d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1656586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1657586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fdim(half4 a, half4 b);
1658586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1659586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1660be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1661be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * floor: Smallest integer not greater than a value
1662be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1663be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the smallest integer not greater than a value.
1664be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1665be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For example, floor(1.2f) returns 1.f, and floor(-1.2f) returns -2.f.
1666be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1667be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also ceil().
1668be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1669be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1670be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    floor(float v);
1671be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1672be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1673be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    floor(float2 v);
1674be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1675be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1676be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    floor(float3 v);
1677be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1678be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1679be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    floor(float4 v);
1680be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1681d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1682586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1683586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    floor(half v);
1684586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1685586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1686d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1687586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1688586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    floor(half2 v);
1689586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1690586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1691d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1692586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1693586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    floor(half3 v);
1694586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1695586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1696d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1697586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1698586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    floor(half4 v);
1699586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1700586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1701be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1702be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fma: Multiply and add
1703be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1704be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Multiply and add.  Returns (multiplicand1 * multiplicand2) + offset.
1705be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
17066386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * This function is similar to mad().  fma() retains full precision of the multiplied result
17076386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * and rounds only after the addition.  mad() rounds after the multiplication and the addition.
17086386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * This extra precision is not guaranteed in rs_fp_relaxed mode.
1709be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1710be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1711be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fma(float multiplicand1, float multiplicand2, float offset);
1712be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1713be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1714be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fma(float2 multiplicand1, float2 multiplicand2, float2 offset);
1715be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1716be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1717be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fma(float3 multiplicand1, float3 multiplicand2, float3 offset);
1718be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1719be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1720be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fma(float4 multiplicand1, float4 multiplicand2, float4 offset);
1721be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1722d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1723586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1724586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fma(half multiplicand1, half multiplicand2, half offset);
1725586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1726586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1727d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1728586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1729586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fma(half2 multiplicand1, half2 multiplicand2, half2 offset);
1730586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1731586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1732d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1733586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1734586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fma(half3 multiplicand1, half3 multiplicand2, half3 offset);
1735586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1736586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1737d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1738586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1739586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fma(half4 multiplicand1, half4 multiplicand2, half4 offset);
1740586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1741586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1742be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1743be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fmax: Maximum of two floats
1744be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1745be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the maximum of a and b, i.e. (a < b ? b : a).
1746be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1747be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The max() function returns identical results but can be applied to more data types.
1748be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1749be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1750be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmax(float a, float b);
1751be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1752be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1753be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmax(float2 a, float2 b);
1754be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1755be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1756be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmax(float3 a, float3 b);
1757be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1758be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1759be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmax(float4 a, float4 b);
1760be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1761d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1762586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1763586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmax(half a, half b);
1764586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1765586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1766d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1767586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1768586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmax(half2 a, half2 b);
1769586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1770586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1771d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1772586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1773586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmax(half3 a, half3 b);
1774586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1775586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1776d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1777586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1778586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmax(half4 a, half4 b);
1779586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1780586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1781be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1782be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmax(float2 a, float b);
1783be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1784be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1785be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmax(float3 a, float b);
1786be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1787be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1788be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmax(float4 a, float b);
1789be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1790d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1791586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1792586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmax(half2 a, half b);
1793586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1794586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1795d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1796586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1797586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmax(half3 a, half b);
1798586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1799586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1800d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1801586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1802586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmax(half4 a, half b);
1803586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1804586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1805be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1806be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fmin: Minimum of two floats
1807be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1808be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the minimum of a and b, i.e. (a > b ? b : a).
1809be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1810be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The min() function returns identical results but can be applied to more data types.
1811be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1812be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1813be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmin(float a, float b);
1814be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1815be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1816be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmin(float2 a, float2 b);
1817be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1818be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1819be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmin(float3 a, float3 b);
1820be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1821be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1822be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmin(float4 a, float4 b);
1823be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1824d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1825586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1826586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmin(half a, half b);
1827586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1828586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1829d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1830586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1831586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmin(half2 a, half2 b);
1832586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1833586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1834d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1835586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1836586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmin(half3 a, half3 b);
1837586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1838586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1839d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1840586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1841586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmin(half4 a, half4 b);
1842586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1843586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1844be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1845be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmin(float2 a, float b);
1846be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1847be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1848be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmin(float3 a, float b);
1849be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1850be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1851be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmin(float4 a, float b);
1852be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1853d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1854586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1855586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmin(half2 a, half b);
1856586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1857586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1858d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1859586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1860586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmin(half3 a, half b);
1861586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1862586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1863d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1864586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1865586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmin(half4 a, half b);
1866586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1867586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1868586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar/*
1869586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar * fmod: Modulo
1870586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar *
1871586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar * Returns the remainder of (numerator / denominator), where the quotient is rounded towards zero.
1872be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1873be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The function remainder() is similar but rounds toward the closest interger.
1874be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For example, fmod(-3.8f, 2.f) returns -1.8f (-3.8f - -1.f * 2.f)
1875be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * while remainder(-3.8f, 2.f) returns 0.2f (-3.8f - -2.f * 2.f).
1876be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1877be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
1878be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmod(float numerator, float denominator);
1879be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1880be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
1881be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmod(float2 numerator, float2 denominator);
1882be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1883be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
1884be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmod(float3 numerator, float3 denominator);
1885be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1886be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
1887be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fmod(float4 numerator, float4 denominator);
1888be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1889d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1890586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
1891586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmod(half numerator, half denominator);
1892586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1893586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1894d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1895586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
1896586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmod(half2 numerator, half2 denominator);
1897586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1898586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1899d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1900586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
1901586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmod(half3 numerator, half3 denominator);
1902586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1903586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1904d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
1905586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
1906586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    fmod(half4 numerator, half4 denominator);
1907586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
1908586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
1909be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
1910be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fract: Positive fractional part
1911be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1912be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the positive fractional part of v, i.e. v - floor(v).
1913be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1914be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For example, fract(1.3f, &val) returns 0.3f and sets val to 1.f.
1915be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fract(-1.3f, &val) returns 0.7f and sets val to -2.f.
1916be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
1917be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
19184a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   v: Input value.
19194a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   floor: If floor is not null, *floor will be set to the floor of v.
1920be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
1921be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((overloadable))
1922be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fract(float v, float* floor);
1923be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1924be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((overloadable))
1925be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fract(float2 v, float2* floor);
1926be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1927be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((overloadable))
1928be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fract(float3 v, float3* floor);
1929be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1930be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((overloadable))
1931be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fract(float4 v, float4* floor);
1932be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
19339cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#if !defined(RS_VERSION) || (RS_VERSION <= 23)
1934be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline float __attribute__((const, overloadable))
1935be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fract(float v) {
1936be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    float unused;
1937be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return fract(v, &unused);
1938be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
19399cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#endif
1940be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
19419cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#if !defined(RS_VERSION) || (RS_VERSION <= 23)
1942be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline float2 __attribute__((const, overloadable))
1943be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fract(float2 v) {
1944be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    float2 unused;
1945be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return fract(v, &unused);
1946be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
19479cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#endif
1948be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
19499cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#if !defined(RS_VERSION) || (RS_VERSION <= 23)
1950be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline float3 __attribute__((const, overloadable))
1951be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fract(float3 v) {
1952be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    float3 unused;
1953be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return fract(v, &unused);
1954be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
19559cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#endif
1956be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
19579cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#if !defined(RS_VERSION) || (RS_VERSION <= 23)
1958be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline float4 __attribute__((const, overloadable))
1959be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    fract(float4 v) {
1960be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    float4 unused;
1961be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return fract(v, &unused);
1962be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
19639cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#endif
19649cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham
19659cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#if (defined(RS_VERSION) && (RS_VERSION >= 24))
19669cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckhamextern float __attribute__((overloadable))
19679cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham    fract(float v);
19689cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#endif
19699cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham
19709cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#if (defined(RS_VERSION) && (RS_VERSION >= 24))
19719cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckhamextern float2 __attribute__((overloadable))
19729cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham    fract(float2 v);
19739cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#endif
19749cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham
19759cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#if (defined(RS_VERSION) && (RS_VERSION >= 24))
19769cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckhamextern float3 __attribute__((overloadable))
19779cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham    fract(float3 v);
19789cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#endif
19799cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham
19809cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#if (defined(RS_VERSION) && (RS_VERSION >= 24))
19819cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckhamextern float4 __attribute__((overloadable))
19829cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham    fract(float4 v);
19839cbc99ba45126a6a30ba13fc6d4e75e51ca14ea7Verena Beckham#endif
1984be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
1985d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
19868b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half __attribute__((overloadable))
19878b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    fract(half v, half* floor);
19888b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
19898b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
1990d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
19918b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half2 __attribute__((overloadable))
19928b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    fract(half2 v, half2* floor);
19938b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
19948b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
1995d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
19968b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half3 __attribute__((overloadable))
19978b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    fract(half3 v, half3* floor);
19988b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
19998b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
2000d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
20018b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half4 __attribute__((overloadable))
20028b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    fract(half4 v, half4* floor);
20038b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
20048b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
2005d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
20068b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half __attribute__((overloadable))
20078b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    fract(half v);
20088b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
20098b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
2010d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
20118b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half2 __attribute__((overloadable))
20128b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    fract(half2 v);
20138b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
20148b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
2015d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
20168b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half3 __attribute__((overloadable))
20178b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    fract(half3 v);
20188b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
20198b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
2020d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
20218b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half4 __attribute__((overloadable))
20228b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    fract(half4 v);
20238b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
20248b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
2025be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2026be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * frexp: Binary mantissa and exponent
2027be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2028be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the binary mantissa and exponent of v, i.e. v == mantissa * 2 ^ exponent.
2029be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2030be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The mantissa is always between 0.5 (inclusive) and 1.0 (exclusive).
2031be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2032be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See ldexp() for the reverse operation.  See also logb() and ilogb().
2033be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2034be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
20354a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   v: Input value.
20364a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   exponent: If exponent is not null, *exponent will be set to the exponent of v.
2037be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2038be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((overloadable))
2039be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    frexp(float v, int* exponent);
2040be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2041be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((overloadable))
2042be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    frexp(float2 v, int2* exponent);
2043be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2044be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((overloadable))
2045be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    frexp(float3 v, int3* exponent);
2046be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2047be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((overloadable))
2048be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    frexp(float4 v, int4* exponent);
2049be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2050d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
20518b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half __attribute__((overloadable))
20528b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    frexp(half v, int* exponent);
20538b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
20548b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
2055d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
20568b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half2 __attribute__((overloadable))
20578b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    frexp(half2 v, int2* exponent);
20588b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
20598b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
2060d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
20618b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half3 __attribute__((overloadable))
20628b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    frexp(half3 v, int3* exponent);
20638b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
20648b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
2065d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
20668b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half4 __attribute__((overloadable))
20678b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    frexp(half4 v, int4* exponent);
20688b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
20698b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
2070be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2071be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * half_recip: Reciprocal computed to 16 bit precision
2072be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2073be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate reciprocal of a value.
2074be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2075be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The precision is that of a 16 bit floating point value.
2076be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2077be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_recip().
2078be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2079be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17))
2080be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2081be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    half_recip(float v);
2082be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2083be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2084be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17))
2085be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2086be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    half_recip(float2 v);
2087be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2088be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2089be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17))
2090be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2091be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    half_recip(float3 v);
2092be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2093be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2094be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17))
2095be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2096be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    half_recip(float4 v);
2097be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2098be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2099be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2100be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * half_rsqrt: Reciprocal of a square root computed to 16 bit precision
2101be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2102be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate value of (1.f / sqrt(value)).
2103be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2104be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The precision is that of a 16 bit floating point value.
2105be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2106be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also rsqrt(), native_rsqrt().
2107be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2108be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17))
2109be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2110be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    half_rsqrt(float v);
2111be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2112be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2113be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17))
2114be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2115be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    half_rsqrt(float2 v);
2116be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2117be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2118be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17))
2119be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2120be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    half_rsqrt(float3 v);
2121be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2122be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2123be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17))
2124be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2125be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    half_rsqrt(float4 v);
2126be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2127be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2128be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2129be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * half_sqrt: Square root computed to 16 bit precision
2130be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2131be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate square root of a value.
2132be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2133be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The precision is that of a 16 bit floating point value.
2134be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2135be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also sqrt(), native_sqrt().
2136be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2137be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17))
2138be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2139be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    half_sqrt(float v);
2140be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2141be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2142be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17))
2143be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2144be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    half_sqrt(float2 v);
2145be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2146be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2147be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17))
2148be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2149be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    half_sqrt(float3 v);
2150be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2151be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2152be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17))
2153be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2154be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    half_sqrt(float4 v);
2155be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2156be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2157be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2158be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * hypot: Hypotenuse
2159be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2160be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the hypotenuse, i.e. sqrt(a * a + b * b).
2161be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2162be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_hypot().
2163be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2164be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2165be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    hypot(float a, float b);
2166be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2167be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2168be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    hypot(float2 a, float2 b);
2169be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2170be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2171be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    hypot(float3 a, float3 b);
2172be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2173be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2174be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    hypot(float4 a, float4 b);
2175be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2176d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2177586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
2178586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    hypot(half a, half b);
2179586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2180586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2181d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2182586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
2183586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    hypot(half2 a, half2 b);
2184586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2185586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2186d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2187586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
2188586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    hypot(half3 a, half3 b);
2189586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2190586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2191d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2192586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
2193586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    hypot(half4 a, half4 b);
2194586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2195586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2196be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2197be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * ilogb: Base two exponent
2198be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2199be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the base two exponent of a value, where the mantissa is between
2200be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 1.f (inclusive) and 2.f (exclusive).
2201be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2202be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For example, ilogb(8.5f) returns 3.
2203be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
22046386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * Because of the difference in mantissa, this number is one less than is returned by frexp().
2205be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2206be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * logb() is similar but returns a float.
2207be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2208be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int __attribute__((const, overloadable))
2209be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ilogb(float v);
2210be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2211be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int2 __attribute__((const, overloadable))
2212be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ilogb(float2 v);
2213be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2214be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int3 __attribute__((const, overloadable))
2215be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ilogb(float3 v);
2216be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2217be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int4 __attribute__((const, overloadable))
2218be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ilogb(float4 v);
2219be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2220d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2221f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainarextern int __attribute__((const, overloadable))
2222f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar    ilogb(half v);
2223f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar#endif
2224f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar
2225d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2226f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainarextern int2 __attribute__((const, overloadable))
2227f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar    ilogb(half2 v);
2228f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar#endif
2229f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar
2230d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2231f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainarextern int3 __attribute__((const, overloadable))
2232f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar    ilogb(half3 v);
2233f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar#endif
2234f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar
2235d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2236f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainarextern int4 __attribute__((const, overloadable))
2237f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar    ilogb(half4 v);
2238f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar#endif
2239f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar
2240be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2241be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * ldexp: Creates a floating point from mantissa and exponent
2242be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2243be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the floating point created from the mantissa and exponent,
2244be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * i.e. (mantissa * 2 ^ exponent).
2245be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2246be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See frexp() for the reverse operation.
2247be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2248be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
22496386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   mantissa: Mantissa.
22506386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   exponent: Exponent, a single component or matching vector.
2251be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2252be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2253be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ldexp(float mantissa, int exponent);
2254be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2255be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2256be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ldexp(float2 mantissa, int2 exponent);
2257be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2258be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2259be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ldexp(float3 mantissa, int3 exponent);
2260be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2261be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2262be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ldexp(float4 mantissa, int4 exponent);
2263be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2264d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2265586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
2266586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    ldexp(half mantissa, int exponent);
2267586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2268586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2269d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2270586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
2271586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    ldexp(half2 mantissa, int2 exponent);
2272586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2273586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2274d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2275586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
2276586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    ldexp(half3 mantissa, int3 exponent);
2277586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2278586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2279d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2280586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
2281586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    ldexp(half4 mantissa, int4 exponent);
2282586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2283586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2284be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2285be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ldexp(float2 mantissa, int exponent);
2286be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2287be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2288be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ldexp(float3 mantissa, int exponent);
2289be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2290be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2291be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ldexp(float4 mantissa, int exponent);
2292be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2293d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2294586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
2295586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    ldexp(half2 mantissa, int exponent);
2296586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2297586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2298d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2299586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
2300586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    ldexp(half3 mantissa, int exponent);
2301586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2302586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2303d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2304586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
2305586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    ldexp(half4 mantissa, int exponent);
2306586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2307586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2308be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2309be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * lgamma: Natural logarithm of the gamma function
2310be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2311be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the natural logarithm of the absolute value of the gamma function,
2312be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * i.e. log(fabs(tgamma(v))).
2313be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2314be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also tgamma().
2315be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2316be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
23174a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   sign_of_gamma: If sign_of_gamma is not null, *sign_of_gamma will be set to -1.f if the gamma of v is negative, otherwise to 1.f.
2318be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2319be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2320be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    lgamma(float v);
2321be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2322be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2323be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    lgamma(float2 v);
2324be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2325be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2326be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    lgamma(float3 v);
2327be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2328be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2329be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    lgamma(float4 v);
2330be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2331d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2332586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
2333586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    lgamma(half v);
2334586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2335586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2336d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2337586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
2338586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    lgamma(half2 v);
2339586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2340586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2341d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2342586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
2343586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    lgamma(half3 v);
2344586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2345586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2346d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2347586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
2348586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    lgamma(half4 v);
2349586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2350586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2351be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((overloadable))
2352be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    lgamma(float v, int* sign_of_gamma);
2353be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2354be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((overloadable))
2355be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    lgamma(float2 v, int2* sign_of_gamma);
2356be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2357be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((overloadable))
2358be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    lgamma(float3 v, int3* sign_of_gamma);
2359be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2360be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((overloadable))
2361be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    lgamma(float4 v, int4* sign_of_gamma);
2362be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2363d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2364586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((overloadable))
2365586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    lgamma(half v, int* sign_of_gamma);
2366586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2367586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2368d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2369586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((overloadable))
2370586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    lgamma(half2 v, int2* sign_of_gamma);
2371586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2372586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2373d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2374586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((overloadable))
2375586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    lgamma(half3 v, int3* sign_of_gamma);
2376586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2377586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2378d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2379586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((overloadable))
2380586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    lgamma(half4 v, int4* sign_of_gamma);
2381586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2382586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2383be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2384be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * log: Natural logarithm
2385be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2386be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the natural logarithm.
2387be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2388be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_log().
2389be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2390be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2391be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log(float v);
2392be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2393be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2394be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log(float2 v);
2395be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2396be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2397be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log(float3 v);
2398be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2399be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2400be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log(float4 v);
2401be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2402d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2403586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
2404586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log(half v);
2405586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2406586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2407d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2408586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
2409586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log(half2 v);
2410586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2411586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2412d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2413586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
2414586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log(half3 v);
2415586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2416586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2417d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2418586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
2419586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log(half4 v);
2420586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2421586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2422be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2423be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * log10: Base 10 logarithm
2424be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2425be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the base 10 logarithm.
2426be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2427be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_log10().
2428be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2429be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2430be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log10(float v);
2431be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2432be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2433be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log10(float2 v);
2434be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2435be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2436be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log10(float3 v);
2437be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2438be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2439be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log10(float4 v);
2440be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2441d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2442586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
2443586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log10(half v);
2444586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2445586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2446d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2447586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
2448586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log10(half2 v);
2449586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2450586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2451d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2452586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
2453586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log10(half3 v);
2454586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2455586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2456d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2457586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
2458586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log10(half4 v);
2459586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2460586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2461be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2462be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * log1p: Natural logarithm of a value plus 1
2463be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2464be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the natural logarithm of (v + 1.f).
2465be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2466be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_log1p().
2467be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2468be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2469be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log1p(float v);
2470be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2471be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2472be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log1p(float2 v);
2473be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2474be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2475be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log1p(float3 v);
2476be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2477be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2478be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log1p(float4 v);
2479be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2480d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2481586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
2482586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log1p(half v);
2483586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2484586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2485d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2486586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
2487586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log1p(half2 v);
2488586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2489586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2490d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2491586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
2492586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log1p(half3 v);
2493586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2494586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2495d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2496586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
2497586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log1p(half4 v);
2498586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2499586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2500be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2501be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * log2: Base 2 logarithm
2502be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2503be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the base 2 logarithm.
2504be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2505be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_log2().
2506be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2507be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2508be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log2(float v);
2509be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2510be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2511be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log2(float2 v);
2512be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2513be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2514be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log2(float3 v);
2515be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2516be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2517be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    log2(float4 v);
2518be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2519d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2520586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
2521586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log2(half v);
2522586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2523586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2524d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2525586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
2526586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log2(half2 v);
2527586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2528586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2529d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2530586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
2531586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log2(half3 v);
2532586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2533586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2534d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2535586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
2536586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    log2(half4 v);
2537586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2538586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2539be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2540be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * logb: Base two exponent
2541be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2542be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the base two exponent of a value, where the mantissa is between
2543be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 1.f (inclusive) and 2.f (exclusive).
2544be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2545be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For example, logb(8.5f) returns 3.f.
2546be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
25476386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * Because of the difference in mantissa, this number is one less than is returned by frexp().
2548be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2549be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * ilogb() is similar but returns an integer.
2550be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2551be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2552be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    logb(float v);
2553be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2554be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2555be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    logb(float2 v);
2556be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2557be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2558be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    logb(float3 v);
2559be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2560be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2561be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    logb(float4 v);
2562be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2563d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2564586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
2565586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    logb(half v);
2566586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2567586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2568d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2569586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
2570586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    logb(half2 v);
2571586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2572586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2573d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2574586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
2575586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    logb(half3 v);
2576586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2577586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2578d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2579586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
2580586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    logb(half4 v);
2581586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2582586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2583be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2584be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * mad: Multiply and add
2585be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2586be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Multiply and add.  Returns (multiplicand1 * multiplicand2) + offset.
2587be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
25886386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * This function is similar to fma().  fma() retains full precision of the multiplied result
25896386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * and rounds only after the addition.  mad() rounds after the multiplication and the addition.
25906386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * In rs_fp_relaxed mode, mad() may not do the rounding after multiplicaiton.
2591be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2592be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2593be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    mad(float multiplicand1, float multiplicand2, float offset);
2594be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2595be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2596be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    mad(float2 multiplicand1, float2 multiplicand2, float2 offset);
2597be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2598be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2599be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    mad(float3 multiplicand1, float3 multiplicand2, float3 offset);
2600be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2601be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2602be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    mad(float4 multiplicand1, float4 multiplicand2, float4 offset);
2603be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2604d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2605586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
2606586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    mad(half multiplicand1, half multiplicand2, half offset);
2607586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2608586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2609d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2610586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
2611586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    mad(half2 multiplicand1, half2 multiplicand2, half2 offset);
2612586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2613586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2614d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2615586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
2616586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    mad(half3 multiplicand1, half3 multiplicand2, half3 offset);
2617586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2618586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2619d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2620586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
2621586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    mad(half4 multiplicand1, half4 multiplicand2, half4 offset);
2622586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2623586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2624be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2625be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * max: Maximum
2626be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
2627be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the maximum value of two arguments.
2628be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
2629be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
2630be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(float a, float b);
2631be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2632be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
2633be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(float2 a, float2 b);
2634be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2635be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
2636be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(float3 a, float3 b);
2637be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2638be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
2639be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(float4 a, float4 b);
2640be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2641d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2642586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
2643586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    max(half a, half b);
2644586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2645586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2646d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2647586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
2648586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    max(half2 a, half2 b);
2649586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2650586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2651d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2652586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
2653586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    max(half3 a, half3 b);
2654586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2655586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2656d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2657586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
2658586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    max(half4 a, half4 b);
2659586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2660586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
26617cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
26627cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouillet    max(float2 a, float b);
26637cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouillet
26647cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
26657cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouillet    max(float3 a, float b);
26667cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouillet
26677cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
26687cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouillet    max(float4 a, float b);
26697cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouillet
2670d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2671586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
2672586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    max(half2 a, half b);
2673586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2674586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2675d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2676586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
2677586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    max(half3 a, half b);
2678586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2679586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2680d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
2681586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
2682586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    max(half4 a, half b);
2683586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
2684586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
2685be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2686be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline char __attribute__((const, overloadable))
2687be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(char a, char b) {
2688be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return (a > b ? a : b);
2689be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2690be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2691be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2692be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2693be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uchar __attribute__((const, overloadable))
2694be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uchar a, uchar b) {
2695be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return (a > b ? a : b);
2696be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2697be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2698be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2699be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2700be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline short __attribute__((const, overloadable))
2701be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(short a, short b) {
2702be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return (a > b ? a : b);
2703be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2704be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2705be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2706be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2707be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline ushort __attribute__((const, overloadable))
2708be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(ushort a, ushort b) {
2709be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return (a > b ? a : b);
2710be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2711be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2712be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2713be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2714be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline int __attribute__((const, overloadable))
2715be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(int a, int b) {
2716be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return (a > b ? a : b);
2717be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2718be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2719be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2720be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2721be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uint __attribute__((const, overloadable))
2722be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uint a, uint b) {
2723be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return (a > b ? a : b);
2724be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2725be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2726be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2727be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2728be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline char2 __attribute__((const, overloadable))
2729be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(char2 a, char2 b) {
2730be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    char2 tmp;
2731be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2732be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2733be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2734be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2735be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2736be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2737be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2738be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uchar2 __attribute__((const, overloadable))
2739be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uchar2 a, uchar2 b) {
2740be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    uchar2 tmp;
2741be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2742be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2743be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2744be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2745be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2746be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2747be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2748be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline short2 __attribute__((const, overloadable))
2749be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(short2 a, short2 b) {
2750be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    short2 tmp;
2751be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2752be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2753be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2754be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2755be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2756be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2757be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2758be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline ushort2 __attribute__((const, overloadable))
2759be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(ushort2 a, ushort2 b) {
2760be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ushort2 tmp;
2761be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2762be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2763be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2764be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2765be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2766be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2767be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2768be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline int2 __attribute__((const, overloadable))
2769be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(int2 a, int2 b) {
2770be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    int2 tmp;
2771be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2772be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2773be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2774be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2775be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2776be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2777be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2778be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uint2 __attribute__((const, overloadable))
2779be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uint2 a, uint2 b) {
2780be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    uint2 tmp;
2781be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2782be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2783be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2784be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2785be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2786be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2787be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2788be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline char3 __attribute__((const, overloadable))
2789be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(char3 a, char3 b) {
2790be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    char3 tmp;
2791be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2792be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2793be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z > b.z ? a.z : b.z);
2794be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2795be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2796be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2797be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2798be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2799be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uchar3 __attribute__((const, overloadable))
2800be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uchar3 a, uchar3 b) {
2801be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    uchar3 tmp;
2802be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2803be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2804be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z > b.z ? a.z : b.z);
2805be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2806be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2807be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2808be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2809be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2810be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline short3 __attribute__((const, overloadable))
2811be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(short3 a, short3 b) {
2812be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    short3 tmp;
2813be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2814be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2815be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z > b.z ? a.z : b.z);
2816be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2817be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2818be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2819be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2820be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2821be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline ushort3 __attribute__((const, overloadable))
2822be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(ushort3 a, ushort3 b) {
2823be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ushort3 tmp;
2824be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2825be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2826be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z > b.z ? a.z : b.z);
2827be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2828be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2829be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2830be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2831be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2832be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline int3 __attribute__((const, overloadable))
2833be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(int3 a, int3 b) {
2834be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    int3 tmp;
2835be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2836be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2837be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z > b.z ? a.z : b.z);
2838be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2839be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2840be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2841be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2842be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2843be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uint3 __attribute__((const, overloadable))
2844be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uint3 a, uint3 b) {
2845be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    uint3 tmp;
2846be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2847be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2848be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z > b.z ? a.z : b.z);
2849be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2850be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2851be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2852be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2853be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2854be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline char4 __attribute__((const, overloadable))
2855be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(char4 a, char4 b) {
2856be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    char4 tmp;
2857be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2858be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2859be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z > b.z ? a.z : b.z);
2860be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.w = (a.w > b.w ? a.w : b.w);
2861be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2862be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2863be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2864be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2865be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2866be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uchar4 __attribute__((const, overloadable))
2867be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uchar4 a, uchar4 b) {
2868be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    uchar4 tmp;
2869be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2870be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2871be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z > b.z ? a.z : b.z);
2872be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.w = (a.w > b.w ? a.w : b.w);
2873be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2874be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2875be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2876be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2877be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2878be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline short4 __attribute__((const, overloadable))
2879be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(short4 a, short4 b) {
2880be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    short4 tmp;
2881be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2882be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2883be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z > b.z ? a.z : b.z);
2884be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.w = (a.w > b.w ? a.w : b.w);
2885be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2886be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2887be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2888be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2889be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2890be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline ushort4 __attribute__((const, overloadable))
2891be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(ushort4 a, ushort4 b) {
2892be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ushort4 tmp;
2893be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2894be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2895be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z > b.z ? a.z : b.z);
2896be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.w = (a.w > b.w ? a.w : b.w);
2897be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2898be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2899be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2900be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2901be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2902be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline int4 __attribute__((const, overloadable))
2903be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(int4 a, int4 b) {
2904be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    int4 tmp;
2905be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2906be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2907be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z > b.z ? a.z : b.z);
2908be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.w = (a.w > b.w ? a.w : b.w);
2909be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2910be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2911be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2912be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2913be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
2914be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uint4 __attribute__((const, overloadable))
2915be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uint4 a, uint4 b) {
2916be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    uint4 tmp;
2917be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x > b.x ? a.x : b.x);
2918be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y > b.y ? a.y : b.y);
2919be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z > b.z ? a.z : b.z);
2920be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.w = (a.w > b.w ? a.w : b.w);
2921be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
2922be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
2923be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2924be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2925be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2926be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char __attribute__((const, overloadable))
2927be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(char a, char b);
2928be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2929be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2930be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2931be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char2 __attribute__((const, overloadable))
2932be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(char2 a, char2 b);
2933be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2934be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2935be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2936be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char3 __attribute__((const, overloadable))
2937be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(char3 a, char3 b);
2938be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2939be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2940be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2941be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char4 __attribute__((const, overloadable))
2942be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(char4 a, char4 b);
2943be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2944be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2945be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2946be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar __attribute__((const, overloadable))
2947be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uchar a, uchar b);
2948be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2949be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2950be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2951be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar2 __attribute__((const, overloadable))
2952be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uchar2 a, uchar2 b);
2953be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2954be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2955be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2956be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar3 __attribute__((const, overloadable))
2957be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uchar3 a, uchar3 b);
2958be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2959be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2960be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2961be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar4 __attribute__((const, overloadable))
2962be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uchar4 a, uchar4 b);
2963be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2964be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2965be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2966be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short __attribute__((const, overloadable))
2967be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(short a, short b);
2968be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2969be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2970be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2971be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short2 __attribute__((const, overloadable))
2972be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(short2 a, short2 b);
2973be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2974be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2975be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2976be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short3 __attribute__((const, overloadable))
2977be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(short3 a, short3 b);
2978be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2979be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2980be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2981be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short4 __attribute__((const, overloadable))
2982be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(short4 a, short4 b);
2983be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2984be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2985be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2986be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort __attribute__((const, overloadable))
2987be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(ushort a, ushort b);
2988be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2989be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2990be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2991be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort2 __attribute__((const, overloadable))
2992be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(ushort2 a, ushort2 b);
2993be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2994be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
2995be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
2996be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort3 __attribute__((const, overloadable))
2997be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(ushort3 a, ushort3 b);
2998be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
2999be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3000be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3001be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort4 __attribute__((const, overloadable))
3002be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(ushort4 a, ushort4 b);
3003be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3004be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3005be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3006be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int __attribute__((const, overloadable))
3007be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(int a, int b);
3008be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3009be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3010be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3011be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int2 __attribute__((const, overloadable))
3012be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(int2 a, int2 b);
3013be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3014be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3015be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3016be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int3 __attribute__((const, overloadable))
3017be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(int3 a, int3 b);
3018be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3019be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3020be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3021be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int4 __attribute__((const, overloadable))
3022be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(int4 a, int4 b);
3023be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3024be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3025be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3026be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint __attribute__((const, overloadable))
3027be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uint a, uint b);
3028be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3029be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3030be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3031be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint2 __attribute__((const, overloadable))
3032be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uint2 a, uint2 b);
3033be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3034be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3035be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3036be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint3 __attribute__((const, overloadable))
3037be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uint3 a, uint3 b);
3038be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3039be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3040be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3041be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint4 __attribute__((const, overloadable))
3042be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(uint4 a, uint4 b);
3043be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3044be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3045be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3046be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long __attribute__((const, overloadable))
3047be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(long a, long b);
3048be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3049be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3050be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3051be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long2 __attribute__((const, overloadable))
3052be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(long2 a, long2 b);
3053be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3054be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3055be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3056be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long3 __attribute__((const, overloadable))
3057be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(long3 a, long3 b);
3058be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3059be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3060be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3061be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long4 __attribute__((const, overloadable))
3062be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(long4 a, long4 b);
3063be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3064be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3065be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3066be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong __attribute__((const, overloadable))
3067be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(ulong a, ulong b);
3068be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3069be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3070be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3071be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong2 __attribute__((const, overloadable))
3072be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(ulong2 a, ulong2 b);
3073be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3074be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3075be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3076be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong3 __attribute__((const, overloadable))
3077be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(ulong3 a, ulong3 b);
3078be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3079be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3080be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3081be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong4 __attribute__((const, overloadable))
3082be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    max(ulong4 a, ulong4 b);
3083be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3084be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3085be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
3086be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * min: Minimum
3087be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3088be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the minimum value of two arguments.
3089be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
3090be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
3091be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(float a, float b);
3092be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3093be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
3094be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(float2 a, float2 b);
3095be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3096be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
3097be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(float3 a, float3 b);
3098be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3099be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
3100be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(float4 a, float4 b);
3101be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3102d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3103586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
3104586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    min(half a, half b);
3105586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3106586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3107d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3108586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
3109586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    min(half2 a, half2 b);
3110586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3111586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3112d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3113586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
3114586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    min(half3 a, half3 b);
3115586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3116586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3117d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3118586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
3119586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    min(half4 a, half4 b);
3120586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3121586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
31227cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
31237cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouillet    min(float2 a, float b);
31247cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouillet
31257cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
31267cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouillet    min(float3 a, float b);
31277cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouillet
31287cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
31297cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouillet    min(float4 a, float b);
31307cf263d593c057af8da8d57025e7315c4ed21ea2Jean-Luc Brouillet
3131d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3132586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
3133586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    min(half2 a, half b);
3134586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3135586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3136d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3137586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
3138586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    min(half3 a, half b);
3139586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3140586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3141d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3142586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
3143586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    min(half4 a, half b);
3144586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3145586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3146be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3147be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline char __attribute__((const, overloadable))
3148be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(char a, char b) {
3149be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return (a < b ? a : b);
3150be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3151be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3152be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3153be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3154be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uchar __attribute__((const, overloadable))
3155be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uchar a, uchar b) {
3156be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return (a < b ? a : b);
3157be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3158be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3159be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3160be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3161be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline short __attribute__((const, overloadable))
3162be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(short a, short b) {
3163be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return (a < b ? a : b);
3164be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3165be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3166be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3167be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3168be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline ushort __attribute__((const, overloadable))
3169be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(ushort a, ushort b) {
3170be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return (a < b ? a : b);
3171be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3172be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3173be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3174be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3175be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline int __attribute__((const, overloadable))
3176be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(int a, int b) {
3177be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return (a < b ? a : b);
3178be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3179be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3180be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3181be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3182be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uint __attribute__((const, overloadable))
3183be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uint a, uint b) {
3184be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return (a < b ? a : b);
3185be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3186be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3187be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3188be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3189be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline char2 __attribute__((const, overloadable))
3190be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(char2 a, char2 b) {
3191be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    char2 tmp;
3192be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3193be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3194be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3195be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3196be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3197be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3198be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3199be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uchar2 __attribute__((const, overloadable))
3200be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uchar2 a, uchar2 b) {
3201be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    uchar2 tmp;
3202be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3203be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3204be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3205be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3206be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3207be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3208be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3209be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline short2 __attribute__((const, overloadable))
3210be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(short2 a, short2 b) {
3211be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    short2 tmp;
3212be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3213be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3214be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3215be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3216be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3217be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3218be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3219be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline ushort2 __attribute__((const, overloadable))
3220be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(ushort2 a, ushort2 b) {
3221be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ushort2 tmp;
3222be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3223be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3224be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3225be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3226be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3227be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3228be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3229be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline int2 __attribute__((const, overloadable))
3230be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(int2 a, int2 b) {
3231be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    int2 tmp;
3232be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3233be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3234be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3235be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3236be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3237be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3238be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3239be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uint2 __attribute__((const, overloadable))
3240be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uint2 a, uint2 b) {
3241be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    uint2 tmp;
3242be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3243be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3244be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3245be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3246be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3247be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3248be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3249be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline char3 __attribute__((const, overloadable))
3250be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(char3 a, char3 b) {
3251be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    char3 tmp;
3252be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3253be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3254be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z < b.z ? a.z : b.z);
3255be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3256be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3257be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3258be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3259be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3260be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uchar3 __attribute__((const, overloadable))
3261be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uchar3 a, uchar3 b) {
3262be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    uchar3 tmp;
3263be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3264be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3265be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z < b.z ? a.z : b.z);
3266be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3267be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3268be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3269be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3270be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3271be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline short3 __attribute__((const, overloadable))
3272be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(short3 a, short3 b) {
3273be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    short3 tmp;
3274be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3275be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3276be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z < b.z ? a.z : b.z);
3277be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3278be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3279be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3280be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3281be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3282be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline ushort3 __attribute__((const, overloadable))
3283be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(ushort3 a, ushort3 b) {
3284be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ushort3 tmp;
3285be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3286be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3287be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z < b.z ? a.z : b.z);
3288be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3289be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3290be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3291be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3292be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3293be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline int3 __attribute__((const, overloadable))
3294be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(int3 a, int3 b) {
3295be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    int3 tmp;
3296be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3297be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3298be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z < b.z ? a.z : b.z);
3299be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3300be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3301be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3302be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3303be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3304be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uint3 __attribute__((const, overloadable))
3305be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uint3 a, uint3 b) {
3306be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    uint3 tmp;
3307be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3308be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3309be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z < b.z ? a.z : b.z);
3310be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3311be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3312be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3313be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3314be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3315be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline char4 __attribute__((const, overloadable))
3316be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(char4 a, char4 b) {
3317be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    char4 tmp;
3318be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3319be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3320be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z < b.z ? a.z : b.z);
3321be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.w = (a.w < b.w ? a.w : b.w);
3322be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3323be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3324be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3325be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3326be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3327be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uchar4 __attribute__((const, overloadable))
3328be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uchar4 a, uchar4 b) {
3329be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    uchar4 tmp;
3330be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3331be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3332be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z < b.z ? a.z : b.z);
3333be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.w = (a.w < b.w ? a.w : b.w);
3334be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3335be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3336be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3337be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3338be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3339be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline short4 __attribute__((const, overloadable))
3340be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(short4 a, short4 b) {
3341be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    short4 tmp;
3342be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3343be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3344be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z < b.z ? a.z : b.z);
3345be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.w = (a.w < b.w ? a.w : b.w);
3346be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3347be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3348be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3349be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3350be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3351be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline ushort4 __attribute__((const, overloadable))
3352be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(ushort4 a, ushort4 b) {
3353be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    ushort4 tmp;
3354be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3355be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3356be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z < b.z ? a.z : b.z);
3357be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.w = (a.w < b.w ? a.w : b.w);
3358be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3359be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3360be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3361be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3362be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3363be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline int4 __attribute__((const, overloadable))
3364be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(int4 a, int4 b) {
3365be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    int4 tmp;
3366be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3367be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3368be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z < b.z ? a.z : b.z);
3369be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.w = (a.w < b.w ? a.w : b.w);
3370be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3371be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3372be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3373be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3374be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if !defined(RS_VERSION) || (RS_VERSION <= 20)
3375be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletstatic inline uint4 __attribute__((const, overloadable))
3376be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uint4 a, uint4 b) {
3377be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    uint4 tmp;
3378be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.x = (a.x < b.x ? a.x : b.x);
3379be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.y = (a.y < b.y ? a.y : b.y);
3380be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.z = (a.z < b.z ? a.z : b.z);
3381be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tmp.w = (a.w < b.w ? a.w : b.w);
3382be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    return tmp;
3383be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet}
3384be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3385be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3386be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3387be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char __attribute__((const, overloadable))
3388be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(char a, char b);
3389be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3390be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3391be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3392be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char2 __attribute__((const, overloadable))
3393be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(char2 a, char2 b);
3394be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3395be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3396be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3397be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char3 __attribute__((const, overloadable))
3398be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(char3 a, char3 b);
3399be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3400be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3401be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3402be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern char4 __attribute__((const, overloadable))
3403be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(char4 a, char4 b);
3404be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3405be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3406be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3407be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar __attribute__((const, overloadable))
3408be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uchar a, uchar b);
3409be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3410be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3411be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3412be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar2 __attribute__((const, overloadable))
3413be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uchar2 a, uchar2 b);
3414be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3415be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3416be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3417be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar3 __attribute__((const, overloadable))
3418be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uchar3 a, uchar3 b);
3419be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3420be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3421be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3422be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uchar4 __attribute__((const, overloadable))
3423be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uchar4 a, uchar4 b);
3424be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3425be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3426be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3427be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short __attribute__((const, overloadable))
3428be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(short a, short b);
3429be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3430be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3431be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3432be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short2 __attribute__((const, overloadable))
3433be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(short2 a, short2 b);
3434be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3435be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3436be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3437be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short3 __attribute__((const, overloadable))
3438be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(short3 a, short3 b);
3439be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3440be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3441be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3442be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern short4 __attribute__((const, overloadable))
3443be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(short4 a, short4 b);
3444be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3445be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3446be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3447be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort __attribute__((const, overloadable))
3448be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(ushort a, ushort b);
3449be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3450be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3451be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3452be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort2 __attribute__((const, overloadable))
3453be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(ushort2 a, ushort2 b);
3454be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3455be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3456be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3457be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort3 __attribute__((const, overloadable))
3458be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(ushort3 a, ushort3 b);
3459be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3460be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3461be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3462be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ushort4 __attribute__((const, overloadable))
3463be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(ushort4 a, ushort4 b);
3464be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3465be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3466be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3467be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int __attribute__((const, overloadable))
3468be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(int a, int b);
3469be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3470be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3471be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3472be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int2 __attribute__((const, overloadable))
3473be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(int2 a, int2 b);
3474be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3475be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3476be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3477be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int3 __attribute__((const, overloadable))
3478be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(int3 a, int3 b);
3479be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3480be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3481be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3482be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern int4 __attribute__((const, overloadable))
3483be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(int4 a, int4 b);
3484be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3485be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3486be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3487be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint __attribute__((const, overloadable))
3488be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uint a, uint b);
3489be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3490be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3491be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3492be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint2 __attribute__((const, overloadable))
3493be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uint2 a, uint2 b);
3494be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3495be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3496be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3497be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint3 __attribute__((const, overloadable))
3498be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uint3 a, uint3 b);
3499be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3500be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3501be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3502be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint4 __attribute__((const, overloadable))
3503be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(uint4 a, uint4 b);
3504be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3505be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3506be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3507be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long __attribute__((const, overloadable))
3508be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(long a, long b);
3509be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3510be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3511be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3512be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long2 __attribute__((const, overloadable))
3513be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(long2 a, long2 b);
3514be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3515be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3516be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3517be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long3 __attribute__((const, overloadable))
3518be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(long3 a, long3 b);
3519be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3520be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3521be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3522be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern long4 __attribute__((const, overloadable))
3523be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(long4 a, long4 b);
3524be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3525be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3526be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3527be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong __attribute__((const, overloadable))
3528be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(ulong a, ulong b);
3529be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3530be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3531be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3532be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong2 __attribute__((const, overloadable))
3533be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(ulong2 a, ulong2 b);
3534be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3535be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3536be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3537be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong3 __attribute__((const, overloadable))
3538be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(ulong3 a, ulong3 b);
3539be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3540be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3541be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3542be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern ulong4 __attribute__((const, overloadable))
3543be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    min(ulong4 a, ulong4 b);
3544be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3545be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3546be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
3547be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * mix: Mixes two values
3548be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3549be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns start + ((stop - start) * fraction).
3550be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
35516386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * This can be useful for mixing two values.  For example, to create a new color that is
35526386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * 40% color1 and 60% color2, use mix(color1, color2, 0.6f).
3553be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
3554be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
3555be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    mix(float start, float stop, float fraction);
3556be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3557be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
3558be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    mix(float2 start, float2 stop, float2 fraction);
3559be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3560be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
3561be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    mix(float3 start, float3 stop, float3 fraction);
3562be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3563be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
3564be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    mix(float4 start, float4 stop, float4 fraction);
3565be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3566d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3567586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
3568586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    mix(half start, half stop, half fraction);
3569586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3570586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3571d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3572586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
3573586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    mix(half2 start, half2 stop, half2 fraction);
3574586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3575586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3576d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3577586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
3578586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    mix(half3 start, half3 stop, half3 fraction);
3579586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3580586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3581d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3582586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
3583586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    mix(half4 start, half4 stop, half4 fraction);
3584586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3585586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3586be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
3587be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    mix(float2 start, float2 stop, float fraction);
3588be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3589be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
3590be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    mix(float3 start, float3 stop, float fraction);
3591be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3592be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
3593be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    mix(float4 start, float4 stop, float fraction);
3594be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3595d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3596586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
3597586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    mix(half2 start, half2 stop, half fraction);
3598586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3599586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3600d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3601586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
3602586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    mix(half3 start, half3 stop, half fraction);
3603586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3604586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3605d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3606586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
3607586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    mix(half4 start, half4 stop, half fraction);
3608586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3609586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3610be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
3611be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * modf: Integral and fractional components
3612be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3613be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the integral and fractional components of a number.
3614be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
36156386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * Both components will have the same sign as x.  For example, for an input of -3.72f,
3616e6128fff9f6b64ae5bebe0f01de2ea1bfaba8ef8Pirama Arumuga Nainar * *integral_part will be set to -3.f and .72f will be returned.
3617be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3618be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
36196386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   v: Source value.
36204a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   integral_part: *integral_part will be set to the integral portion of the number.
3621be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
36226386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * Returns: Floating point portion of the value.
3623be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
3624be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((overloadable))
3625be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    modf(float v, float* integral_part);
3626be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3627be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((overloadable))
3628be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    modf(float2 v, float2* integral_part);
3629be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3630be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((overloadable))
3631be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    modf(float3 v, float3* integral_part);
3632be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3633be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((overloadable))
3634be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    modf(float4 v, float4* integral_part);
3635be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3636d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
36378b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half __attribute__((overloadable))
36388b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    modf(half v, half* integral_part);
36398b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
36408b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
3641d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
36428b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half2 __attribute__((overloadable))
36438b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    modf(half2 v, half2* integral_part);
36448b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
36458b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
3646d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
36478b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half3 __attribute__((overloadable))
36488b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    modf(half3 v, half3* integral_part);
36498b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
36508b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
3651d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
36528b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainarextern half4 __attribute__((overloadable))
36538b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar    modf(half4 v, half4* integral_part);
36548b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar#endif
36558b5b941b1123afe748c45be67d6c8b4e22de1df6Pirama Arumuga Nainar
3656be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
3657be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * nan: Not a Number
3658be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3659be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns a NaN value (Not a Number).
3660be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3661be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
36624a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   v: Not used.
3663be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
3664be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
3665be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    nan(uint v);
3666be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3667be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
3668586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar * nan_half: Not a Number
3669586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar *
3670586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar *  Returns a half-precision floating point NaN value (Not a Number).
3671586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar */
3672d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3673586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
3674586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    nan_half(void);
3675586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3676586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3677586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar/*
3678be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_acos: Approximate inverse cosine
3679be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3680be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate inverse cosine, in radians.
3681be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
36826386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * This function yields undefined results from input values less than -1 or greater than 1.
3683be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3684be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also acos().
3685be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
3686be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3687be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
3688be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_acos(float v);
3689be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3690be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3691be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3692be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
3693be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_acos(float2 v);
3694be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3695be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3696be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3697be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
3698be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_acos(float3 v);
3699be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3700be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3701be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3702be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
3703be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_acos(float4 v);
3704be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3705be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3706d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3707586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
3708586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_acos(half v);
3709586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3710586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3711d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3712586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
3713586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_acos(half2 v);
3714586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3715586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3716d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3717586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
3718586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_acos(half3 v);
3719586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3720586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3721d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3722586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
3723586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_acos(half4 v);
3724586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3725586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3726be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
3727be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_acosh: Approximate inverse hyperbolic cosine
3728be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3729be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate inverse hyperbolic cosine, in radians.
3730be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3731be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also acosh().
3732be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
3733be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3734be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
3735be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_acosh(float v);
3736be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3737be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3738be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3739be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
3740be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_acosh(float2 v);
3741be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3742be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3743be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3744be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
3745be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_acosh(float3 v);
3746be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3747be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3748be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3749be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
3750be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_acosh(float4 v);
3751be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3752be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3753d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3754586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
3755586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_acosh(half v);
3756586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3757586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3758d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3759586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
3760586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_acosh(half2 v);
3761586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3762586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3763d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3764586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
3765586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_acosh(half3 v);
3766586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3767586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3768d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3769586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
3770586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_acosh(half4 v);
3771586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3772586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3773be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
3774be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_acospi: Approximate inverse cosine divided by pi
3775be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3776be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate inverse cosine in radians, divided by pi.
3777be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3778be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get an inverse cosine measured in degrees, use acospi(a) * 180.f.
3779be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
37806386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * This function yields undefined results from input values less than -1 or greater than 1.
3781be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3782be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also acospi().
3783be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
3784be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3785be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
3786be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_acospi(float v);
3787be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3788be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3789be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3790be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
3791be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_acospi(float2 v);
3792be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3793be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3794be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3795be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
3796be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_acospi(float3 v);
3797be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3798be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3799be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3800be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
3801be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_acospi(float4 v);
3802be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3803be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3804d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3805586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
3806586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_acospi(half v);
3807586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3808586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3809d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3810586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
3811586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_acospi(half2 v);
3812586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3813586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3814d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3815586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
3816586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_acospi(half3 v);
3817586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3818586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3819d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3820586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
3821586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_acospi(half4 v);
3822586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3823586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3824be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
3825be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_asin: Approximate inverse sine
3826be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3827be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate inverse sine, in radians.
3828be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
38296386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * This function yields undefined results from input values less than -1 or greater than 1.
3830be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3831be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also asin().
3832be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
3833be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3834be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
3835be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_asin(float v);
3836be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3837be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3838be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3839be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
3840be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_asin(float2 v);
3841be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3842be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3843be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3844be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
3845be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_asin(float3 v);
3846be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3847be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3848be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3849be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
3850be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_asin(float4 v);
3851be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3852be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3853d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3854586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
3855586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_asin(half v);
3856586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3857586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3858d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3859586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
3860586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_asin(half2 v);
3861586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3862586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3863d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3864586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
3865586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_asin(half3 v);
3866586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3867586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3868d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3869586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
3870586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_asin(half4 v);
3871586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3872586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3873be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
3874be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_asinh: Approximate inverse hyperbolic sine
3875be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3876be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate inverse hyperbolic sine, in radians.
3877be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3878be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also asinh().
3879be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
3880be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3881be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
3882be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_asinh(float v);
3883be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3884be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3885be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3886be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
3887be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_asinh(float2 v);
3888be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3889be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3890be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3891be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
3892be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_asinh(float3 v);
3893be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3894be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3895be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3896be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
3897be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_asinh(float4 v);
3898be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3899be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3900d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3901586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
3902586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_asinh(half v);
3903586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3904586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3905d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3906586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
3907586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_asinh(half2 v);
3908586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3909586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3910d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3911586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
3912586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_asinh(half3 v);
3913586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3914586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3915d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3916586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
3917586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_asinh(half4 v);
3918586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3919586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3920be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
3921be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_asinpi: Approximate inverse sine divided by pi
3922be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3923be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate inverse sine in radians, divided by pi.
3924be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3925be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get an inverse sine measured in degrees, use asinpi(a) * 180.f.
3926be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
39276386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * This function yields undefined results from input values less than -1 or greater than 1.
3928be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3929be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also asinpi().
3930be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
3931be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3932be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
3933be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_asinpi(float v);
3934be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3935be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3936be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3937be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
3938be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_asinpi(float2 v);
3939be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3940be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3941be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3942be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
3943be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_asinpi(float3 v);
3944be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3945be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3946be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3947be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
3948be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_asinpi(float4 v);
3949be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3950be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3951d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3952586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
3953586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_asinpi(half v);
3954586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3955586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3956d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3957586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
3958586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_asinpi(half2 v);
3959586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3960586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3961d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3962586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
3963586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_asinpi(half3 v);
3964586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3965586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3966d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3967586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
3968586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_asinpi(half4 v);
3969586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
3970586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
3971be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
3972be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_atan: Approximate inverse tangent
3973be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3974be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate inverse tangent, in radians.
3975be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
3976be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also atan().
3977be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
3978be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3979be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
3980be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atan(float v);
3981be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3982be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3983be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3984be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
3985be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atan(float2 v);
3986be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3987be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3988be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3989be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
3990be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atan(float3 v);
3991be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3992be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3993be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
3994be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
3995be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atan(float4 v);
3996be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
3997be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
3998d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
3999586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4000586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atan(half v);
4001586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4002586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4003d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4004586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4005586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atan(half2 v);
4006586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4007586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4008d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4009586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4010586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atan(half3 v);
4011586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4012586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4013d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4014586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4015586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atan(half4 v);
4016586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4017586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4018be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4019be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_atan2: Approximate inverse tangent of a ratio
4020be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4021be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate inverse tangent of (numerator / denominator), in radians.
4022be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4023be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also atan2().
4024be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4025be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
40266386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   numerator: Numerator.
40276386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   denominator: Denominator.  Can be 0.
4028be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4029be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4030be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4031be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atan2(float numerator, float denominator);
4032be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4033be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4034be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4035be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4036be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atan2(float2 numerator, float2 denominator);
4037be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4038be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4039be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4040be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4041be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atan2(float3 numerator, float3 denominator);
4042be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4043be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4044be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4045be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4046be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atan2(float4 numerator, float4 denominator);
4047be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4048be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4049d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4050586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4051586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atan2(half numerator, half denominator);
4052586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4053586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4054d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4055586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4056586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atan2(half2 numerator, half2 denominator);
4057586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4058586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4059d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4060586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4061586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atan2(half3 numerator, half3 denominator);
4062586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4063586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4064d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4065586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4066586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atan2(half4 numerator, half4 denominator);
4067586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4068586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4069be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4070be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_atan2pi: Approximate inverse tangent of a ratio, divided by pi
4071be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
40726386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * Returns the approximate inverse tangent of (numerator / denominator),
40736386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * in radians, divided by pi.
4074be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4075be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get an inverse tangent measured in degrees, use atan2pi(n, d) * 180.f.
4076be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4077be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also atan2pi().
4078be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4079be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
40806386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   numerator: Numerator.
40816386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   denominator: Denominator.  Can be 0.
4082be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4083be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4084be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4085be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atan2pi(float numerator, float denominator);
4086be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4087be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4088be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4089be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4090be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atan2pi(float2 numerator, float2 denominator);
4091be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4092be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4093be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4094be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4095be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atan2pi(float3 numerator, float3 denominator);
4096be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4097be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4098be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4099be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4100be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atan2pi(float4 numerator, float4 denominator);
4101be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4102be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4103d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4104586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4105586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atan2pi(half numerator, half denominator);
4106586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4107586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4108d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4109586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4110586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atan2pi(half2 numerator, half2 denominator);
4111586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4112586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4113d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4114586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4115586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atan2pi(half3 numerator, half3 denominator);
4116586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4117586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4118d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4119586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4120586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atan2pi(half4 numerator, half4 denominator);
4121586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4122586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4123be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4124be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_atanh: Approximate inverse hyperbolic tangent
4125be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4126be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate inverse hyperbolic tangent, in radians.
4127be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4128be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also atanh().
4129be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4130be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4131be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4132be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atanh(float v);
4133be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4134be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4135be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4136be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4137be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atanh(float2 v);
4138be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4139be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4140be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4141be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4142be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atanh(float3 v);
4143be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4144be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4145be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4146be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4147be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atanh(float4 v);
4148be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4149be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4150d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4151586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4152586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atanh(half v);
4153586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4154586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4155d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4156586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4157586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atanh(half2 v);
4158586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4159586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4160d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4161586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4162586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atanh(half3 v);
4163586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4164586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4165d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4166586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4167586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atanh(half4 v);
4168586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4169586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4170be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4171be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_atanpi: Approximate inverse tangent divided by pi
4172be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4173be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate inverse tangent in radians, divided by pi.
4174be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4175be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get an inverse tangent measured in degrees, use atanpi(a) * 180.f.
4176be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4177be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also atanpi().
4178be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4179be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4180be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4181be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atanpi(float v);
4182be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4183be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4184be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4185be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4186be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atanpi(float2 v);
4187be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4188be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4189be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4190be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4191be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atanpi(float3 v);
4192be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4193be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4194be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4195be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4196be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_atanpi(float4 v);
4197be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4198be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4199d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4200586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4201586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atanpi(half v);
4202586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4203586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4204d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4205586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4206586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atanpi(half2 v);
4207586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4208586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4209d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4210586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4211586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atanpi(half3 v);
4212586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4213586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4214d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4215586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4216586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_atanpi(half4 v);
4217586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4218586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4219be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4220be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_cbrt: Approximate cube root
4221be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4222be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate cubic root.
4223be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4224be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also cbrt().
4225be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4226be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4227be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4228be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cbrt(float v);
4229be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4230be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4231be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4232be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4233be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cbrt(float2 v);
4234be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4235be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4236be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4237be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4238be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cbrt(float3 v);
4239be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4240be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4241be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4242be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4243be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cbrt(float4 v);
4244be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4245be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4246d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4247586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4248586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cbrt(half v);
4249586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4250586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4251d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4252586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4253586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cbrt(half2 v);
4254586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4255586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4256d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4257586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4258586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cbrt(half3 v);
4259586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4260586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4261d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4262586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4263586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cbrt(half4 v);
4264586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4265586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4266be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4267be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_cos: Approximate cosine
4268be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4269be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate cosine of an angle measured in radians.
4270be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4271be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also cos().
4272be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4273be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4274be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4275be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cos(float v);
4276be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4277be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4278be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4279be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4280be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cos(float2 v);
4281be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4282be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4283be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4284be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4285be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cos(float3 v);
4286be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4287be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4288be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4289be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4290be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cos(float4 v);
4291be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4292be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4293d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4294586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4295586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cos(half v);
4296586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4297586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4298d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4299586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4300586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cos(half2 v);
4301586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4302586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4303d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4304586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4305586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cos(half3 v);
4306586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4307586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4308d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4309586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4310586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cos(half4 v);
4311586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4312586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4313be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4314be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_cosh: Approximate hypebolic cosine
4315be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4316be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate hypebolic cosine.
4317be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4318be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also cosh().
4319be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4320be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4321be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4322be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cosh(float v);
4323be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4324be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4325be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4326be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4327be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cosh(float2 v);
4328be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4329be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4330be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4331be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4332be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cosh(float3 v);
4333be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4334be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4335be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4336be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4337be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cosh(float4 v);
4338be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4339be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4340d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4341586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4342586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cosh(half v);
4343586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4344586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4345d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4346586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4347586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cosh(half2 v);
4348586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4349586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4350d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4351586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4352586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cosh(half3 v);
4353586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4354586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4355d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4356586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4357586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cosh(half4 v);
4358586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4359586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4360586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar/*
4361be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_cospi: Approximate cosine of a number multiplied by pi
4362be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4363be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate cosine of (v * pi), where (v * pi) is measured in radians.
4364be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4365be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get the cosine of a value measured in degrees, call cospi(v / 180.f).
4366be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4367be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also cospi().
4368be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4369be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4370be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4371be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cospi(float v);
4372be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4373be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4374be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4375be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4376be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cospi(float2 v);
4377be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4378be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4379be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4380be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4381be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cospi(float3 v);
4382be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4383be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4384be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4385be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4386be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_cospi(float4 v);
4387be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4388be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4389d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4390586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4391586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cospi(half v);
4392586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4393586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4394d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4395586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4396586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cospi(half2 v);
4397586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4398586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4399d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4400586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4401586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cospi(half3 v);
4402586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4403586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4404d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4405586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4406586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_cospi(half4 v);
4407586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4408586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4409be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4410be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_divide: Approximate division
4411be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4412be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the approximate division of two values.
4413be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4414be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4415be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4416be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_divide(float left_vector, float right_vector);
4417be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4418be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4419be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4420be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4421be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_divide(float2 left_vector, float2 right_vector);
4422be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4423be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4424be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4425be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4426be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_divide(float3 left_vector, float3 right_vector);
4427be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4428be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4429be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4430be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4431be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_divide(float4 left_vector, float4 right_vector);
4432be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4433be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4434d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4435586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4436586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_divide(half left_vector, half right_vector);
4437586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4438586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4439d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4440586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4441586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_divide(half2 left_vector, half2 right_vector);
4442586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4443586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4444d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4445586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4446586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_divide(half3 left_vector, half3 right_vector);
4447586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4448586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4449d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4450586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4451586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_divide(half4 left_vector, half4 right_vector);
4452586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4453586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4454be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4455be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_exp: Approximate e raised to a number
4456be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4457be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Fast approximate exp.
4458be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
44596386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * It is valid for inputs from -86.f to 86.f.  The precision is no worse than what would be
44606386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * expected from using 16 bit floating point values.
4461be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4462be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also exp().
4463be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4464be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4465be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4466be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_exp(float v);
4467be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4468be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4469be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4470be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4471be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_exp(float2 v);
4472be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4473be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4474be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4475be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4476be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_exp(float3 v);
4477be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4478be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4479be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4480be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4481be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_exp(float4 v);
4482be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4483be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4484d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4485586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4486586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_exp(half v);
4487586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4488586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4489d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4490586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4491586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_exp(half2 v);
4492586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4493586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4494d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4495586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4496586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_exp(half3 v);
4497586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4498586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4499d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4500586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4501586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_exp(half4 v);
4502586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4503586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4504be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4505be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_exp10: Approximate 10 raised to a number
4506be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4507be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Fast approximate exp10.
4508be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
45096386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * It is valid for inputs from -37.f to 37.f.  The precision is no worse than what would be
45106386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * expected from using 16 bit floating point values.
4511be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4512be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also exp10().
4513be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4514be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4515be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4516be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_exp10(float v);
4517be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4518be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4519be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4520be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4521be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_exp10(float2 v);
4522be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4523be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4524be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4525be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4526be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_exp10(float3 v);
4527be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4528be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4529be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4530be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4531be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_exp10(float4 v);
4532be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4533be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4534d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4535586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4536586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_exp10(half v);
4537586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4538586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4539d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4540586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4541586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_exp10(half2 v);
4542586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4543586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4544d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4545586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4546586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_exp10(half3 v);
4547586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4548586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4549d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4550586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4551586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_exp10(half4 v);
4552586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4553586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4554be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4555be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_exp2: Approximate 2 raised to a number
4556be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4557be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Fast approximate exp2.
4558be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
45596386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * It is valid for inputs from -125.f to 125.f.  The precision is no worse than what would be
45606386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * expected from using 16 bit floating point values.
4561be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4562be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also exp2().
4563be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4564be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4565be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4566be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_exp2(float v);
4567be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4568be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4569be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4570be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4571be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_exp2(float2 v);
4572be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4573be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4574be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4575be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4576be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_exp2(float3 v);
4577be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4578be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4579be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4580be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4581be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_exp2(float4 v);
4582be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4583be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4584d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4585586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4586586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_exp2(half v);
4587586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4588586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4589d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4590586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4591586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_exp2(half2 v);
4592586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4593586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4594d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4595586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4596586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_exp2(half3 v);
4597586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4598586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4599d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4600586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4601586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_exp2(half4 v);
4602586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4603586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4604be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4605be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_expm1: Approximate e raised to a number minus one
4606be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4607be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate (e ^ v) - 1.
4608be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4609be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also expm1().
4610be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4611be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4612be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4613be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_expm1(float v);
4614be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4615be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4616be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4617be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4618be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_expm1(float2 v);
4619be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4620be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4621be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4622be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4623be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_expm1(float3 v);
4624be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4625be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4626be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4627be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4628be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_expm1(float4 v);
4629be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4630be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4631d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4632586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4633586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_expm1(half v);
4634586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4635586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4636d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4637586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4638586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_expm1(half2 v);
4639586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4640586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4641d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4642586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4643586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_expm1(half3 v);
4644586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4645586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4646d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4647586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4648586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_expm1(half4 v);
4649586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4650586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4651be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4652be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_hypot: Approximate hypotenuse
4653be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4654be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate native_sqrt(a * a + b * b)
4655be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4656be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also hypot().
4657be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4658be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4659be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4660be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_hypot(float a, float b);
4661be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4662be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4663be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4664be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4665be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_hypot(float2 a, float2 b);
4666be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4667be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4668be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4669be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4670be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_hypot(float3 a, float3 b);
4671be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4672be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4673be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4674be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4675be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_hypot(float4 a, float4 b);
4676be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4677be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4678d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4679586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4680586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_hypot(half a, half b);
4681586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4682586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4683d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4684586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4685586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_hypot(half2 a, half2 b);
4686586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4687586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4688d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4689586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4690586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_hypot(half3 a, half3 b);
4691586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4692586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4693d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4694586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4695586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_hypot(half4 a, half4 b);
4696586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4697586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4698be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4699be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_log: Approximate natural logarithm
4700be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4701be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Fast approximate log.
4702be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4703be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * It is not accurate for values very close to zero.
4704be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4705be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also log().
4706be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4707be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4708be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4709be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log(float v);
4710be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4711be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4712be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4713be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4714be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log(float2 v);
4715be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4716be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4717be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4718be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4719be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log(float3 v);
4720be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4721be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4722be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4723be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4724be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log(float4 v);
4725be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4726be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4727d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4728586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4729586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log(half v);
4730586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4731586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4732d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4733586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4734586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log(half2 v);
4735586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4736586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4737d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4738586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4739586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log(half3 v);
4740586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4741586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4742d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4743586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4744586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log(half4 v);
4745586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4746586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4747be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4748be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_log10: Approximate base 10 logarithm
4749be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4750be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Fast approximate log10.
4751be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4752be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * It is not accurate for values very close to zero.
4753be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4754be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also log10().
4755be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4756be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4757be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4758be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log10(float v);
4759be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4760be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4761be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4762be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4763be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log10(float2 v);
4764be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4765be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4766be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4767be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4768be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log10(float3 v);
4769be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4770be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4771be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4772be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4773be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log10(float4 v);
4774be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4775be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4776d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4777586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4778586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log10(half v);
4779586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4780586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4781d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4782586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4783586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log10(half2 v);
4784586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4785586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4786d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4787586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4788586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log10(half3 v);
4789586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4790586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4791d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4792586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4793586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log10(half4 v);
4794586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4795586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4796be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4797be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_log1p: Approximate natural logarithm of a value plus 1
4798be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4799be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate natural logarithm of (v + 1.0f)
4800be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4801be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also log1p().
4802be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4803be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4804be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4805be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log1p(float v);
4806be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4807be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4808be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4809be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4810be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log1p(float2 v);
4811be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4812be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4813be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4814be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4815be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log1p(float3 v);
4816be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4817be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4818be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4819be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4820be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log1p(float4 v);
4821be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4822be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4823d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4824586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4825586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log1p(half v);
4826586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4827586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4828d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4829586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4830586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log1p(half2 v);
4831586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4832586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4833d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4834586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4835586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log1p(half3 v);
4836586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4837586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4838d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4839586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4840586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log1p(half4 v);
4841586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4842586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4843be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4844be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_log2: Approximate base 2 logarithm
4845be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4846be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Fast approximate log2.
4847be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4848be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * It is not accurate for values very close to zero.
4849be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4850be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also log2().
4851be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4852be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4853be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4854be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log2(float v);
4855be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4856be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4857be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4858be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4859be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log2(float2 v);
4860be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4861be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4862be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4863be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4864be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log2(float3 v);
4865be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4866be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4867be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4868be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4869be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_log2(float4 v);
4870be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4871be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4872d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4873586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4874586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log2(half v);
4875586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4876586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4877d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4878586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4879586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log2(half2 v);
4880586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4881586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4882d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4883586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4884586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log2(half3 v);
4885586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4886586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4887d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4888586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4889586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_log2(half4 v);
4890586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4891586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4892be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4893be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_powr: Approximate positive base raised to an exponent
4894be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4895be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Fast approximate (base ^ exponent).
4896be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4897be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also powr().
4898be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4899be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
49004a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   base: Must be between 0.f and 256.f.  The function is not accurate for values very close to zero.
49014a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   exponent: Must be between -15.f and 15.f.
4902be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4903be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4904be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4905be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_powr(float base, float exponent);
4906be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4907be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4908be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4909be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4910be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_powr(float2 base, float2 exponent);
4911be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4912be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4913be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4914be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4915be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_powr(float3 base, float3 exponent);
4916be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4917be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4918be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 18))
4919be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4920be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_powr(float4 base, float4 exponent);
4921be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4922be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4923d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4924586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4925586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_powr(half base, half exponent);
4926586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4927586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4928d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4929586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4930586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_powr(half2 base, half2 exponent);
4931586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4932586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4933d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4934586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4935586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_powr(half3 base, half3 exponent);
4936586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4937586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4938d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4939586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4940586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_powr(half4 base, half4 exponent);
4941586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4942586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4943be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4944be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_recip: Approximate reciprocal
4945be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4946be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate approximate reciprocal of a value.
4947be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4948be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also half_recip().
4949be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4950be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4951be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4952be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_recip(float v);
4953be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4954be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4955be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4956be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
4957be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_recip(float2 v);
4958be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4959be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4960be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4961be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
4962be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_recip(float3 v);
4963be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4964be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4965be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4966be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
4967be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_recip(float4 v);
4968be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
4969be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
4970d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4971586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
4972586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_recip(half v);
4973586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4974586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4975d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4976586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
4977586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_recip(half2 v);
4978586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4979586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4980d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4981586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
4982586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_recip(half3 v);
4983586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4984586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4985d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
4986586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
4987586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_recip(half4 v);
4988586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
4989586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
4990be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
4991be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_rootn: Approximate nth root
4992be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4993be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Compute the approximate Nth root of a value.
4994be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4995be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also rootn().
4996be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
4997be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
4998be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
4999be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_rootn(float v, int n);
5000be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5001be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5002be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5003be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5004be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_rootn(float2 v, int2 n);
5005be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5006be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5007be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5008be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5009be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_rootn(float3 v, int3 n);
5010be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5011be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5012be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5013be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5014be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_rootn(float4 v, int4 n);
5015be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5016be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5017d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5018586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5019586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_rootn(half v, int n);
5020586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5021586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5022d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5023586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5024586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_rootn(half2 v, int2 n);
5025586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5026586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5027d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5028586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5029586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_rootn(half3 v, int3 n);
5030586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5031586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5032d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5033586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5034586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_rootn(half4 v, int4 n);
5035586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5036586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5037be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5038be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_rsqrt: Approximate reciprocal of a square root
5039be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5040be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns approximate (1 / sqrt(v)).
5041be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5042be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also rsqrt(), half_rsqrt().
5043be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5044be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5045be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5046be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_rsqrt(float v);
5047be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5048be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5049be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5050be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5051be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_rsqrt(float2 v);
5052be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5053be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5054be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5055be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5056be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_rsqrt(float3 v);
5057be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5058be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5059be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5060be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5061be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_rsqrt(float4 v);
5062be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5063be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5064d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5065586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5066586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_rsqrt(half v);
5067586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5068586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5069d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5070586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5071586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_rsqrt(half2 v);
5072586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5073586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5074d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5075586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5076586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_rsqrt(half3 v);
5077586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5078586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5079d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5080586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5081586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_rsqrt(half4 v);
5082586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5083586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5084be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5085be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_sin: Approximate sine
5086be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5087be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate sine of an angle measured in radians.
5088be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5089be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also sin().
5090be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5091be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5092be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5093be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sin(float v);
5094be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5095be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5096be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5097be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5098be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sin(float2 v);
5099be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5100be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5101be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5102be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5103be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sin(float3 v);
5104be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5105be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5106be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5107be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5108be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sin(float4 v);
5109be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5110be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5111d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5112586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5113586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sin(half v);
5114586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5115586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5116d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5117586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5118586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sin(half2 v);
5119586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5120586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5121d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5122586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5123586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sin(half3 v);
5124586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5125586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5126d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5127586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5128586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sin(half4 v);
5129586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5130586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5131be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5132be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_sincos: Approximate sine and cosine
5133be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5134be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate sine and cosine of a value.
5135be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5136be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also sincos().
5137be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5138be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
51396386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   v: Incoming value in radians.
51404a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   cos: *cos will be set to the cosine value.
5141be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
51426386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * Returns: Sine.
5143be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5144be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5145be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((overloadable))
5146be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sincos(float v, float* cos);
5147be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5148be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5149be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5150be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((overloadable))
5151be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sincos(float2 v, float2* cos);
5152be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5153be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5154be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5155be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((overloadable))
5156be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sincos(float3 v, float3* cos);
5157be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5158be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5159be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5160be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((overloadable))
5161be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sincos(float4 v, float4* cos);
5162be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5163be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5164d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5165586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((overloadable))
5166586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sincos(half v, half* cos);
5167586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5168586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5169d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5170586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((overloadable))
5171586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sincos(half2 v, half2* cos);
5172586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5173586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5174d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5175586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((overloadable))
5176586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sincos(half3 v, half3* cos);
5177586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5178586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5179d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5180586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((overloadable))
5181586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sincos(half4 v, half4* cos);
5182586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5183586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5184be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5185be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_sinh: Approximate hyperbolic sine
5186be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5187be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate hyperbolic sine of a value specified in radians.
5188be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5189be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also sinh().
5190be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5191be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5192be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5193be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sinh(float v);
5194be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5195be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5196be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5197be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5198be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sinh(float2 v);
5199be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5200be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5201be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5202be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5203be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sinh(float3 v);
5204be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5205be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5206be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5207be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5208be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sinh(float4 v);
5209be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5210be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5211d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5212586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5213586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sinh(half v);
5214586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5215586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5216d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5217586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5218586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sinh(half2 v);
5219586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5220586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5221d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5222586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5223586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sinh(half3 v);
5224586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5225586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5226d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5227586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5228586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sinh(half4 v);
5229586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5230586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5231be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5232be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_sinpi: Approximate sine of a number multiplied by pi
5233be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5234be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate sine of (v * pi), where (v * pi) is measured in radians.
5235be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5236be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get the sine of a value measured in degrees, call sinpi(v / 180.f).
5237be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5238be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also sinpi().
5239be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5240be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5241be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5242be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sinpi(float v);
5243be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5244be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5245be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5246be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5247be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sinpi(float2 v);
5248be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5249be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5250be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5251be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5252be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sinpi(float3 v);
5253be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5254be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5255be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5256be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5257be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sinpi(float4 v);
5258be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5259be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5260d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5261586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5262586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sinpi(half v);
5263586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5264586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5265d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5266586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5267586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sinpi(half2 v);
5268586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5269586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5270d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5271586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5272586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sinpi(half3 v);
5273586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5274586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5275d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5276586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5277586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sinpi(half4 v);
5278586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5279586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5280be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5281be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_sqrt: Approximate square root
5282be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5283be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate sqrt(v).
5284be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5285be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also sqrt(), half_sqrt().
5286be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5287be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5288be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5289be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sqrt(float v);
5290be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5291be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5292be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5293be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5294be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sqrt(float2 v);
5295be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5296be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5297be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5298be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5299be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sqrt(float3 v);
5300be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5301be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5302be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5303be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5304be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_sqrt(float4 v);
5305be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5306be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5307d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5308586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5309586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sqrt(half v);
5310586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5311586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5312d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5313586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5314586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sqrt(half2 v);
5315586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5316586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5317d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5318586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5319586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sqrt(half3 v);
5320586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5321586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5322d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5323586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5324586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_sqrt(half4 v);
5325586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5326586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5327be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5328be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_tan: Approximate tangent
5329be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5330be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate tangent of an angle measured in radians.
5331be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5332be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5333be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5334be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_tan(float v);
5335be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5336be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5337be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5338be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5339be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_tan(float2 v);
5340be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5341be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5342be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5343be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5344be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_tan(float3 v);
5345be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5346be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5347be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5348be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5349be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_tan(float4 v);
5350be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5351be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5352d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5353586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5354586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_tan(half v);
5355586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5356586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5357d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5358586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5359586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_tan(half2 v);
5360586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5361586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5362d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5363586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5364586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_tan(half3 v);
5365586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5366586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5367d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5368586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5369586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_tan(half4 v);
5370586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5371586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5372be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5373be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_tanh: Approximate hyperbolic tangent
5374be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5375be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate hyperbolic tangent of a value.
5376be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5377be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also tanh().
5378be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5379be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5380be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5381be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_tanh(float v);
5382be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5383be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5384be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5385be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5386be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_tanh(float2 v);
5387be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5388be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5389be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5390be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5391be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_tanh(float3 v);
5392be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5393be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5394be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5395be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5396be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_tanh(float4 v);
5397be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5398be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5399d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5400586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5401586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_tanh(half v);
5402586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5403586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5404d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5405586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5406586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_tanh(half2 v);
5407586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5408586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5409d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5410586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5411586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_tanh(half3 v);
5412586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5413586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5414d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5415586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5416586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_tanh(half4 v);
5417586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5418586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5419be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5420be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_tanpi: Approximate tangent of a number multiplied by pi
5421be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5422be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the approximate tangent of (v * pi), where (v * pi) is measured in radians.
5423be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5424be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get the tangent of a value measured in degrees, call tanpi(v / 180.f).
5425be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5426be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also tanpi().
5427be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5428be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5429be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5430be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_tanpi(float v);
5431be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5432be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5433be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5434be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5435be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_tanpi(float2 v);
5436be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5437be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5438be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5439be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5440be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_tanpi(float3 v);
5441be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5442be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5443be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
5444be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5445be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    native_tanpi(float4 v);
5446be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
5447be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5448d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5449586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5450586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_tanpi(half v);
5451586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5452586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5453d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5454586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5455586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_tanpi(half2 v);
5456586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5457586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5458d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5459586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5460586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_tanpi(half3 v);
5461586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5462586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5463d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5464586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5465586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    native_tanpi(half4 v);
5466586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5467586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5468be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5469be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * nextafter: Next floating point number
5470be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5471be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the next representable floating point number from v towards target.
5472be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
54736386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * In rs_fp_relaxed mode, a denormalized input value may not yield the next denormalized
54746386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * value, as support of denormalized values is optional in relaxed mode.
5475be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5476be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5477be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    nextafter(float v, float target);
5478be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5479be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5480be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    nextafter(float2 v, float2 target);
5481be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5482be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5483be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    nextafter(float3 v, float3 target);
5484be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5485be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5486be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    nextafter(float4 v, float4 target);
5487be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5488d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5489f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5490f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar    nextafter(half v, half target);
5491f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar#endif
5492f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar
5493d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5494f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5495f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar    nextafter(half2 v, half2 target);
5496f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar#endif
5497f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar
5498d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5499f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5500f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar    nextafter(half3 v, half3 target);
5501f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar#endif
5502f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar
5503d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5504f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5505f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar    nextafter(half4 v, half4 target);
5506f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar#endif
5507f86ea3f450f2e8c68e8660cf348f6cf480994af2Pirama Arumuga Nainar
5508be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5509be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * pow: Base raised to an exponent
5510be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5511be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns base raised to the power exponent, i.e. base ^ exponent.
5512be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
55136386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * pown() and powr() are similar.  pown() takes an integer exponent. powr() assumes the
55146386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * base to be non-negative.
5515be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5516be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5517be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    pow(float base, float exponent);
5518be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5519be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5520be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    pow(float2 base, float2 exponent);
5521be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5522be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5523be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    pow(float3 base, float3 exponent);
5524be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5525be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5526be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    pow(float4 base, float4 exponent);
5527be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5528d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5529586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5530586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    pow(half base, half exponent);
5531586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5532586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5533d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5534586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5535586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    pow(half2 base, half2 exponent);
5536586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5537586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5538d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5539586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5540586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    pow(half3 base, half3 exponent);
5541586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5542586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5543d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5544586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5545586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    pow(half4 base, half4 exponent);
5546586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5547586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5548be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5549be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * pown: Base raised to an integer exponent
5550be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5551be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns base raised to the power exponent, i.e. base ^ exponent.
5552be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
55536386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * pow() and powr() are similar.  The both take a float exponent. powr() also assumes the
55546386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * base to be non-negative.
5555386e87ecf4114084c10dd385edc1c2baebe80a04Jean-Luc Brouillet */
5556be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5557be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    pown(float base, int exponent);
5558be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5559be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5560be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    pown(float2 base, int2 exponent);
5561be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5562be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5563be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    pown(float3 base, int3 exponent);
5564be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5565be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5566be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    pown(float4 base, int4 exponent);
5567be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5568d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5569586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5570586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    pown(half base, int exponent);
5571586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5572586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5573d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5574586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5575586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    pown(half2 base, int2 exponent);
5576586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5577586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5578d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5579586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5580586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    pown(half3 base, int3 exponent);
5581586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5582586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5583d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5584586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5585586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    pown(half4 base, int4 exponent);
5586586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5587586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5588be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5589be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * powr: Positive base raised to an exponent
5590be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5591be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns base raised to the power exponent, i.e. base ^ exponent.  base must be >= 0.
5592be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
55936386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * pow() and pown() are similar.  They both make no assumptions about the base.
55946386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * pow() takes a float exponent while pown() take an integer.
5595be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5596be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_powr().
5597be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5598be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5599be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    powr(float base, float exponent);
5600be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5601be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5602be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    powr(float2 base, float2 exponent);
5603be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5604be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5605be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    powr(float3 base, float3 exponent);
5606be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5607be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5608be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    powr(float4 base, float4 exponent);
5609be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5610d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5611586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5612586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    powr(half base, half exponent);
5613586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5614586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5615d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5616586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5617586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    powr(half2 base, half2 exponent);
5618586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5619586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5620d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5621586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5622586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    powr(half3 base, half3 exponent);
5623586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5624586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5625d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5626586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5627586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    powr(half4 base, half4 exponent);
5628586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5629586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5630be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5631be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * radians: Converts degrees into radians
5632be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5633be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Converts from degrees to radians.
5634be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5635be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5636be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    radians(float v);
5637be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5638be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5639be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    radians(float2 v);
5640be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5641be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5642be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    radians(float3 v);
5643be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5644be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5645be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    radians(float4 v);
5646be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5647d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5648586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5649586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    radians(half v);
5650586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5651586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5652d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5653586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5654586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    radians(half2 v);
5655586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5656586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5657d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5658586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5659586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    radians(half3 v);
5660586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5661586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5662d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5663586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5664586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    radians(half4 v);
5665586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5666586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5667be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5668be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * remainder: Remainder of a division
5669be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
56706386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * Returns the remainder of (numerator / denominator), where the quotient is rounded towards
56716386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * the nearest integer.
5672be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5673be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The function fmod() is similar but rounds toward the closest interger.
5674be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For example, fmod(-3.8f, 2.f) returns -1.8f (-3.8f - -1.f * 2.f)
5675be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * while remainder(-3.8f, 2.f) returns 0.2f (-3.8f - -2.f * 2.f).
5676be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5677be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5678be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    remainder(float numerator, float denominator);
5679be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5680be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5681be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    remainder(float2 numerator, float2 denominator);
5682be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5683be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5684be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    remainder(float3 numerator, float3 denominator);
5685be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5686be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5687be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    remainder(float4 numerator, float4 denominator);
5688be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5689d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5690586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5691586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    remainder(half numerator, half denominator);
5692586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5693586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5694d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5695586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5696586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    remainder(half2 numerator, half2 denominator);
5697586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5698586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5699d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5700586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5701586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    remainder(half3 numerator, half3 denominator);
5702586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5703586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5704d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5705586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5706586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    remainder(half4 numerator, half4 denominator);
5707586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5708586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5709be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5710be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * remquo: Remainder and quotient of a division
5711be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5712be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the quotient and the remainder of (numerator / denominator).
5713be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5714be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
5715be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
57166386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * This function is useful for implementing periodic functions.  The low three bits of the
57176386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * quotient gives the quadrant and the remainder the distance within the quadrant.
57186386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * For example, an implementation of sin(x) could call remquo(x, PI / 2.f, &quadrant)
57196386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * to reduce very large value of x to something within a limited range.
5720be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
57216386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * Example: remquo(-23.5f, 8.f, &quot) sets the lowest three bits of quot to 3
57226386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * and the sign negative.  It returns 0.5f.
5723be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5724be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
57256386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   numerator: Numerator.
57266386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   denominator: Denominator.
57274a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   quotient: *quotient will be set to the integer quotient.
5728be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
57296386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * Returns: Remainder, precise only for the low three bits.
5730be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5731be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((overloadable))
5732be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    remquo(float numerator, float denominator, int* quotient);
5733be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5734be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((overloadable))
5735be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    remquo(float2 numerator, float2 denominator, int2* quotient);
5736be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5737be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((overloadable))
5738be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    remquo(float3 numerator, float3 denominator, int3* quotient);
5739be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5740be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((overloadable))
5741be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    remquo(float4 numerator, float4 denominator, int4* quotient);
5742be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5743d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5744586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((overloadable))
5745586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    remquo(half numerator, half denominator, int* quotient);
5746586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5747586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5748d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5749586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((overloadable))
5750586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    remquo(half2 numerator, half2 denominator, int2* quotient);
5751586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5752586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5753d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5754586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((overloadable))
5755586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    remquo(half3 numerator, half3 denominator, int3* quotient);
5756586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5757586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5758d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5759586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((overloadable))
5760586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    remquo(half4 numerator, half4 denominator, int4* quotient);
5761586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5762586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5763be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5764be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rint: Round to even
5765be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5766be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Rounds to the nearest integral value.
5767be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
57686386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * rint() rounds half values to even.  For example, rint(0.5f) returns 0.f and
57696386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * rint(1.5f) returns 2.f.  Similarly, rint(-0.5f) returns -0.f and
57706386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * rint(-1.5f) returns -2.f.
5771be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5772be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * round() is similar but rounds away from zero.  trunc() truncates the decimal fraction.
5773be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5774be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5775be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rint(float v);
5776be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5777be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5778be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rint(float2 v);
5779be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5780be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5781be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rint(float3 v);
5782be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5783be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5784be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rint(float4 v);
5785be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5786d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5787586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5788586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    rint(half v);
5789586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5790586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5791d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5792586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5793586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    rint(half2 v);
5794586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5795586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5796d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5797586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5798586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    rint(half3 v);
5799586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5800586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5801d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5802586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5803586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    rint(half4 v);
5804586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5805586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5806be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5807be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rootn: Nth root
5808be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5809be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Compute the Nth root of a value.
5810be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5811be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_rootn().
5812be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5813be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5814be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rootn(float v, int n);
5815be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5816be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5817be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rootn(float2 v, int2 n);
5818be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5819be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5820be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rootn(float3 v, int3 n);
5821be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5822be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5823be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rootn(float4 v, int4 n);
5824be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5825d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5826586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5827586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    rootn(half v, int n);
5828586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5829586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5830d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5831586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5832586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    rootn(half2 v, int2 n);
5833586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5834586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5835d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5836586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5837586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    rootn(half3 v, int3 n);
5838586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5839586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5840d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5841586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5842586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    rootn(half4 v, int4 n);
5843586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5844586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5845be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5846be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * round: Round away from zero
5847be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5848be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Round to the nearest integral value.
5849be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
58506386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * round() rounds half values away from zero.  For example, round(0.5f) returns 1.f
58516386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * and round(1.5f) returns 2.f.  Similarly, round(-0.5f) returns -1.f
58526386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * and round(-1.5f) returns -2.f.
5853be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5854be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rint() is similar but rounds half values toward even.  trunc() truncates the decimal fraction.
5855be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5856be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5857be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    round(float v);
5858be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5859be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5860be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    round(float2 v);
5861be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5862be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5863be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    round(float3 v);
5864be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5865be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5866be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    round(float4 v);
5867be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5868d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5869586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5870586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    round(half v);
5871586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5872586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5873d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5874586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5875586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    round(half2 v);
5876586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5877586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5878d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5879586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5880586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    round(half3 v);
5881586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5882586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5883d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5884586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5885586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    round(half4 v);
5886586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5887586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5888be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5889be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsqrt: Reciprocal of a square root
5890be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5891be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns (1 / sqrt(v)).
5892be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5893be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also half_rsqrt(), native_rsqrt().
5894be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5895be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5896be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsqrt(float v);
5897be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5898be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5899be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsqrt(float2 v);
5900be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5901be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5902be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsqrt(float3 v);
5903be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5904be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5905be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsqrt(float4 v);
5906be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5907d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5908586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5909586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    rsqrt(half v);
5910586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5911586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5912d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5913586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5914586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    rsqrt(half2 v);
5915586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5916586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5917d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5918586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5919586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    rsqrt(half3 v);
5920586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5921586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5922d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5923586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5924586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    rsqrt(half4 v);
5925586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5926586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5927be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5928be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * sign: Sign of a value
5929be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5930be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the sign of a value.
5931be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5932be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * if (v < 0) return -1.f;
5933be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * else if (v > 0) return 1.f;
5934be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * else return 0.f;
5935be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5936be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5937be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sign(float v);
5938be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5939be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5940be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sign(float2 v);
5941be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5942be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5943be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sign(float3 v);
5944be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5945be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5946be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sign(float4 v);
5947be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5948d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5949586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5950586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sign(half v);
5951586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5952586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5953d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5954586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5955586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sign(half2 v);
5956586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5957586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5958d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5959586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5960586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sign(half3 v);
5961586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5962586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5963d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5964586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
5965586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sign(half4 v);
5966586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5967586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5968be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
5969be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * sin: Sine
5970be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5971be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the sine of an angle measured in radians.
5972be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
5973be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_sin().
5974be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
5975be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
5976be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sin(float v);
5977be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5978be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
5979be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sin(float2 v);
5980be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5981be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
5982be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sin(float3 v);
5983be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5984be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
5985be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sin(float4 v);
5986be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
5987d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5988586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
5989586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sin(half v);
5990586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5991586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5992d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5993586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
5994586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sin(half2 v);
5995586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
5996586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
5997d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
5998586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
5999586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sin(half3 v);
6000586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6001586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6002d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6003586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
6004586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sin(half4 v);
6005586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6006586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6007be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
6008be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * sincos: Sine and cosine
6009be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6010be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the sine and cosine of a value.
6011be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6012be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_sincos().
6013be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6014be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
60156386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   v: Incoming value in radians.
60164a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   cos: *cos will be set to the cosine value.
6017be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
60186386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * Returns: Sine of v.
6019be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
6020be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((overloadable))
6021be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sincos(float v, float* cos);
6022be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6023be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((overloadable))
6024be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sincos(float2 v, float2* cos);
6025be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6026be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((overloadable))
6027be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sincos(float3 v, float3* cos);
6028be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6029be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((overloadable))
6030be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sincos(float4 v, float4* cos);
6031be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6032d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6033586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((overloadable))
6034586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sincos(half v, half* cos);
6035586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6036586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6037d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6038586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((overloadable))
6039586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sincos(half2 v, half2* cos);
6040586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6041586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6042d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6043586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((overloadable))
6044586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sincos(half3 v, half3* cos);
6045586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6046586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6047d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6048586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((overloadable))
6049586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sincos(half4 v, half4* cos);
6050586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6051586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6052be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
6053be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * sinh: Hyperbolic sine
6054be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6055be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the hyperbolic sine of v, where v is measured in radians.
6056be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6057be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_sinh().
6058be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
6059be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
6060be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sinh(float v);
6061be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6062be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
6063be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sinh(float2 v);
6064be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6065be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
6066be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sinh(float3 v);
6067be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6068be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
6069be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sinh(float4 v);
6070be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6071d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6072586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
6073586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sinh(half v);
6074586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6075586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6076d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6077586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
6078586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sinh(half2 v);
6079586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6080586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6081d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6082586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
6083586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sinh(half3 v);
6084586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6085586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6086d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6087586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
6088586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sinh(half4 v);
6089586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6090586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6091be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
6092be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * sinpi: Sine of a number multiplied by pi
6093be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6094be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the sine of (v * pi), where (v * pi) is measured in radians.
6095be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6096be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get the sine of a value measured in degrees, call sinpi(v / 180.f).
6097be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6098be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_sinpi().
6099be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
6100be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
6101be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sinpi(float v);
6102be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6103be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
6104be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sinpi(float2 v);
6105be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6106be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
6107be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sinpi(float3 v);
6108be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6109be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
6110be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sinpi(float4 v);
6111be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6112d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6113586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
6114586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sinpi(half v);
6115586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6116586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6117d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6118586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
6119586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sinpi(half2 v);
6120586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6121586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6122d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6123586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
6124586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sinpi(half3 v);
6125586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6126586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6127d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6128586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
6129586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sinpi(half4 v);
6130586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6131586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6132be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
6133be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * sqrt: Square root
6134be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6135be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the square root of a value.
6136be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6137be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also half_sqrt(), native_sqrt().
6138be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
6139be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
6140be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sqrt(float v);
6141be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6142be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
6143be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sqrt(float2 v);
6144be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6145be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
6146be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sqrt(float3 v);
6147be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6148be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
6149be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    sqrt(float4 v);
6150be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6151d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6152586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
6153586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sqrt(half v);
6154586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6155586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6156d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6157586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
6158586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sqrt(half2 v);
6159586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6160586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6161d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6162586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
6163586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sqrt(half3 v);
6164586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6165586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6166d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6167586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
6168586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    sqrt(half4 v);
6169586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6170586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6171be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
6172be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * step: 0 if less than a value, 0 otherwise
6173be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6174be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns 0.f if v < edge, 1.f otherwise.
6175be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
61766386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * This can be useful to create conditional computations without using loops and branching
61776386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * instructions.  For example, instead of computing (a[i] < b[i]) ? 0.f : atan2(a[i], b[i])
61786386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet * for the corresponding elements of a vector, you could instead use step(a, b) * atan2(a, b).
6179be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
6180be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
6181be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    step(float edge, float v);
6182be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6183be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
6184be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    step(float2 edge, float2 v);
6185be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6186be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
6187be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    step(float3 edge, float3 v);
6188be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6189be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
6190be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    step(float4 edge, float4 v);
6191be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6192d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6193586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
6194586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    step(half edge, half v);
6195586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6196586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6197d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6198586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
6199586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    step(half2 edge, half2 v);
6200586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6201586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6202d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6203586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
6204586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    step(half3 edge, half3 v);
6205586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6206586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6207d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6208586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
6209586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    step(half4 edge, half4 v);
6210586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6211586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6212be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
6213be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    step(float2 edge, float v);
6214be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6215be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
6216be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    step(float3 edge, float v);
6217be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6218be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
6219be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    step(float4 edge, float v);
6220be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6221d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6222586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
6223586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    step(half2 edge, half v);
6224586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6225586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6226d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6227586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
6228586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    step(half3 edge, half v);
6229586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6230586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6231d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6232586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
6233586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    step(half4 edge, half v);
6234586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6235586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6236be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
6237be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
6238be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    step(float edge, float2 v);
6239be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
6240be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6241be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
6242be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
6243be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    step(float edge, float3 v);
6244be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
6245be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6246be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21))
6247be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
6248be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    step(float edge, float4 v);
6249be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
6250be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6251d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6252586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
6253586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    step(half edge, half2 v);
6254586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6255586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6256d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6257586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
6258586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    step(half edge, half3 v);
6259586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6260586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6261d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6262586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
6263586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    step(half edge, half4 v);
6264586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6265586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6266be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
6267be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * tan: Tangent
6268be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6269be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the tangent of an angle measured in radians.
6270be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6271be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_tan().
6272be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
6273be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
6274be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tan(float v);
6275be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6276be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
6277be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tan(float2 v);
6278be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6279be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
6280be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tan(float3 v);
6281be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6282be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
6283be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tan(float4 v);
6284be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6285d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6286586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
6287586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tan(half v);
6288586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6289586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6290d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6291586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
6292586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tan(half2 v);
6293586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6294586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6295d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6296586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
6297586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tan(half3 v);
6298586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6299586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6300d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6301586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
6302586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tan(half4 v);
6303586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6304586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6305be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
6306be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * tanh: Hyperbolic tangent
6307be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6308be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the hyperbolic tangent of a value.
6309be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6310be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_tanh().
6311be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
6312be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
6313be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tanh(float v);
6314be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6315be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
6316be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tanh(float2 v);
6317be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6318be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
6319be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tanh(float3 v);
6320be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6321be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
6322be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tanh(float4 v);
6323be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6324d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6325586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
6326586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tanh(half v);
6327586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6328586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6329d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6330586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
6331586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tanh(half2 v);
6332586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6333586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6334d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6335586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
6336586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tanh(half3 v);
6337586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6338586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6339d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6340586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
6341586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tanh(half4 v);
6342586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6343586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6344be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
6345be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * tanpi: Tangent of a number multiplied by pi
6346be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6347be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the tangent of (v * pi), where (v * pi) is measured in radians.
6348be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6349be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To get the tangent of a value measured in degrees, call tanpi(v / 180.f).
6350be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6351be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also native_tanpi().
6352be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
6353be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
6354be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tanpi(float v);
6355be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6356be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
6357be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tanpi(float2 v);
6358be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6359be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
6360be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tanpi(float3 v);
6361be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6362be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
6363be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tanpi(float4 v);
6364be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6365d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6366586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
6367586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tanpi(half v);
6368586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6369586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6370d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6371586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
6372586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tanpi(half2 v);
6373586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6374586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6375d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6376586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
6377586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tanpi(half3 v);
6378586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6379586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6380d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6381586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
6382586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tanpi(half4 v);
6383586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6384586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6385be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
6386be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * tgamma: Gamma function
6387be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6388be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the gamma function of a value.
6389be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6390be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also lgamma().
6391be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
6392be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
6393be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tgamma(float v);
6394be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6395be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
6396be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tgamma(float2 v);
6397be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6398be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
6399be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tgamma(float3 v);
6400be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6401be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
6402be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    tgamma(float4 v);
6403be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6404d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6405586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
6406586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tgamma(half v);
6407586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6408586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6409d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6410586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
6411586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tgamma(half2 v);
6412586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6413586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6414d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6415586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
6416586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tgamma(half3 v);
6417586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6418586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6419d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6420586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
6421586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    tgamma(half4 v);
6422586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6423586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6424be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
6425be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * trunc: Truncates a floating point
6426be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6427be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Rounds to integral using truncation.
6428be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6429be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For example, trunc(1.7f) returns 1.f and trunc(-1.7f) returns -1.f.
6430be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
6431be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See rint() and round() for other rounding options.
6432be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
6433be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable))
6434be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    trunc(float v);
6435be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6436be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable))
6437be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    trunc(float2 v);
6438be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6439be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable))
6440be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    trunc(float3 v);
6441be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
6442be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable))
6443be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    trunc(float4 v);
64447349547db61d2d458b31c074b902d56d082e5d84Jason Sams
6445d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6446586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half __attribute__((const, overloadable))
6447586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    trunc(half v);
6448586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6449586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6450d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6451586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half2 __attribute__((const, overloadable))
6452586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    trunc(half2 v);
6453586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6454586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6455d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6456586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half3 __attribute__((const, overloadable))
6457586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    trunc(half3 v);
6458586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6459586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6460d46cf8ecf171e3cb27a394f6db8dc4fbdf6272b3Pirama Arumuga Nainar#if (defined(RS_VERSION) && (RS_VERSION >= 24))
6461586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainarextern half4 __attribute__((const, overloadable))
6462586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar    trunc(half4 v);
6463586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar#endif
6464586539cd7d8b1e92cd6c9c31220be56969482ad6Pirama Arumuga Nainar
6465c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet/*
6466c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet * rsClamp: Restrain a value to a range
6467c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet *
646820b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * DEPRECATED.  Do not use.
6469c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet *
647020b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * Clamp a value between low and high.
6471c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet *
6472c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet * Parameters:
64736386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   amount: Value to clamp.
64746386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   low: Lower bound.
64756386ceb3bf25e442513224aaa45691dfe49562d9Jean-Luc Brouillet *   high: Upper bound.
64769df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
6477a4d25bc511c86bb402890ce480ef581654319d75Verena Beckhamextern char __attribute__((const, overloadable
647836e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 22))
647936e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet, deprecated("Use clamp() instead.")
648036e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#endif
648136e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet))
6482c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet    rsClamp(char amount, char low, char high);
648322fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams
6484a4d25bc511c86bb402890ce480ef581654319d75Verena Beckhamextern uchar __attribute__((const, overloadable
648536e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 22))
648636e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet, deprecated("Use clamp() instead.")
648736e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#endif
648836e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet))
6489c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet    rsClamp(uchar amount, uchar low, uchar high);
649022fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams
6491a4d25bc511c86bb402890ce480ef581654319d75Verena Beckhamextern short __attribute__((const, overloadable
649236e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 22))
649336e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet, deprecated("Use clamp() instead.")
649436e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#endif
649536e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet))
6496c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet    rsClamp(short amount, short low, short high);
6497dd663fa8367bfacb6c77b368f91adf614cd0bebaJason Sams
6498a4d25bc511c86bb402890ce480ef581654319d75Verena Beckhamextern ushort __attribute__((const, overloadable
649936e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 22))
650036e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet, deprecated("Use clamp() instead.")
650136e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#endif
650236e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet))
6503c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet    rsClamp(ushort amount, ushort low, ushort high);
65049df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams
6505a4d25bc511c86bb402890ce480ef581654319d75Verena Beckhamextern int __attribute__((const, overloadable
650636e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 22))
650736e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet, deprecated("Use clamp() instead.")
650836e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#endif
650936e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet))
6510c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet    rsClamp(int amount, int low, int high);
6511c61346b91434307c5003029017b54ce9c49112beJason Sams
6512a4d25bc511c86bb402890ce480ef581654319d75Verena Beckhamextern uint __attribute__((const, overloadable
651336e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 22))
651436e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet, deprecated("Use clamp() instead.")
651536e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#endif
651636e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet))
6517c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet    rsClamp(uint amount, uint low, uint high);
6518e1eb6156604d0a4cc4b7e7353aa2fc8dc4d8eadeJason Sams
6519c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet/*
652020b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * rsFrac: Returns the fractional part of a float
652120b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet *
652220b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * DEPRECATED.  Do not use.
652320b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet *
6524c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet * Returns the fractional part of a float
6525e1eb6156604d0a4cc4b7e7353aa2fc8dc4d8eadeJason Sams */
652636e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouilletextern float __attribute__((const, overloadable
652736e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 22))
652836e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet, deprecated("Use fract() instead.")
652936e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet#endif
653036e2be56cd398bf4a318114bbc9fa3f4573c158fJean-Luc Brouillet))
6531c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet    rsFrac(float v);
6532044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams
6533c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet/*
653420b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * rsRand: Pseudo-random number
653520b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet *
6536c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet * Return a random value between 0 (or min_value) and max_malue.
6537e1eb6156604d0a4cc4b7e7353aa2fc8dc4d8eadeJason Sams */
6538c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouilletextern int __attribute__((overloadable))
6539c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet    rsRand(int max_value);
6540c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet
6541c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouilletextern int __attribute__((overloadable))
6542c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet    rsRand(int min_value, int max_value);
6543c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet
6544c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouilletextern float __attribute__((overloadable))
6545c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet    rsRand(float max_value);
6546e1eb6156604d0a4cc4b7e7353aa2fc8dc4d8eadeJason Sams
6547c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouilletextern float __attribute__((overloadable))
6548c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet    rsRand(float min_value, float max_value);
6549c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet
6550c5184e202ced435258adb2cfe2013570e7190954Jean-Luc Brouillet#endif // RENDERSCRIPT_RS_MATH_RSH
6551