diff --git a/api/gen_runtime.cpp b/api/gen_runtime.cpp
index 4570d68..fc60c9e 100644
--- a/api/gen_runtime.cpp
+++ b/api/gen_runtime.cpp
@@ -77,6 +77,10 @@
             " * See the License for the specific language governing permissions and\n"
             " * limitations under the License.\n"
             " */\n\n";
+const char* DOX_HEADER =
+            "/** @file\n"
+            " *\n"
+            " */\n\n";
 
 class Function;
 class Specification;
@@ -745,6 +749,8 @@
     }
     headerFile << LEGAL_NOTICE;
     headerFile << AUTO_GENERATED_WARNING;
+    headerFile << DOX_HEADER;
+
     writeIfdef(headerFile, headerFileName, true);
 
     // Write the functions to the header and test files.
@@ -1188,7 +1194,7 @@
         }
     }
 
-    file << "/*\n";
+    file << "/**\n";
     for (size_t ct = 0; ct < mComment.size(); ct++) {
         if (!mComment[ct].empty()) {
             file << " * " << mComment[ct] << "\n";
diff --git a/api/rs_core_math.spec b/api/rs_core_math.spec
index 2fa4307..9249801 100644
--- a/api/rs_core_math.spec
+++ b/api/rs_core_math.spec
@@ -22,7 +22,11 @@
 arg: #2#1 v compatible(#3)
 ret: #3#1
 comment:
- Component wise conversion from #2#1 to #3#1
+ Component wise conversion from #2#1 to #3#1.
+
+ For the convert_* functions, conversions of floating point values to integer will truncate.
+ Conversions of numbers too large to fit the destination type yield undefined results.
+ For example, converting a float that contains 1.0e18 to a short is undefined.
 version: 9
 end:
 
@@ -34,7 +38,11 @@
 arg: #2#1 v compatible(#3)
 ret: #3#1
 comment:
- Component wise conversion from #2#1 to #3#1
+ Component wise conversion from #2#1 to #3#1.
+
+ For the convert_* functions, conversions of floating point values to integer will truncate.
+ Conversions of numbers too large to fit the destination type yield undefined results.
+ For example, converting a float that contains 1.0e18 to a short is undefined.
 version: 21
 end:
 
@@ -46,7 +54,11 @@
 arg: #2#1 v compatible(#3)
 ret: #3#1
 comment:
- Component wise conversion from #2#1 to #3#1
+ Component wise conversion from #2#1 to #3#1.
+
+ For the convert_* functions, conversions of floating point values to integer will truncate.
+ Conversions of numbers too large to fit the destination type yield undefined results.
+ For example, converting a float that contains 1.0e18 to a short is undefined.
 version: 21
 end:
 
@@ -58,7 +70,11 @@
 arg: #2#1 v compatible(#3)
 ret: #3#1
 comment:
- Component wise conversion from #2#1 to #3#1
+ Component wise conversion from #2#1 to #3#1.
+
+ For the convert_* functions, conversions of floating point values to integer will truncate.
+ Conversions of numbers too large to fit the destination type yield undefined results.
+ For example, converting a float that contains 1.0e18 to a short is undefined.
 version: 21
 end:
 
@@ -69,7 +85,7 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- acos
+ Returns the inverse cosine, in radians.
 version: 9
 end:
 
@@ -80,7 +96,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- acosh
+ Returns the inverse hyperbolic cosine, in radians.
 version: 9
 end:
 
@@ -91,7 +107,9 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- acospi
+ Returns the inverse cosine in radians, divided by pi.
+
+ To get an inverse cosine measured in degrees, use acospi(a) * 180.f.
 version: 9
 end:
 
@@ -102,7 +120,7 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- asin
+ Returns the inverse sine, in radians.
 version: 9
 end:
 
@@ -113,7 +131,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- asinh
+ Returns the inverse hyperbolic sine, in radians.
 version: 9
 end:
 
@@ -124,7 +142,9 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- Return the inverse sine divided by PI.
+ Returns the inverse sine in radians, divided by pi.
+
+ To get an inverse sine measured in degrees, use asinpi(a) * 180.f.
 version: 9
 end:
 
@@ -135,7 +155,7 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- Return the inverse tangent.
+ Returns the inverse tangent, in radians.
 version: 9
 end:
 
@@ -147,7 +167,9 @@
 arg: #2#1 y
 arg: #2#1 x
 comment:
- Return the inverse tangent of y / x.
+ Returns the inverse tangent of y / x, in radians.
+
+ x can be 0.
 version: 9
 end:
 
@@ -158,7 +180,7 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- Return the inverse hyperbolic tangent.
+ Returns the inverse hyperbolic tangent, in radians.
 version: 9
 end:
 
@@ -169,7 +191,9 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- Return the inverse tangent divided by PI.
+ Returns the inverse tangent in radians, divided by pi.
+
+ To get an inverse tangent measured in degrees, use atanpi(a) * 180.f.
 version: 9
 end:
 
@@ -181,7 +205,11 @@
 arg: #2#1 y
 arg: #2#1 x
 comment:
- Return the inverse tangent of y / x, divided by PI.
+ Returns the inverse tangent of y / x, in radians, divided by pi.
+
+ To get an inverse tangent measured in degrees, use atan2pi(x, y) * 180.f.
+
+ x can be 0.
 version: 9
 end:
 
@@ -192,7 +220,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the cube root.
+ Returns the cube root.
 version: 9
 end:
 
@@ -203,7 +231,9 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the smallest integer not less than a value.
+ Returns the smallest integer not less than a value.
+
+ For example, ceil(1.2f) returns 2.f, and ceil(-1.2f) returns -1.f.
 version: 9
 end:
 
@@ -215,7 +245,11 @@
 arg: #2#1 x
 arg: #2#1 y
 comment:
- Copy the sign bit from y to x.
+ Copies the sign from y to x.
+
+ The value returned is either x or -x.
+
+ For example, copysign(4.0f, -2.7f) returns -4.0f and copysign(-4.0f, 2.7f) returns 4.0f.
 version: 9
 end:
 
@@ -226,7 +260,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the cosine.
+ Returns the cosine of an angle measured in radians.
 version: 9
 end:
 
@@ -235,9 +269,9 @@
 t: f32
 name: cosh
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return the hypebolic cosine.
+ Returns the hypebolic cosine of x, where x is measured in radians.
 version: 9
 end:
 
@@ -246,9 +280,11 @@
 t: f32
 name: cospi
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return the cosine of the value * PI.
+ Returns the cosine of (x * pi), where (x * pi) is measured in radians.
+
+ To get the cosine of a value measured in degrees, call cospi(a / 180.f).
 version: 9
 end:
 
@@ -259,7 +295,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the complementary error function.
+ Returns the complementary error function.
 version: 9
 end:
 
@@ -270,7 +306,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the error function.
+ Returns the error function.
 version: 9
 end:
 
@@ -279,9 +315,9 @@
 t: f32
 name: exp
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return e ^ value.
+ Returns e raised to x, i.e. e ^ x.
 version: 9
 end:
 
@@ -290,9 +326,9 @@
 t: f32
 name: exp2
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return 2 ^ value.
+ Returns 2 raised to x, i.e. 2.f ^ x.
 version: 9
 end:
 
@@ -301,9 +337,9 @@
 t: f32
 name: exp10
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return 10 ^ value.
+ Returns 10 raised to x, i.e. 10.f ^ x.
 version: 9
 end:
 
@@ -312,9 +348,9 @@
 t: f32
 name: expm1
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return (e ^ value) - 1.
+ Returns e raised to x minus 1, i.e. (e ^ x) - 1.
 version: 9
 end:
 
@@ -323,9 +359,11 @@
 t: f32
 name: fabs
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return the absolute value of a value.
+ Returns the absolute value of the float x.
+
+ For integers, use abs().
 version: 9
 end:
 
@@ -337,7 +375,9 @@
 arg: #2#1 a
 arg: #2#1 b
 comment:
- Return the positive difference between two values.
+ Returns the positive difference between two values.
+
+ If a > b, returns (a - b) otherwise returns 0f.
 version: 9
 end:
 
@@ -348,7 +388,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the smallest integer not greater than a value.
+ Returns the smallest integer not greater than a value.
 version: 9
 end:
 
@@ -361,20 +401,23 @@
 arg: #2#1 b
 arg: #2#1 c
 comment:
- Return (a * b) + c.
+ Multiply and add.  Returns (a * b) + c.
+
+ This function is identical to mad().
 version: 9
 end:
 
 start:
 w: 1, 2, 3, 4
 t: f32
-# TODO What is the difference between this and max?  Same for min.
 name: fmax
 ret: #2#1
 arg: #2#1 x
 arg: #2#1 y
 comment:
- Return (x < y ? y : x)
+ Returns the maximum of x and y, i.e. (x < y ? y : x).
+
+ The max() function returns identical results but can be applied to more data types.
 version: 9
 end:
 
@@ -386,7 +429,9 @@
 arg: #2#1 x
 arg: #2 y
 comment:
- Return (x < y ? y : x)
+ Returns the maximum of x and y, i.e. (x < y ? y : x).
+
+ Unlike the other variants of fmax() and max(), this function compare each element of x to the scalar y.
 version: 9
 end:
 
@@ -398,7 +443,9 @@
 arg: #2#1 x
 arg: #2#1 y
 comment:
- Return (x > y ? y : x)
+ Returns the minimum of x and y, i.e. (x > y ? y : x).
+
+ The min() function returns identical results but can be applied to more data types.
 version: 9
 end:
 
@@ -410,7 +457,9 @@
 arg: #2#1 x
 arg: #2 y
 comment:
- Return (x > y ? y : x)
+ Returns the minimum of x and y, i.e. (x > y ? y : x)
+
+ Unlike the other variants of fmin() and min(), this function compare each element of x to the scalar y.
 version: 9
 end:
 
@@ -422,7 +471,11 @@
 arg: #2#1 x
 arg: #2#1 y
 comment:
- Return the remainder from x / y
+ Returns the remainder of x / y, where the quotient is rounded towards zero.
+
+ The function remainder() is similar but rounds toward the closest interger.
+ For example, fmod(-3.8f, 2.f) returns -1.8f (-3.8f - -1.f * 2.f)
+ while remainder(-3.8f, 2.f) returns 0.2f (-3.8f - -2.f * 2.f).
 version: 9
 end:
 
@@ -434,9 +487,13 @@
 arg: #2#1 v
 arg: #2#1 *floor
 comment:
- Return fractional part of v
+ Returns the positive fractional part of v, i.e. v - floor(v).
 
- @param floor  floor[0] will be set to the floor of the input value.
+ For example, fract(1.3f, &val) returns 0.3f and sets val to 1.f.
+ fract(-1.3f, &val) returns 0.7f and sets val to -2.f.
+
+ @param v Input value.
+ @param floor  If floor is not null, each element of floor will be set to the floor of the corresponding element of v.
 version: 9
 end:
 
@@ -447,7 +504,10 @@
 ret: #2#1
 arg: #2#1 v
 comment:
- Return fractional part of v
+ Returns the positive fractional part of v, i.e. v - floor(v).
+
+ For example, fract(1.3f, &val) returns 0.3f and sets val to 1.f.
+ fract(-1.3f, &val) returns 0.7f and sets val to -2.f.
 inline:
     #2#1 unused;
     return fract(v, &unused);
@@ -460,11 +520,15 @@
 name: frexp
 ret: #2#1
 arg: #2#1 v
-arg: int#1 *iptr
+arg: int#1 *expo
 comment:
- Return the mantissa and place the exponent into iptr[0]
+ Returns the binary mantissa and exponent of v, e.g. v == mantissa * 2 ^ exponent.
+
+ The mantissa is always between 0.5 (inclusive) and 1.0 (exclusive).
+ See ldexp() for the reverse operation.
 
  @param v Supports float, float2, float3, float4.
+ @param expo  If expo is not null, each element of expo will be set to the exponent of the corresponding element of v.
 version: 9
 end:
 
@@ -476,7 +540,7 @@
 arg: #2#1 x
 arg: #2#1 y
 comment:
- Return sqrt(x*x + y*y)
+ Returns the hypotenuse, i.e. sqrt(x * x + y * y).
 version: 9
 end:
 
@@ -487,7 +551,12 @@
 ret: int#1
 arg: float#1
 comment:
- Return the integer exponent of a value
+ Returns the base two exponent of a value, where the mantissa is between 1.f (inclusive) and 2.f (exclusive).
+
+ For example, ilogb(8.5f) returns 3.  Because of the difference in mantissa, this number is one less than
+ is returned by frexp().
+
+ logb() is similar but returns a float.
 version: 9
 test: custom
 end:
@@ -496,13 +565,15 @@
 w: 1, 2, 3, 4
 name: ldexp
 ret: float#1
-arg: float#1 x
-arg: int#1 y
+arg: float#1 mantissa
+arg: int#1 exponent
 comment:
- Return (x * 2^y)
+ Returns the floating point created from the mantissa and exponent, i.e. (mantissa * 2 ^ exponent).
 
- @param x Supports 1,2,3,4 components
- @param y Supports single component or matching vector.
+ See frexp() for the reverse operation.
+
+ @param mantissa Supports float, float2, float3, and float4.
+ @param exponent Supports single component or matching vector.
 version: 9
 end:
 
@@ -510,13 +581,14 @@
 w: 2, 3, 4
 name: ldexp
 ret: float#1
-arg: float#1 x
-arg: int y
+arg: float#1 mantissa
+arg: int exponent
 comment:
- Return (x * 2^y)
+ Returns the floating point created from the mantissa and exponent, i.e. (mantissa * 2 ^ exponent).
+ See frexp() for the reverse operation.
 
- @param x Supports 1,2,3,4 components
- @param y Supports single component or matching vector.
+ @param mantissa Supports float, float2, float3, and float4.
+ @param exponent Supports single component or matching vector.
 version: 9
 end:
 
@@ -527,7 +599,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the log gamma
+ Returns the natural logarithm of the absolute value of the gamma function, i.e. log(fabs(gamma(value))).
 version: 9
 end:
 
@@ -537,9 +609,15 @@
 name: lgamma
 ret: #2#1
 arg: #2#1 x
-arg: int#1 *y
+arg: int#1 *sign
 comment:
- Return the log gamma and sign
+ Returns the natural logarithm of the absolute value of the gamma function, i.e. log(fabs(gamma(x))).
+
+ Can also return the sign of the gamma function.
+
+ @param x Input value.
+ @param sign  If sign is not null, each element of sign will be set to -1.f if the gamma of the corresponding element of x is negative, otherwise to 1.f.
+
 version: 9
 #TODO Temporary until bionic & associated drivers are fixed
 test: custom
@@ -552,7 +630,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the natural logarithm.
+ Returns the natural logarithm.
 version: 9
 end:
 
@@ -563,7 +641,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the base 2 logarithm.
+ Returns the base 2 logarithm.
 version: 9
 end:
 
@@ -574,7 +652,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the base 10 logarithm.
+ Returns the base 10 logarithm.
 version: 9
 end:
 
@@ -583,9 +661,9 @@
 t: f32
 name: log1p
 ret: #2#1
-arg: #2#1
+arg: #2#1 v
 comment:
- Return the natural logarithm of (v + 1.0f)
+ Returns the natural logarithm of (v + 1.f).
 version: 9
 end:
 
@@ -596,7 +674,12 @@
 ret: #2#1
 arg: #2#1
 comment:
- Compute the exponent of the value.
+ Returns the base two exponent of a value, where the mantissa is between 1.f (inclusive) and 2.f (exclusive).
+
+ For example, ilogb(8.5f) returns 3.f.  Because of the difference in mantissa, this number is one less than
+ is returned by frexp().
+
+ ilogb() is similar but returns an integer.
 version: 9
 end:
 
@@ -609,7 +692,9 @@
 arg: #2#1 b
 arg: #2#1 c
 comment:
- Compute (a * b) + c
+ Multiply and add.  Returns (a * b) + c.
+
+ This function is identical to fma().
 version: 9
 end:
 
@@ -621,7 +706,9 @@
 arg: #2#1 x
 arg: #2#1 *iret
 comment:
- Return the integral and fractional components of a number.
+ Returns the integral and fractional components of a number.
+
+ Both components will have the same sign as x.  For example, for an input of -3.72f, iret will be set to -3.f and .72f will be returned.
 
  @param x Source value
  @param iret iret[0] will be set to the integral portion of the number.
@@ -636,7 +723,9 @@
 ret: #2#1
 arg: uint#1
 comment:
- generate a nan
+ Returns a NaN value (Not a Number).
+
+ The argument is embedded into the return value and can be used to distinguish various NaNs.
 version: 9
 end:
 
@@ -648,7 +737,7 @@
 arg: #2#1 x
 arg: #2#1 y
 comment:
- Return the next floating point number from x towards y.
+ Returns the next floating point number from x towards y.
 version: 9
 end:
 
@@ -660,7 +749,9 @@
 arg: #2#1 x
 arg: #2#1 y
 comment:
- Return x ^ y.
+ Returns x raised to the power y, i.e. x ^ y.
+
+ pown() and powr() are similar.  pown() takes an integer exponent. powr() assumes the base to be non-negative.
 version: 9
 end:
 
@@ -672,7 +763,9 @@
 arg: #2#1 x
 arg: int#1 y
 comment:
- Return x ^ y.
+ Returns x raised to the power y, i.e. x ^ y.
+
+ pow() and powr() are similar.  The both take a float exponent. powr() also assumes the base to be non-negative.
 version: 9
 end:
 
@@ -684,8 +777,9 @@
 arg: #2#1 x range(0,3000)
 arg: #2#1 y
 comment:
- Return x ^ y.
- x must be >= 0
+ Returns x raised to the power y, i.e. x ^ y.  x must be >= 0.
+
+ pow() and pown() are similar.  They both make no assumptions about the base.  pow() takes a float exponent while pown() take an integer.
 version: 9
 end:
 
@@ -697,7 +791,11 @@
 arg: #2#1 x
 arg: #2#1 y
 comment:
- Return round x/y to the nearest integer then compute the remainder.
+ Returns the remainder of x / y, where the quotient is rounded towards the nearest integer.
+
+ The function fmod() is similar but rounds toward the closest interger.
+ For example, fmod(-3.8f, 2.f) returns -1.8f (-3.8f - -1.f * 2.f)
+ while remainder(-3.8f, 2.f) returns 0.2f (-3.8f - -2.f * 2.f).
 version: 9
 end:
 
@@ -710,7 +808,18 @@
 arg: #2#1 c
 arg: int#1 *d
 comment:
- Return the quotient and the remainder of b/c.  Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
+ Returns the quotient and the remainder of b / c.
+
+ Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
+
+ This function is useful for implementing periodic functions.  The low three bits of the quotient gives the quadrant and the remainder the distance within the quadrant.  For example, an implementation of sin(x) could call remquo(x, PI / 2.f, &quadrant) to reduce very large value of x to something within a limited range.
+
+ Example: remquo(-23.5f, 8.f, &quot) sets the lowest three bits of quot to 3 and the sign negative.  It returns 0.5f.
+
+ @param b The numerator.
+ @param c The denominator.
+ @param *d d[0] will be set to the integer quotient.
+ @return The remainder, precise only for the low three bits.
 version: 9
 test: custom
 end:
@@ -722,7 +831,11 @@
 ret: #2#1
 arg: #2#1
 comment:
- Round to the nearest integral value.
+ Rounds to the nearest integral value.
+
+ rint() rounds half values to even.  For example, rint(0.5f) returns 0.f and rint(1.5f) returns 2.f.  Similarly, rint(-0.5f) returns -0.f and rint(-1.5f) returns -2.f.
+
+ round() is similar but rounds away from zero.  trunc() truncates the decimal fraction.
 version: 9
 end:
 
@@ -745,7 +858,11 @@
 ret: #2#1
 arg: #2#1
 comment:
- Round to the nearest integral value.  Half values are rounded away from zero.
+ Round to the nearest integral value.
+
+ round() rounds half values away from zero.  For example, round(0.5f) returns 1.f and round(1.5f) returns 2.f.  Similarly, round(-0.5f) returns -1.f and round(-1.5f) returns -2.f.
+
+ rint() is similar but rounds half values toward even.  trunc() truncates the decimal fraction.
 version: 9
 end:
 
@@ -756,7 +873,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return (1 / sqrt(value)).
+ Returns (1 / sqrt(value)).
 version: 9
 end:
 
@@ -767,7 +884,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the square root of a value.
+ Returns the square root of a value.
 version: 9
 end:
 
@@ -778,7 +895,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the sine of a value specified in radians.
+ Returns the sine of an angle measured in radians.
 version: 9
 end:
 
@@ -790,9 +907,9 @@
 arg: #2#1 v
 arg: #2#1 *cosptr
 comment:
- Return the sine and cosine of a value.
+ Returns the sine and cosine of a value.
 
- @return sine
+ @return sine of v
  @param v The incoming value in radians
  @param *cosptr cosptr[0] will be set to the cosine value.
 version: 9
@@ -805,7 +922,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the hyperbolic sine of a value specified in radians.
+ Returns the hyperbolic sine of x, where x is measured in radians.
 version: 9
 end:
 
@@ -814,9 +931,11 @@
 t: f32
 name: sinpi
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return the sin(v * PI).
+ Returns the sine of (x * pi), where (x * pi) is measured in radians.
+
+ To get the sine of a value measured in degrees, call sinpi(a / 180.f).
 version: 9
 end:
 
@@ -825,9 +944,9 @@
 t: f32
 name: tan
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return the tangent of a value.
+ Returns the tangent of an angle measured in radians.
 version: 9
 end:
 
@@ -838,7 +957,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the hyperbolic tangent of a value.
+ Returns the hyperbolic tangent of a value.
 version: 9
 end:
 
@@ -847,9 +966,11 @@
 t: f32
 name: tanpi
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return tan(v * PI)
+ Returns the tangent of (x * pi), where (x * pi) is measured in radians.
+
+ To get the tangent of a value measured in degrees, call tanpi(a / 180.f).
 version: 9
 end:
 
@@ -860,7 +981,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Compute the gamma function of a value.
+ Returns the gamma function of a value.
 version: 9
 end:
 
@@ -871,7 +992,11 @@
 ret: #2#1
 arg: #2#1
 comment:
- ound to integral using truncation.
+ Rounds to integral using truncation.
+
+ For example, trunc(1.7f) returns 1.f and trunc(-1.7f) returns -1.f.
+
+ See rint() and round() for other rounding options.
 version: 9
 end:
 
@@ -882,9 +1007,11 @@
 t: i8, i16, i32
 name: abs
 ret: u#2#1
-arg: #2#1 value
+arg: #2#1 n
 comment:
- Return the absolute value of a value.
+ Returns the absolute value of the integer n.
+
+ For floats, use fabs().
 version: 9
 end:
 
@@ -895,7 +1022,9 @@
 ret: #2#1
 arg: #2#1 value
 comment:
- Return the number of leading 0-bits in a value.
+ Returns the number of leading 0-bits in a value.
+
+ For example, clz((char)0x03) returns 5.
 version: 9
 end:
 
@@ -907,7 +1036,7 @@
 arg: #2#1
 arg: #2#1
 comment:
- Return the minimum value from two arguments
+ Returns the minimum value from two arguments
 version: 9
 end:
 
@@ -919,7 +1048,7 @@
 arg: #2#1 v1
 arg: #2#1 v2
 comment:
- Return the minimum value from two arguments
+ Returns the minimum value from two arguments
 inline:
  return (v1 < v2 ? v1 : v2);
 version: 9 19
@@ -933,7 +1062,7 @@
 arg: #2#1 v1
 arg: #2#1 v2
 comment:
- Return the minimum value from two arguments
+ Returns the minimum value from two arguments
 inline:
  #2#1 tmp;
  tmp.x = (v1.x < v2.x ? v1.x : v2.x);
@@ -950,7 +1079,7 @@
 arg: #2#1 v1
 arg: #2#1 v2
 comment:
- Return the minimum value from two arguments
+ Returns the minimum value from two arguments
 inline:
  #2#1 tmp;
  tmp.x = (v1.x < v2.x ? v1.x : v2.x);
@@ -968,7 +1097,7 @@
 arg: #2#1 v1
 arg: #2#1 v2
 comment:
- Return the minimum value from two arguments
+ Returns the minimum value from two arguments
 inline:
  #2#1 tmp;
  tmp.x = (v1.x < v2.x ? v1.x : v2.x);
@@ -987,7 +1116,7 @@
 arg: #2#1 v1
 arg: #2#1 v2
 comment:
- Return the minimum value from two arguments
+ Returns the minimum value from two arguments
 version: 21
 end:
 
@@ -999,7 +1128,7 @@
 arg: #2#1
 arg: #2#1
 comment:
- Return the maximum value from two arguments
+ Returns the maximum value from two arguments
 version: 9
 end:
 
@@ -1011,7 +1140,7 @@
 arg: #2#1 v1
 arg: #2#1 v2
 comment:
- Return the maximum value from two arguments
+ Returns the maximum value from two arguments
 inline:
  return (v1 > v2 ? v1 : v2);
 version: 9 19
@@ -1025,7 +1154,7 @@
 arg: #2#1 v1
 arg: #2#1 v2
 comment:
- Return the maximum value from two arguments
+ Returns the maximum value from two arguments
 inline:
  #2#1 tmp;
  tmp.x = (v1.x > v2.x ? v1.x : v2.x);
@@ -1042,7 +1171,7 @@
 arg: #2#1 v1
 arg: #2#1 v2
 comment:
- Return the maximum value from two arguments
+ Returns the maximum value from two arguments
 inline:
  #2#1 tmp;
  tmp.x = (v1.x > v2.x ? v1.x : v2.x);
@@ -1060,7 +1189,7 @@
 arg: #2#1 v1
 arg: #2#1 v2
 comment:
- Return the maximum value from two arguments
+ Returns the maximum value from two arguments
 inline:
  #2#1 tmp;
  tmp.x = (v1.x > v2.x ? v1.x : v2.x);
@@ -1079,7 +1208,7 @@
 arg: #2#1 v1
 arg: #2#1 v2
 comment:
- Return the maximum value from two arguments
+ Returns the maximum value from two arguments
 version: 21
 end:
 
@@ -1092,11 +1221,15 @@
 arg: #2#1 min_value
 arg: #2#1 max_value above(min_value)
 comment:
- Clamp a value to a specified high and low bound.
+ Clamps a value to a specified high and low bound.
 
- @param amount value to be clamped.  Supports 1,2,3,4 components
+ clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+
+ If min_value is greater than max_value, the results are undefined.
+
+ @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  @param min_value Lower bound, must be scalar or matching vector.
- @param max_value High bound, must match type of low
+ @param max_value High bound, must match the type of low.
 version: 9
 end:
 
@@ -1109,11 +1242,15 @@
 arg: #2 min_value
 arg: #2 max_value above(min_value)
 comment:
- Clamp a value to a specified high and low bound.
+ Clamps a value to a specified high and low bound.
 
- @param amount value to be clamped.  Supports 1,2,3,4 components
+ clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+
+ If min_value is greater than max_value, the results are undefined.
+
+ @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  @param min_value Lower bound, must be scalar or matching vector.
- @param max_value High bound, must match type of low
+ @param max_value High bound, must match the type of low.
 version: 9
 end:
 
@@ -1126,11 +1263,15 @@
 arg: #2#1 min_value
 arg: #2#1 max_value above(min_value)
 comment:
- Clamp a value to a specified high and low bound.
+ Clamps a value to a specified high and low bound.
 
- @param amount value to be clamped.  Supports 1,2,3,4 components
+ clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+
+ If min_value is greater than max_value, the results are undefined.
+
+ @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  @param min_value Lower bound, must be scalar or matching vector.
- @param max_value High bound, must match type of low
+ @param max_value High bound, must match the type of low.
 version: 19
 end:
 
@@ -1143,11 +1284,15 @@
 arg: #2 min_value
 arg: #2 max_value above(min_value)
 comment:
- Clamp a value to a specified high and low bound.
+ Clamps a value to a specified high and low bound.
 
- @param amount value to be clamped.  Supports 1,2,3,4 components
+ clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+
+ If min_value is greater than max_value, the results are undefined.
+
+ @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  @param min_value Lower bound, must be scalar or matching vector.
- @param max_value High bound, must match type of low
+ @param max_value High bound, must match the type of low.
 version: 19
 end:
 
@@ -1158,7 +1303,7 @@
 ret: #2#1
 arg: #2#1 value
 comment:
- Convert from radians to degrees.
+ Converts from radians to degrees.
 version: 9
 end:
 
@@ -1171,7 +1316,7 @@
 arg: #2#1 stop
 arg: #2#1 amount
 comment:
- return start + ((stop - start) * amount)
+ Returns start + ((stop - start) * amount).
 version: 9
 end:
 
@@ -1184,7 +1329,9 @@
 arg: #2#1 stop
 arg: #2 amount
 comment:
- return start + ((stop - start) * amount)
+ Returns start + ((stop - start) * amount).
+
+ This can be useful for mixing two values.  For example, to create a new color that is 40% color1 and 60% color2, use mix(color1, color2, 0.6f).
 version: 9
 end:
 
@@ -1195,7 +1342,7 @@
 ret: #2#1
 arg: #2#1 value
 comment:
- Convert from degrees to radians.
+ Converts from degrees to radians.
 version: 9
 end:
 
@@ -1207,10 +1354,9 @@
 arg: #2#1 edge
 arg: #2#1 v
 comment:
- if (v < edge)
-     return 0.f;
- else
-     return 1.f;
+ Returns 0.f if v < edge, 1.f otherwise.
+
+ This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a[i] < b[i]) ? 0.f : atan2(a[i], b[i]) for the corresponding elements of a vector, you could instead use step(a, b) * atan2(a, b).
 version: 9
 end:
 
@@ -1222,10 +1368,9 @@
 arg: #2#1 edge
 arg: #2 v
 comment:
- if (v < edge)
-     return 0.f;
- else
-     return 1.f;
+ Returns 0.f if v < edge, 1.f otherwise.
+
+ This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a[i] < b) ? 0.f : atan2(a[i], b) for each element of a vector, you could instead use step(a, b) * atan2(a, b).
 version: 9
 end:
 
@@ -1237,10 +1382,9 @@
 arg: #2 edge
 arg: #2#1 v
 comment:
- if (v < edge)
-     return 0.f;
- else
-     return 1.f;
+ Returns 0.f if v < edge, 1.f otherwise.
+
+ This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a < b[i]) ? 0.f : atan2(a, b[i]) for each element of a vector, you could instead use step(a, b) * atan2(a, b).
 version: 21
 end:
 
@@ -1251,7 +1395,7 @@
 ret: #2#1
 arg: #2#1 v
 comment:
- Return the sign of a value.
+ Returns the sign of a value.
 
  if (v < 0) return -1.f;
  else if (v > 0) return 1.f;
@@ -1267,7 +1411,7 @@
 arg: #2#1 lhs
 arg: #2#1 rhs
 comment:
- Compute the cross product of two vectors.
+ Computes the cross product of two vectors.
 version: 9
 test: vector
 end:
@@ -1280,7 +1424,7 @@
 arg: #2#1 lhs
 arg: #2#1 rhs
 comment:
- Compute the dot product of two vectors.
+ Computes the dot product of two vectors.
 version: 9
 test: vector
 end:
@@ -1292,7 +1436,7 @@
 ret: #2
 arg: #2#1 v
 comment:
- Compute the length of a vector.
+ Computes the length of a vector.
 version: 9
 test: vector
 end:
@@ -1318,6 +1462,8 @@
 arg: #2#1 v
 comment:
  Normalize a vector.
+
+ For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
 version: 9
 test: vector
 end:
@@ -1329,7 +1475,9 @@
 ret: #2#1
 arg: #2#1 v
 comment:
- Return the approximate reciprocal of a value.
+ Returns the approximate reciprocal of a value.
+
+ The precision is that of a 16 bit floating point value.
 version: 17
 end:
 
@@ -1340,7 +1488,9 @@
 ret: #2#1
 arg: #2#1 v
 comment:
- Return the approximate square root of a value.
+ Returns the approximate square root of a value.
+
+ The precision is that of a 16 bit floating point value.
 version: 17
 end:
 
@@ -1351,7 +1501,9 @@
 ret: #2#1
 arg: #2#1 v
 comment:
- Return the approximate value of (1.f / sqrt(value)).
+ Returns the approximate value of (1.f / sqrt(value)).
+
+ The precision is that of a 16 bit floating point value.
 version: 17
 end:
 
@@ -1362,7 +1514,9 @@
 ret: #2
 arg: #2#1 v
 comment:
- Compute the approximate length of a vector.
+ Computes the approximate length of a vector.
+
+ The precision is what would be expected from doing the computation using 16 bit floating point values.
 version: 17
 test: vector
 end:
@@ -1375,7 +1529,9 @@
 arg: #2#1 lhs
 arg: #2#1 rhs
 comment:
- Compute the approximate distance between two points.
+ Computes the approximate distance between two points.
+
+ The precision is what would be expected from doing the computation using 16 bit floating point values.
 version: 17
 test: vector
 end:
@@ -1387,7 +1543,11 @@
 ret: #2#1
 arg: #2#1 v
 comment:
- Approximately normalize a vector.
+ Approximately normalizes a vector.
+
+ For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
+
+ The precision is what would be expected from doing the computation using 16 bit floating point values.
 version: 17
 test: vector
 end:
@@ -1399,9 +1559,9 @@
 ret: #2#1
 arg: #2#1 v range(-86,86)
 comment:
- Fast approximate exp
- valid for inputs -86.f to 86.f
- Max 8192 ulps of error
+ Fast approximate exp.
+
+ It is valid for inputs from -86.f to 86.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
 version: 18
 test: limited
 end:
@@ -1413,9 +1573,9 @@
 ret: #2#1
 arg: #2#1 v range(-125,125)
 comment:
- Fast approximate exp2
- valid for inputs -125.f to 125.f
- Max 8192 ulps of error
+ Fast approximate exp2.
+
+ It is valid for inputs from -125.f to 125.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
 version: 18
 test: limited
 end:
@@ -1427,9 +1587,9 @@
 ret: #2#1
 arg: #2#1 v range(-37,37)
 comment:
- Fast approximate exp10
- valid for inputs -37.f to 37.f
- Max 8192 ulps of error
+ Fast approximate exp10.
+
+ It is valid for inputs from -37.f to 37.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
 version: 18
 test: limited
 end:
@@ -1441,7 +1601,8 @@
 ret: #2#1
 arg: #2#1 v range(10e-10,10e10)
 comment:
- Fast approximate log
+ Fast approximate log.
+
  It is not accurate for values very close to zero.
 version: 18
 test: limited
@@ -1454,7 +1615,8 @@
 ret: #2#1
 arg: #2#1 v range(10e-10,10e10)
 comment:
- Fast approximate log2
+ Fast approximate log2.
+
  It is not accurate for values very close to zero.
 version: 18
 test: limited
@@ -1467,7 +1629,8 @@
 ret: #2#1
 arg: #2#1 v range(10e-10,10e10)
 comment:
- Fast approximate log10
+ Fast approximate log10.
+
  It is not accurate for values very close to zero.
 version: 18
 test: limited
@@ -1481,9 +1644,11 @@
 arg: #2#1 v range(0,256)
 arg: #2#1 y range(-15,15)
 comment:
- Fast approximate v ^ y
- v must be between 0.f and 256.f
- y must be between -15.f and 15.f
+ Fast approximate v ^ y.
+
+ v must be between 0.f and 256.f.
+ y must be between -15.f and 15.f.
+
  It is not accurate for values of v very close to zero.
 version: 18
 test: limited
@@ -1497,7 +1662,7 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- acos
+ Returns the approximate inverse cosine, in radians.
 version: 21
 # TODO Temporary
 test: limited(0.0005)
@@ -1510,7 +1675,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- acosh
+ Returns the approximate inverse hyperbolic cosine, in radians.
 version: 21
 # TODO Temporary
 test: limited(0.0005)
@@ -1523,7 +1688,9 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- acospi
+ Returns the approximate inverse cosine in radians, divided by pi.
+
+ To get an inverse cosine measured in degrees, use acospi(a) * 180.f.
 version: 21
 # TODO Temporary
 test: limited(0.0005)
@@ -1536,7 +1703,7 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- asin
+ Returns the approximate inverse sine, in radians.
 version: 21
 # TODO Temporary
 test: limited(0.0005)
@@ -1549,7 +1716,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- asinh
+ Returns the approximate inverse hyperbolic sine, in radians.
 version: 21
 # TODO Temporary
 test: limited(0.0005)
@@ -1562,7 +1729,9 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- Return the inverse sine divided by PI.
+ Returns the approximate inverse sine in radians, divided by pi.
+
+ To get an inverse sine measured in degrees, use asinpi(a) * 180.f.
 version: 21
 # TODO Temporary
 test: limited(0.0005)
@@ -1575,7 +1744,7 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- Return the inverse tangent.
+ Returns the approximate inverse tangent, in radians.
 version: 21
 # TODO Temporary
 test: limited(0.0005)
@@ -1589,7 +1758,9 @@
 arg: #2#1 y
 arg: #2#1 x
 comment:
- Return the inverse tangent of y / x.
+ Returns the approximate inverse tangent of y / x, in radians.
+
+ x can be 0.
 version: 21
 # TODO Temporary
 test: limited(0.0005)
@@ -1602,7 +1773,7 @@
 ret: #2#1
 arg: #2#1 in range(-1,1)
 comment:
- Return the inverse hyperbolic tangent.
+ Returns the approximate inverse hyperbolic tangent, in radians.
 version: 21
 # TODO Temporary
 test: limited(0.0005)
@@ -1615,7 +1786,9 @@
 ret: #2#1
 arg: #2#1 v range(-1,1)
 comment:
- Return the inverse tangent divided by PI.
+ Returns the approximate inverse tangent in radians, divided by pi.
+
+ To get an inverse tangent measured in degrees, use atanpi(a) * 180.f.
 version: 21
 # TODO Temporary
 test: limited(0.0005)
@@ -1629,7 +1802,11 @@
 arg: #2#1 y
 arg: #2#1 x
 comment:
- Return the inverse tangent of y / x, divided by PI.
+ Returns the approximate inverse tangent of y / x, in radians, divided by pi.
+
+ To get an inverse tangent measured in degrees, use atan2pi(x, y) * 180.f.
+
+ x can be 0.
 version: 21
 # TODO Temporary
 test: limited(0.0005)
@@ -1642,7 +1819,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the cube root.
+ Returns the approximate cubic root.
 version: 21
 end:
 
@@ -1653,7 +1830,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the cosine.
+ Returns the approximate cosine of an angle measured in radians.
 version: 21
 end:
 
@@ -1664,7 +1841,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the hypebolic cosine.
+ Returns the approximate hypebolic cosine.
 version: 21
 end:
 
@@ -1673,9 +1850,11 @@
 t: f32
 name: native_cospi
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return the cosine of the value * PI.
+ Returns the approximate cosine of (x * pi), where (x * pi) is measured in radians.
+
+ To get the cosine of a value measured in degrees, call cospi(a / 180.f).
 version: 21
 end:
 
@@ -1686,7 +1865,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return (e ^ value) - 1.
+ Returns the approximate (e ^ value) - 1.
 version: 21
 end:
 
@@ -1698,7 +1877,7 @@
 arg: #2#1 lhs
 arg: #2#1 rhs
 comment:
- Compute the approximate distance between two points.
+ Computes the approximate distance between two points.
 version: 21
 test: vector
 end:
@@ -1711,7 +1890,7 @@
 arg: #2#1 lhs
 arg: #2#1 rhs
 comment:
- Compute the approximate division result of two values.
+ Computes the approximate division result of two values.
 version: 21
 end:
 
@@ -1723,7 +1902,7 @@
 arg: #2#1 x
 arg: #2#1 y
 comment:
- Return native_sqrt(x*x + y*y)
+ Returns the approximate native_sqrt(x*x + y*y)
 version: 21
 end:
 
@@ -1734,7 +1913,7 @@
 ret: #2#1
 arg: #2#1 v
 comment:
- Normalize a vector.
+ Approximately normalizes a vector.
 version: 21
 test: vector
 end:
@@ -1758,7 +1937,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the natural logarithm of (v + 1.0f)
+ Returns the approximate natural logarithm of (v + 1.0f)
 version: 21
 end:
 
@@ -1769,7 +1948,7 @@
 ret: #2#1
 arg: #2#1 v
 comment:
- Return the approximate reciprocal of a value.
+ Returns the approximate approximate reciprocal of a value.
 version: 21
 end:
 
@@ -1781,7 +1960,7 @@
 arg: #2#1 v
 arg: int#1 n
 comment:
- Compute the Nth root of a value.
+ Compute the approximate Nth root of a value.
 version: 21
 end:
 
@@ -1792,7 +1971,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return (1 / sqrt(value)).
+ Returns approximate (1 / sqrt(value)).
 version: 21
 end:
 
@@ -1803,7 +1982,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the sine of a value specified in radians.
+ Returns the approximate sine of an angle measured in radians.
 version: 21
 end:
 
@@ -1815,7 +1994,7 @@
 arg: #2#1 v
 arg: #2#1 *cosptr
 comment:
- Return the sine and cosine of a value.
+ Returns the approximate sine and cosine of a value.
 
  @return sine
  @param v The incoming value in radians
@@ -1832,7 +2011,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the hyperbolic sine of a value specified in radians.
+ Returns the approximate hyperbolic sine of a value specified in radians.
 version: 21
 end:
 
@@ -1841,9 +2020,11 @@
 t: f32
 name: native_sinpi
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return the sin(v * PI).
+ Returns the approximate sine of (x * pi), where (x * pi) is measured in radians.
+
+ To get the sine of a value measured in degrees, call sinpi(a / 180.f).
 version: 21
 end:
 
@@ -1854,7 +2035,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the aproximate sqrt(v).
+ Returns the approximate sqrt(v).
 version: 21
 end:
 
@@ -1865,7 +2046,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the tangent of a value.
+ Returns the approximate tangent of an angle measured in radians.
 version: 21
 end:
 
@@ -1876,7 +2057,7 @@
 ret: #2#1
 arg: #2#1
 comment:
- Return the hyperbolic tangent of a value.
+ Returns the approximate hyperbolic tangent of a value.
 version: 21
 end:
 
@@ -1885,10 +2066,10 @@
 t: f32
 name: native_tanpi
 ret: #2#1
-arg: #2#1
+arg: #2#1 x
 comment:
- Return tan(v * PI)
+ Returns the approximate tangent of (x * pi), where (x * pi) is measured in radians.
+
+ To get the tangent of a value measured in degrees, call tanpi(a / 180.f).
 version: 21
 end:
-
-
diff --git a/scriptc/rs_core.rsh b/scriptc/rs_core.rsh
index 2052a2e..c1c96aa 100644
--- a/scriptc/rs_core.rsh
+++ b/scriptc/rs_core.rsh
@@ -121,6 +121,7 @@
     uint32_t arrayEnd;
 } rs_script_call_t;
 
+#if !defined(RS_VERSION) || (RS_VERSION < 14)
 /**
  * Make a script to script call to launch work. One of the input or output is
  * required to be a valid object. The input and output must be of the same
@@ -137,7 +138,6 @@
  *           NULL.
  *
  *  */
-#if !defined(RS_VERSION) || (RS_VERSION < 14)
 extern void __attribute__((overloadable))
     rsForEach(rs_script script, rs_allocation input,
               rs_allocation output, const void * usrData,
@@ -148,10 +148,8 @@
 extern void __attribute__((overloadable))
     rsForEach(rs_script script, rs_allocation input,
               rs_allocation output, const void * usrData);
-#else
 
-
-#if (RS_VERSION < 21)
+#elif (RS_VERSION < 21)
 /**
  * Make a script to script call to launch work. One of the input or output is
  * required to be a valid object. The input and output must be of the same
@@ -172,24 +170,35 @@
  */
 extern void __attribute__((overloadable))
     rsForEach(rs_script script, rs_allocation input, rs_allocation output,
-              const void * usrData, size_t usrDataLen, const rs_script_call_t *);
+              const void * usrData, size_t usrDataLen, const rs_script_call_t *sc);
 /**
  * \overload
  */
 extern void __attribute__((overloadable))
     rsForEach(rs_script script, rs_allocation input, rs_allocation output,
               const void * usrData, size_t usrDataLen);
-#endif
 
 /**
  * \overload
  */
 extern void __attribute__((overloadable))
     rsForEach(rs_script script, rs_allocation input, rs_allocation output);
+
+#else
+/**
+ * Make a script to script call to launch work. One of the input or output is
+ * required to be a valid object. The input and output must be of the same
+ * dimensions.
+ * API 21+
+ *
+ * @param script The target script to call
+ * @param input The allocation to source data from
+ * @param output the allocation to write date into
+ */
+extern void __attribute__((overloadable))
+    rsForEach(rs_script script, rs_allocation input, rs_allocation output);
 #endif
 
-
-
 #undef _RS_RUNTIME
 
 #endif
diff --git a/scriptc/rs_core_math.rsh b/scriptc/rs_core_math.rsh
index 287a1b9..ab1f7ee 100644
--- a/scriptc/rs_core_math.rsh
+++ b/scriptc/rs_core_math.rsh
@@ -16,119 +16,147 @@
 
 // Don't edit this file!  It is auto-generated by frameworks/rs/api/gen_runtime.
 
+/** @file
+ *
+ */
+
 #ifndef __rs_core_math_rsh__
 #define __rs_core_math_rsh__
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the integer n.
+ *
+ * For floats, use fabs().
  *
  * Supported by API versions 9 and newer.
  */
-extern uchar __attribute__((const, overloadable))abs(char value);
+extern uchar __attribute__((const, overloadable))abs(char n);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the integer n.
+ *
+ * For floats, use fabs().
  *
  * Supported by API versions 9 and newer.
  */
-extern uchar2 __attribute__((const, overloadable))abs(char2 value);
+extern uchar2 __attribute__((const, overloadable))abs(char2 n);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the integer n.
+ *
+ * For floats, use fabs().
  *
  * Supported by API versions 9 and newer.
  */
-extern uchar3 __attribute__((const, overloadable))abs(char3 value);
+extern uchar3 __attribute__((const, overloadable))abs(char3 n);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the integer n.
+ *
+ * For floats, use fabs().
  *
  * Supported by API versions 9 and newer.
  */
-extern uchar4 __attribute__((const, overloadable))abs(char4 value);
+extern uchar4 __attribute__((const, overloadable))abs(char4 n);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the integer n.
+ *
+ * For floats, use fabs().
  *
  * Supported by API versions 9 and newer.
  */
-extern ushort __attribute__((const, overloadable))abs(short value);
+extern ushort __attribute__((const, overloadable))abs(short n);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the integer n.
+ *
+ * For floats, use fabs().
  *
  * Supported by API versions 9 and newer.
  */
-extern ushort2 __attribute__((const, overloadable))abs(short2 value);
+extern ushort2 __attribute__((const, overloadable))abs(short2 n);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the integer n.
+ *
+ * For floats, use fabs().
  *
  * Supported by API versions 9 and newer.
  */
-extern ushort3 __attribute__((const, overloadable))abs(short3 value);
+extern ushort3 __attribute__((const, overloadable))abs(short3 n);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the integer n.
+ *
+ * For floats, use fabs().
  *
  * Supported by API versions 9 and newer.
  */
-extern ushort4 __attribute__((const, overloadable))abs(short4 value);
+extern ushort4 __attribute__((const, overloadable))abs(short4 n);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the integer n.
+ *
+ * For floats, use fabs().
  *
  * Supported by API versions 9 and newer.
  */
-extern uint __attribute__((const, overloadable))abs(int value);
+extern uint __attribute__((const, overloadable))abs(int n);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the integer n.
+ *
+ * For floats, use fabs().
  *
  * Supported by API versions 9 and newer.
  */
-extern uint2 __attribute__((const, overloadable))abs(int2 value);
+extern uint2 __attribute__((const, overloadable))abs(int2 n);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the integer n.
+ *
+ * For floats, use fabs().
  *
  * Supported by API versions 9 and newer.
  */
-extern uint3 __attribute__((const, overloadable))abs(int3 value);
+extern uint3 __attribute__((const, overloadable))abs(int3 n);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the integer n.
+ *
+ * For floats, use fabs().
  *
  * Supported by API versions 9 and newer.
  */
-extern uint4 __attribute__((const, overloadable))abs(int4 value);
+extern uint4 __attribute__((const, overloadable))abs(int4 n);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * acos
+/**
+ * Returns the inverse cosine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -136,8 +164,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * acos
+/**
+ * Returns the inverse cosine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -145,8 +173,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * acos
+/**
+ * Returns the inverse cosine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -154,8 +182,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * acos
+/**
+ * Returns the inverse cosine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -163,8 +191,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * acosh
+/**
+ * Returns the inverse hyperbolic cosine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -172,8 +200,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * acosh
+/**
+ * Returns the inverse hyperbolic cosine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -181,8 +209,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * acosh
+/**
+ * Returns the inverse hyperbolic cosine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -190,8 +218,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * acosh
+/**
+ * Returns the inverse hyperbolic cosine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -199,8 +227,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * acospi
+/**
+ * Returns the inverse cosine in radians, divided by pi.
+ *
+ * To get an inverse cosine measured in degrees, use acospi(a) * 180.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -208,8 +238,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * acospi
+/**
+ * Returns the inverse cosine in radians, divided by pi.
+ *
+ * To get an inverse cosine measured in degrees, use acospi(a) * 180.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -217,8 +249,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * acospi
+/**
+ * Returns the inverse cosine in radians, divided by pi.
+ *
+ * To get an inverse cosine measured in degrees, use acospi(a) * 180.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -226,8 +260,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * acospi
+/**
+ * Returns the inverse cosine in radians, divided by pi.
+ *
+ * To get an inverse cosine measured in degrees, use acospi(a) * 180.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -235,8 +271,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * asin
+/**
+ * Returns the inverse sine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -244,8 +280,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * asin
+/**
+ * Returns the inverse sine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -253,8 +289,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * asin
+/**
+ * Returns the inverse sine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -262,8 +298,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * asin
+/**
+ * Returns the inverse sine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -271,8 +307,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * asinh
+/**
+ * Returns the inverse hyperbolic sine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -280,8 +316,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * asinh
+/**
+ * Returns the inverse hyperbolic sine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -289,8 +325,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * asinh
+/**
+ * Returns the inverse hyperbolic sine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -298,8 +334,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * asinh
+/**
+ * Returns the inverse hyperbolic sine, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -307,8 +343,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse sine divided by PI.
+/**
+ * Returns the inverse sine in radians, divided by pi.
+ *
+ * To get an inverse sine measured in degrees, use asinpi(a) * 180.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -316,8 +354,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse sine divided by PI.
+/**
+ * Returns the inverse sine in radians, divided by pi.
+ *
+ * To get an inverse sine measured in degrees, use asinpi(a) * 180.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -325,8 +365,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse sine divided by PI.
+/**
+ * Returns the inverse sine in radians, divided by pi.
+ *
+ * To get an inverse sine measured in degrees, use asinpi(a) * 180.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -334,8 +376,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse sine divided by PI.
+/**
+ * Returns the inverse sine in radians, divided by pi.
+ *
+ * To get an inverse sine measured in degrees, use asinpi(a) * 180.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -343,8 +387,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent.
+/**
+ * Returns the inverse tangent, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -352,8 +396,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent.
+/**
+ * Returns the inverse tangent, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -361,8 +405,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent.
+/**
+ * Returns the inverse tangent, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -370,8 +414,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent.
+/**
+ * Returns the inverse tangent, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -379,8 +423,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent of y / x.
+/**
+ * Returns the inverse tangent of y / x, in radians.
+ *
+ * x can be 0.
  *
  * Supported by API versions 9 and newer.
  */
@@ -388,8 +434,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent of y / x.
+/**
+ * Returns the inverse tangent of y / x, in radians.
+ *
+ * x can be 0.
  *
  * Supported by API versions 9 and newer.
  */
@@ -397,8 +445,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent of y / x.
+/**
+ * Returns the inverse tangent of y / x, in radians.
+ *
+ * x can be 0.
  *
  * Supported by API versions 9 and newer.
  */
@@ -406,8 +456,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent of y / x.
+/**
+ * Returns the inverse tangent of y / x, in radians.
+ *
+ * x can be 0.
  *
  * Supported by API versions 9 and newer.
  */
@@ -415,8 +467,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent of y / x, divided by PI.
+/**
+ * Returns the inverse tangent of y / x, in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atan2pi(x, y) * 180.f.
+ *
+ * x can be 0.
  *
  * Supported by API versions 9 and newer.
  */
@@ -424,8 +480,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent of y / x, divided by PI.
+/**
+ * Returns the inverse tangent of y / x, in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atan2pi(x, y) * 180.f.
+ *
+ * x can be 0.
  *
  * Supported by API versions 9 and newer.
  */
@@ -433,8 +493,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent of y / x, divided by PI.
+/**
+ * Returns the inverse tangent of y / x, in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atan2pi(x, y) * 180.f.
+ *
+ * x can be 0.
  *
  * Supported by API versions 9 and newer.
  */
@@ -442,8 +506,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent of y / x, divided by PI.
+/**
+ * Returns the inverse tangent of y / x, in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atan2pi(x, y) * 180.f.
+ *
+ * x can be 0.
  *
  * Supported by API versions 9 and newer.
  */
@@ -451,8 +519,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse hyperbolic tangent.
+/**
+ * Returns the inverse hyperbolic tangent, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -460,8 +528,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse hyperbolic tangent.
+/**
+ * Returns the inverse hyperbolic tangent, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -469,8 +537,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse hyperbolic tangent.
+/**
+ * Returns the inverse hyperbolic tangent, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -478,8 +546,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse hyperbolic tangent.
+/**
+ * Returns the inverse hyperbolic tangent, in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -487,8 +555,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent divided by PI.
+/**
+ * Returns the inverse tangent in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atanpi(a) * 180.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -496,8 +566,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent divided by PI.
+/**
+ * Returns the inverse tangent in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atanpi(a) * 180.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -505,8 +577,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent divided by PI.
+/**
+ * Returns the inverse tangent in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atanpi(a) * 180.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -514,8 +588,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the inverse tangent divided by PI.
+/**
+ * Returns the inverse tangent in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atanpi(a) * 180.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -523,8 +599,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the cube root.
+/**
+ * Returns the cube root.
  *
  * Supported by API versions 9 and newer.
  */
@@ -532,8 +608,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the cube root.
+/**
+ * Returns the cube root.
  *
  * Supported by API versions 9 and newer.
  */
@@ -541,8 +617,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the cube root.
+/**
+ * Returns the cube root.
  *
  * Supported by API versions 9 and newer.
  */
@@ -550,8 +626,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the cube root.
+/**
+ * Returns the cube root.
  *
  * Supported by API versions 9 and newer.
  */
@@ -559,8 +635,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the smallest integer not less than a value.
+/**
+ * Returns the smallest integer not less than a value.
+ *
+ * For example, ceil(1.2f) returns 2.f, and ceil(-1.2f) returns -1.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -568,8 +646,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the smallest integer not less than a value.
+/**
+ * Returns the smallest integer not less than a value.
+ *
+ * For example, ceil(1.2f) returns 2.f, and ceil(-1.2f) returns -1.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -577,8 +657,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the smallest integer not less than a value.
+/**
+ * Returns the smallest integer not less than a value.
+ *
+ * For example, ceil(1.2f) returns 2.f, and ceil(-1.2f) returns -1.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -586,8 +668,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the smallest integer not less than a value.
+/**
+ * Returns the smallest integer not less than a value.
+ *
+ * For example, ceil(1.2f) returns 2.f, and ceil(-1.2f) returns -1.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -595,12 +679,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 9 and newer.
  */
@@ -608,12 +696,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 9 and newer.
  */
@@ -621,12 +713,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 9 and newer.
  */
@@ -634,12 +730,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 9 and newer.
  */
@@ -647,12 +747,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 9 and newer.
  */
@@ -660,12 +764,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 9 and newer.
  */
@@ -673,12 +781,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 9 and newer.
  */
@@ -686,12 +798,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -699,12 +815,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -712,12 +832,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -725,12 +849,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -738,12 +866,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -751,12 +883,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -764,12 +900,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -777,12 +917,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -790,12 +934,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -803,12 +951,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -816,12 +968,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -829,12 +985,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -842,12 +1002,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -855,12 +1019,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -868,12 +1036,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -881,12 +1053,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -894,12 +1070,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -907,12 +1087,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -920,12 +1104,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -933,12 +1121,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -946,12 +1138,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -959,12 +1155,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -972,12 +1172,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -985,12 +1189,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -998,12 +1206,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1011,12 +1223,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1024,12 +1240,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1037,12 +1257,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1050,12 +1274,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1063,12 +1291,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1076,12 +1308,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1089,12 +1325,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1102,12 +1342,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1115,12 +1359,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1128,12 +1376,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1141,12 +1393,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1154,12 +1410,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1167,12 +1427,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1180,12 +1444,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1193,12 +1461,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1206,12 +1478,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1219,12 +1495,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1232,12 +1512,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1245,12 +1529,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1258,12 +1546,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1271,12 +1563,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1284,12 +1580,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1297,12 +1597,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1310,12 +1614,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1323,12 +1631,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1336,12 +1648,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1349,12 +1665,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1362,12 +1682,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1375,12 +1699,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1388,12 +1716,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1401,12 +1733,16 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 19))
-/*
- * Clamp a value to a specified high and low bound.
+/**
+ * Clamps a value to a specified high and low bound.
  *
- * @param amount value to be clamped.  Supports 1,2,3,4 components
+ * clamp() returns min_value if value < min_value, max_value if value > max_value, otherwise value.
+ *
+ * If min_value is greater than max_value, the results are undefined.
+ *
+ * @param value Value to be clamped.  Supports 1, 2, 3, 4 components.
  * @param min_value Lower bound, must be scalar or matching vector.
- * @param max_value High bound, must match type of low
+ * @param max_value High bound, must match the type of low.
  *
  * Supported by API versions 19 and newer.
  */
@@ -1414,8 +1750,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1423,8 +1761,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1432,8 +1772,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1441,8 +1783,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1450,8 +1794,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1459,8 +1805,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1468,8 +1816,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1477,8 +1827,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1486,8 +1838,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1495,8 +1849,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1504,8 +1860,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1513,8 +1871,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1522,8 +1882,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1531,8 +1893,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1540,8 +1904,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1549,8 +1915,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1558,8 +1926,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1567,8 +1937,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1576,8 +1948,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1585,8 +1959,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1594,8 +1970,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1603,8 +1981,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1612,8 +1992,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1621,8 +2003,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the number of leading 0-bits in a value.
+/**
+ * Returns the number of leading 0-bits in a value.
+ *
+ * For example, clz((char)0x03) returns 5.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1630,8 +2014,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float2 to float2
+/**
+ * Component wise conversion from float2 to float2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1639,8 +2027,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float3 to float3
+/**
+ * Component wise conversion from float3 to float3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1648,8 +2040,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float4 to float4
+/**
+ * Component wise conversion from float4 to float4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1657,8 +2053,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char2 to float2
+/**
+ * Component wise conversion from char2 to float2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1666,8 +2066,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char3 to float3
+/**
+ * Component wise conversion from char3 to float3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1675,8 +2079,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char4 to float4
+/**
+ * Component wise conversion from char4 to float4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1684,8 +2092,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar2 to float2
+/**
+ * Component wise conversion from uchar2 to float2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1693,8 +2105,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar3 to float3
+/**
+ * Component wise conversion from uchar3 to float3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1702,8 +2118,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar4 to float4
+/**
+ * Component wise conversion from uchar4 to float4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1711,8 +2131,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short2 to float2
+/**
+ * Component wise conversion from short2 to float2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1720,8 +2144,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short3 to float3
+/**
+ * Component wise conversion from short3 to float3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1729,8 +2157,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short4 to float4
+/**
+ * Component wise conversion from short4 to float4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1738,8 +2170,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort2 to float2
+/**
+ * Component wise conversion from ushort2 to float2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1747,8 +2183,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort3 to float3
+/**
+ * Component wise conversion from ushort3 to float3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1756,8 +2196,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort4 to float4
+/**
+ * Component wise conversion from ushort4 to float4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1765,8 +2209,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int2 to float2
+/**
+ * Component wise conversion from int2 to float2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1774,8 +2222,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int3 to float3
+/**
+ * Component wise conversion from int3 to float3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1783,8 +2235,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int4 to float4
+/**
+ * Component wise conversion from int4 to float4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1792,8 +2248,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint2 to float2
+/**
+ * Component wise conversion from uint2 to float2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1801,8 +2261,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint3 to float3
+/**
+ * Component wise conversion from uint3 to float3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1810,8 +2274,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint4 to float4
+/**
+ * Component wise conversion from uint4 to float4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1819,8 +2287,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float2 to char2
+/**
+ * Component wise conversion from float2 to char2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1828,8 +2300,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float3 to char3
+/**
+ * Component wise conversion from float3 to char3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1837,8 +2313,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float4 to char4
+/**
+ * Component wise conversion from float4 to char4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1846,8 +2326,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char2 to char2
+/**
+ * Component wise conversion from char2 to char2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1855,8 +2339,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char3 to char3
+/**
+ * Component wise conversion from char3 to char3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1864,8 +2352,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char4 to char4
+/**
+ * Component wise conversion from char4 to char4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1873,8 +2365,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar2 to char2
+/**
+ * Component wise conversion from uchar2 to char2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1882,8 +2378,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar3 to char3
+/**
+ * Component wise conversion from uchar3 to char3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1891,8 +2391,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar4 to char4
+/**
+ * Component wise conversion from uchar4 to char4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1900,8 +2404,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short2 to char2
+/**
+ * Component wise conversion from short2 to char2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1909,8 +2417,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short3 to char3
+/**
+ * Component wise conversion from short3 to char3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1918,8 +2430,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short4 to char4
+/**
+ * Component wise conversion from short4 to char4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1927,8 +2443,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort2 to char2
+/**
+ * Component wise conversion from ushort2 to char2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1936,8 +2456,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort3 to char3
+/**
+ * Component wise conversion from ushort3 to char3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1945,8 +2469,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort4 to char4
+/**
+ * Component wise conversion from ushort4 to char4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1954,8 +2482,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int2 to char2
+/**
+ * Component wise conversion from int2 to char2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1963,8 +2495,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int3 to char3
+/**
+ * Component wise conversion from int3 to char3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1972,8 +2508,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int4 to char4
+/**
+ * Component wise conversion from int4 to char4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1981,8 +2521,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint2 to char2
+/**
+ * Component wise conversion from uint2 to char2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1990,8 +2534,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint3 to char3
+/**
+ * Component wise conversion from uint3 to char3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -1999,8 +2547,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint4 to char4
+/**
+ * Component wise conversion from uint4 to char4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2008,8 +2560,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float2 to uchar2
+/**
+ * Component wise conversion from float2 to uchar2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2017,8 +2573,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float3 to uchar3
+/**
+ * Component wise conversion from float3 to uchar3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2026,8 +2586,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float4 to uchar4
+/**
+ * Component wise conversion from float4 to uchar4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2035,8 +2599,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char2 to uchar2
+/**
+ * Component wise conversion from char2 to uchar2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2044,8 +2612,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char3 to uchar3
+/**
+ * Component wise conversion from char3 to uchar3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2053,8 +2625,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char4 to uchar4
+/**
+ * Component wise conversion from char4 to uchar4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2062,8 +2638,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar2 to uchar2
+/**
+ * Component wise conversion from uchar2 to uchar2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2071,8 +2651,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar3 to uchar3
+/**
+ * Component wise conversion from uchar3 to uchar3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2080,8 +2664,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar4 to uchar4
+/**
+ * Component wise conversion from uchar4 to uchar4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2089,8 +2677,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short2 to uchar2
+/**
+ * Component wise conversion from short2 to uchar2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2098,8 +2690,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short3 to uchar3
+/**
+ * Component wise conversion from short3 to uchar3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2107,8 +2703,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short4 to uchar4
+/**
+ * Component wise conversion from short4 to uchar4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2116,8 +2716,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort2 to uchar2
+/**
+ * Component wise conversion from ushort2 to uchar2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2125,8 +2729,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort3 to uchar3
+/**
+ * Component wise conversion from ushort3 to uchar3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2134,8 +2742,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort4 to uchar4
+/**
+ * Component wise conversion from ushort4 to uchar4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2143,8 +2755,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int2 to uchar2
+/**
+ * Component wise conversion from int2 to uchar2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2152,8 +2768,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int3 to uchar3
+/**
+ * Component wise conversion from int3 to uchar3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2161,8 +2781,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int4 to uchar4
+/**
+ * Component wise conversion from int4 to uchar4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2170,8 +2794,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint2 to uchar2
+/**
+ * Component wise conversion from uint2 to uchar2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2179,8 +2807,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint3 to uchar3
+/**
+ * Component wise conversion from uint3 to uchar3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2188,8 +2820,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint4 to uchar4
+/**
+ * Component wise conversion from uint4 to uchar4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2197,8 +2833,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float2 to short2
+/**
+ * Component wise conversion from float2 to short2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2206,8 +2846,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float3 to short3
+/**
+ * Component wise conversion from float3 to short3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2215,8 +2859,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float4 to short4
+/**
+ * Component wise conversion from float4 to short4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2224,8 +2872,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char2 to short2
+/**
+ * Component wise conversion from char2 to short2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2233,8 +2885,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char3 to short3
+/**
+ * Component wise conversion from char3 to short3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2242,8 +2898,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char4 to short4
+/**
+ * Component wise conversion from char4 to short4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2251,8 +2911,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar2 to short2
+/**
+ * Component wise conversion from uchar2 to short2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2260,8 +2924,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar3 to short3
+/**
+ * Component wise conversion from uchar3 to short3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2269,8 +2937,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar4 to short4
+/**
+ * Component wise conversion from uchar4 to short4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2278,8 +2950,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short2 to short2
+/**
+ * Component wise conversion from short2 to short2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2287,8 +2963,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short3 to short3
+/**
+ * Component wise conversion from short3 to short3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2296,8 +2976,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short4 to short4
+/**
+ * Component wise conversion from short4 to short4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2305,8 +2989,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort2 to short2
+/**
+ * Component wise conversion from ushort2 to short2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2314,8 +3002,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort3 to short3
+/**
+ * Component wise conversion from ushort3 to short3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2323,8 +3015,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort4 to short4
+/**
+ * Component wise conversion from ushort4 to short4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2332,8 +3028,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int2 to short2
+/**
+ * Component wise conversion from int2 to short2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2341,8 +3041,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int3 to short3
+/**
+ * Component wise conversion from int3 to short3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2350,8 +3054,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int4 to short4
+/**
+ * Component wise conversion from int4 to short4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2359,8 +3067,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint2 to short2
+/**
+ * Component wise conversion from uint2 to short2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2368,8 +3080,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint3 to short3
+/**
+ * Component wise conversion from uint3 to short3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2377,8 +3093,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint4 to short4
+/**
+ * Component wise conversion from uint4 to short4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2386,8 +3106,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float2 to ushort2
+/**
+ * Component wise conversion from float2 to ushort2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2395,8 +3119,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float3 to ushort3
+/**
+ * Component wise conversion from float3 to ushort3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2404,8 +3132,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float4 to ushort4
+/**
+ * Component wise conversion from float4 to ushort4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2413,8 +3145,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char2 to ushort2
+/**
+ * Component wise conversion from char2 to ushort2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2422,8 +3158,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char3 to ushort3
+/**
+ * Component wise conversion from char3 to ushort3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2431,8 +3171,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char4 to ushort4
+/**
+ * Component wise conversion from char4 to ushort4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2440,8 +3184,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar2 to ushort2
+/**
+ * Component wise conversion from uchar2 to ushort2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2449,8 +3197,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar3 to ushort3
+/**
+ * Component wise conversion from uchar3 to ushort3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2458,8 +3210,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar4 to ushort4
+/**
+ * Component wise conversion from uchar4 to ushort4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2467,8 +3223,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short2 to ushort2
+/**
+ * Component wise conversion from short2 to ushort2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2476,8 +3236,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short3 to ushort3
+/**
+ * Component wise conversion from short3 to ushort3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2485,8 +3249,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short4 to ushort4
+/**
+ * Component wise conversion from short4 to ushort4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2494,8 +3262,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort2 to ushort2
+/**
+ * Component wise conversion from ushort2 to ushort2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2503,8 +3275,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort3 to ushort3
+/**
+ * Component wise conversion from ushort3 to ushort3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2512,8 +3288,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort4 to ushort4
+/**
+ * Component wise conversion from ushort4 to ushort4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2521,8 +3301,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int2 to ushort2
+/**
+ * Component wise conversion from int2 to ushort2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2530,8 +3314,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int3 to ushort3
+/**
+ * Component wise conversion from int3 to ushort3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2539,8 +3327,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int4 to ushort4
+/**
+ * Component wise conversion from int4 to ushort4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2548,8 +3340,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint2 to ushort2
+/**
+ * Component wise conversion from uint2 to ushort2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2557,8 +3353,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint3 to ushort3
+/**
+ * Component wise conversion from uint3 to ushort3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2566,8 +3366,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint4 to ushort4
+/**
+ * Component wise conversion from uint4 to ushort4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2575,8 +3379,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float2 to int2
+/**
+ * Component wise conversion from float2 to int2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2584,8 +3392,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float3 to int3
+/**
+ * Component wise conversion from float3 to int3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2593,8 +3405,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float4 to int4
+/**
+ * Component wise conversion from float4 to int4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2602,8 +3418,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char2 to int2
+/**
+ * Component wise conversion from char2 to int2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2611,8 +3431,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char3 to int3
+/**
+ * Component wise conversion from char3 to int3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2620,8 +3444,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char4 to int4
+/**
+ * Component wise conversion from char4 to int4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2629,8 +3457,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar2 to int2
+/**
+ * Component wise conversion from uchar2 to int2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2638,8 +3470,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar3 to int3
+/**
+ * Component wise conversion from uchar3 to int3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2647,8 +3483,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar4 to int4
+/**
+ * Component wise conversion from uchar4 to int4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2656,8 +3496,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short2 to int2
+/**
+ * Component wise conversion from short2 to int2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2665,8 +3509,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short3 to int3
+/**
+ * Component wise conversion from short3 to int3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2674,8 +3522,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short4 to int4
+/**
+ * Component wise conversion from short4 to int4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2683,8 +3535,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort2 to int2
+/**
+ * Component wise conversion from ushort2 to int2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2692,8 +3548,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort3 to int3
+/**
+ * Component wise conversion from ushort3 to int3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2701,8 +3561,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort4 to int4
+/**
+ * Component wise conversion from ushort4 to int4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2710,8 +3574,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int2 to int2
+/**
+ * Component wise conversion from int2 to int2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2719,8 +3587,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int3 to int3
+/**
+ * Component wise conversion from int3 to int3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2728,8 +3600,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int4 to int4
+/**
+ * Component wise conversion from int4 to int4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2737,8 +3613,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint2 to int2
+/**
+ * Component wise conversion from uint2 to int2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2746,8 +3626,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint3 to int3
+/**
+ * Component wise conversion from uint3 to int3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2755,8 +3639,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint4 to int4
+/**
+ * Component wise conversion from uint4 to int4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2764,8 +3652,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float2 to uint2
+/**
+ * Component wise conversion from float2 to uint2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2773,8 +3665,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float3 to uint3
+/**
+ * Component wise conversion from float3 to uint3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2782,8 +3678,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from float4 to uint4
+/**
+ * Component wise conversion from float4 to uint4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2791,8 +3691,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char2 to uint2
+/**
+ * Component wise conversion from char2 to uint2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2800,8 +3704,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char3 to uint3
+/**
+ * Component wise conversion from char3 to uint3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2809,8 +3717,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from char4 to uint4
+/**
+ * Component wise conversion from char4 to uint4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2818,8 +3730,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar2 to uint2
+/**
+ * Component wise conversion from uchar2 to uint2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2827,8 +3743,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar3 to uint3
+/**
+ * Component wise conversion from uchar3 to uint3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2836,8 +3756,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uchar4 to uint4
+/**
+ * Component wise conversion from uchar4 to uint4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2845,8 +3769,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short2 to uint2
+/**
+ * Component wise conversion from short2 to uint2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2854,8 +3782,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short3 to uint3
+/**
+ * Component wise conversion from short3 to uint3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2863,8 +3795,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from short4 to uint4
+/**
+ * Component wise conversion from short4 to uint4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2872,8 +3808,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort2 to uint2
+/**
+ * Component wise conversion from ushort2 to uint2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2881,8 +3821,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort3 to uint3
+/**
+ * Component wise conversion from ushort3 to uint3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2890,8 +3834,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from ushort4 to uint4
+/**
+ * Component wise conversion from ushort4 to uint4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2899,8 +3847,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int2 to uint2
+/**
+ * Component wise conversion from int2 to uint2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2908,8 +3860,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int3 to uint3
+/**
+ * Component wise conversion from int3 to uint3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2917,8 +3873,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from int4 to uint4
+/**
+ * Component wise conversion from int4 to uint4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2926,8 +3886,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint2 to uint2
+/**
+ * Component wise conversion from uint2 to uint2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2935,8 +3899,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint3 to uint3
+/**
+ * Component wise conversion from uint3 to uint3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2944,8 +3912,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Component wise conversion from uint4 to uint4
+/**
+ * Component wise conversion from uint4 to uint4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 9 and newer.
  */
@@ -2953,8 +3925,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double2 to double2
+/**
+ * Component wise conversion from double2 to double2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -2962,8 +3938,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double3 to double3
+/**
+ * Component wise conversion from double3 to double3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -2971,8 +3951,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double4 to double4
+/**
+ * Component wise conversion from double4 to double4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -2980,8 +3964,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long2 to double2
+/**
+ * Component wise conversion from long2 to double2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -2989,8 +3977,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long3 to double3
+/**
+ * Component wise conversion from long3 to double3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -2998,8 +3990,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long4 to double4
+/**
+ * Component wise conversion from long4 to double4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3007,8 +4003,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong2 to double2
+/**
+ * Component wise conversion from ulong2 to double2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3016,8 +4016,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong3 to double3
+/**
+ * Component wise conversion from ulong3 to double3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3025,8 +4029,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong4 to double4
+/**
+ * Component wise conversion from ulong4 to double4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3034,8 +4042,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double2 to long2
+/**
+ * Component wise conversion from double2 to long2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3043,8 +4055,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double3 to long3
+/**
+ * Component wise conversion from double3 to long3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3052,8 +4068,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double4 to long4
+/**
+ * Component wise conversion from double4 to long4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3061,8 +4081,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long2 to long2
+/**
+ * Component wise conversion from long2 to long2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3070,8 +4094,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long3 to long3
+/**
+ * Component wise conversion from long3 to long3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3079,8 +4107,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long4 to long4
+/**
+ * Component wise conversion from long4 to long4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3088,8 +4120,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong2 to long2
+/**
+ * Component wise conversion from ulong2 to long2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3097,8 +4133,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong3 to long3
+/**
+ * Component wise conversion from ulong3 to long3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3106,8 +4146,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong4 to long4
+/**
+ * Component wise conversion from ulong4 to long4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3115,8 +4159,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double2 to ulong2
+/**
+ * Component wise conversion from double2 to ulong2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3124,8 +4172,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double3 to ulong3
+/**
+ * Component wise conversion from double3 to ulong3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3133,8 +4185,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double4 to ulong4
+/**
+ * Component wise conversion from double4 to ulong4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3142,8 +4198,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long2 to ulong2
+/**
+ * Component wise conversion from long2 to ulong2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3151,8 +4211,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long3 to ulong3
+/**
+ * Component wise conversion from long3 to ulong3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3160,8 +4224,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long4 to ulong4
+/**
+ * Component wise conversion from long4 to ulong4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3169,8 +4237,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong2 to ulong2
+/**
+ * Component wise conversion from ulong2 to ulong2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3178,8 +4250,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong3 to ulong3
+/**
+ * Component wise conversion from ulong3 to ulong3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3187,8 +4263,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong4 to ulong4
+/**
+ * Component wise conversion from ulong4 to ulong4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3196,8 +4276,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double2 to float2
+/**
+ * Component wise conversion from double2 to float2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3205,8 +4289,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double3 to float3
+/**
+ * Component wise conversion from double3 to float3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3214,8 +4302,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double4 to float4
+/**
+ * Component wise conversion from double4 to float4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3223,8 +4315,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long2 to float2
+/**
+ * Component wise conversion from long2 to float2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3232,8 +4328,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long3 to float3
+/**
+ * Component wise conversion from long3 to float3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3241,8 +4341,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long4 to float4
+/**
+ * Component wise conversion from long4 to float4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3250,8 +4354,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong2 to float2
+/**
+ * Component wise conversion from ulong2 to float2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3259,8 +4367,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong3 to float3
+/**
+ * Component wise conversion from ulong3 to float3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3268,8 +4380,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong4 to float4
+/**
+ * Component wise conversion from ulong4 to float4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3277,8 +4393,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double2 to char2
+/**
+ * Component wise conversion from double2 to char2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3286,8 +4406,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double3 to char3
+/**
+ * Component wise conversion from double3 to char3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3295,8 +4419,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double4 to char4
+/**
+ * Component wise conversion from double4 to char4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3304,8 +4432,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long2 to char2
+/**
+ * Component wise conversion from long2 to char2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3313,8 +4445,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long3 to char3
+/**
+ * Component wise conversion from long3 to char3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3322,8 +4458,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long4 to char4
+/**
+ * Component wise conversion from long4 to char4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3331,8 +4471,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong2 to char2
+/**
+ * Component wise conversion from ulong2 to char2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3340,8 +4484,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong3 to char3
+/**
+ * Component wise conversion from ulong3 to char3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3349,8 +4497,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong4 to char4
+/**
+ * Component wise conversion from ulong4 to char4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3358,8 +4510,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double2 to uchar2
+/**
+ * Component wise conversion from double2 to uchar2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3367,8 +4523,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double3 to uchar3
+/**
+ * Component wise conversion from double3 to uchar3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3376,8 +4536,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double4 to uchar4
+/**
+ * Component wise conversion from double4 to uchar4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3385,8 +4549,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long2 to uchar2
+/**
+ * Component wise conversion from long2 to uchar2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3394,8 +4562,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long3 to uchar3
+/**
+ * Component wise conversion from long3 to uchar3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3403,8 +4575,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long4 to uchar4
+/**
+ * Component wise conversion from long4 to uchar4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3412,8 +4588,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong2 to uchar2
+/**
+ * Component wise conversion from ulong2 to uchar2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3421,8 +4601,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong3 to uchar3
+/**
+ * Component wise conversion from ulong3 to uchar3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3430,8 +4614,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong4 to uchar4
+/**
+ * Component wise conversion from ulong4 to uchar4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3439,8 +4627,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double2 to short2
+/**
+ * Component wise conversion from double2 to short2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3448,8 +4640,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double3 to short3
+/**
+ * Component wise conversion from double3 to short3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3457,8 +4653,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double4 to short4
+/**
+ * Component wise conversion from double4 to short4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3466,8 +4666,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long2 to short2
+/**
+ * Component wise conversion from long2 to short2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3475,8 +4679,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long3 to short3
+/**
+ * Component wise conversion from long3 to short3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3484,8 +4692,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long4 to short4
+/**
+ * Component wise conversion from long4 to short4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3493,8 +4705,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong2 to short2
+/**
+ * Component wise conversion from ulong2 to short2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3502,8 +4718,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong3 to short3
+/**
+ * Component wise conversion from ulong3 to short3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3511,8 +4731,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong4 to short4
+/**
+ * Component wise conversion from ulong4 to short4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3520,8 +4744,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double2 to ushort2
+/**
+ * Component wise conversion from double2 to ushort2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3529,8 +4757,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double3 to ushort3
+/**
+ * Component wise conversion from double3 to ushort3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3538,8 +4770,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double4 to ushort4
+/**
+ * Component wise conversion from double4 to ushort4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3547,8 +4783,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long2 to ushort2
+/**
+ * Component wise conversion from long2 to ushort2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3556,8 +4796,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long3 to ushort3
+/**
+ * Component wise conversion from long3 to ushort3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3565,8 +4809,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long4 to ushort4
+/**
+ * Component wise conversion from long4 to ushort4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3574,8 +4822,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong2 to ushort2
+/**
+ * Component wise conversion from ulong2 to ushort2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3583,8 +4835,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong3 to ushort3
+/**
+ * Component wise conversion from ulong3 to ushort3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3592,8 +4848,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong4 to ushort4
+/**
+ * Component wise conversion from ulong4 to ushort4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3601,8 +4861,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double2 to int2
+/**
+ * Component wise conversion from double2 to int2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3610,8 +4874,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double3 to int3
+/**
+ * Component wise conversion from double3 to int3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3619,8 +4887,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double4 to int4
+/**
+ * Component wise conversion from double4 to int4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3628,8 +4900,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long2 to int2
+/**
+ * Component wise conversion from long2 to int2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3637,8 +4913,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long3 to int3
+/**
+ * Component wise conversion from long3 to int3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3646,8 +4926,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long4 to int4
+/**
+ * Component wise conversion from long4 to int4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3655,8 +4939,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong2 to int2
+/**
+ * Component wise conversion from ulong2 to int2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3664,8 +4952,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong3 to int3
+/**
+ * Component wise conversion from ulong3 to int3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3673,8 +4965,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong4 to int4
+/**
+ * Component wise conversion from ulong4 to int4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3682,8 +4978,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double2 to uint2
+/**
+ * Component wise conversion from double2 to uint2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3691,8 +4991,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double3 to uint3
+/**
+ * Component wise conversion from double3 to uint3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3700,8 +5004,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from double4 to uint4
+/**
+ * Component wise conversion from double4 to uint4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3709,8 +5017,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long2 to uint2
+/**
+ * Component wise conversion from long2 to uint2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3718,8 +5030,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long3 to uint3
+/**
+ * Component wise conversion from long3 to uint3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3727,8 +5043,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from long4 to uint4
+/**
+ * Component wise conversion from long4 to uint4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3736,8 +5056,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong2 to uint2
+/**
+ * Component wise conversion from ulong2 to uint2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3745,8 +5069,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong3 to uint3
+/**
+ * Component wise conversion from ulong3 to uint3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3754,8 +5082,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ulong4 to uint4
+/**
+ * Component wise conversion from ulong4 to uint4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3763,8 +5095,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from float2 to double2
+/**
+ * Component wise conversion from float2 to double2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3772,8 +5108,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from float3 to double3
+/**
+ * Component wise conversion from float3 to double3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3781,8 +5121,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from float4 to double4
+/**
+ * Component wise conversion from float4 to double4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3790,8 +5134,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from char2 to double2
+/**
+ * Component wise conversion from char2 to double2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3799,8 +5147,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from char3 to double3
+/**
+ * Component wise conversion from char3 to double3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3808,8 +5160,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from char4 to double4
+/**
+ * Component wise conversion from char4 to double4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3817,8 +5173,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uchar2 to double2
+/**
+ * Component wise conversion from uchar2 to double2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3826,8 +5186,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uchar3 to double3
+/**
+ * Component wise conversion from uchar3 to double3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3835,8 +5199,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uchar4 to double4
+/**
+ * Component wise conversion from uchar4 to double4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3844,8 +5212,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from short2 to double2
+/**
+ * Component wise conversion from short2 to double2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3853,8 +5225,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from short3 to double3
+/**
+ * Component wise conversion from short3 to double3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3862,8 +5238,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from short4 to double4
+/**
+ * Component wise conversion from short4 to double4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3871,8 +5251,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ushort2 to double2
+/**
+ * Component wise conversion from ushort2 to double2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3880,8 +5264,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ushort3 to double3
+/**
+ * Component wise conversion from ushort3 to double3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3889,8 +5277,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ushort4 to double4
+/**
+ * Component wise conversion from ushort4 to double4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3898,8 +5290,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from int2 to double2
+/**
+ * Component wise conversion from int2 to double2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3907,8 +5303,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from int3 to double3
+/**
+ * Component wise conversion from int3 to double3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3916,8 +5316,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from int4 to double4
+/**
+ * Component wise conversion from int4 to double4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3925,8 +5329,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uint2 to double2
+/**
+ * Component wise conversion from uint2 to double2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3934,8 +5342,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uint3 to double3
+/**
+ * Component wise conversion from uint3 to double3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3943,8 +5355,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uint4 to double4
+/**
+ * Component wise conversion from uint4 to double4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3952,8 +5368,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from float2 to long2
+/**
+ * Component wise conversion from float2 to long2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3961,8 +5381,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from float3 to long3
+/**
+ * Component wise conversion from float3 to long3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3970,8 +5394,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from float4 to long4
+/**
+ * Component wise conversion from float4 to long4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3979,8 +5407,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from char2 to long2
+/**
+ * Component wise conversion from char2 to long2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3988,8 +5420,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from char3 to long3
+/**
+ * Component wise conversion from char3 to long3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -3997,8 +5433,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from char4 to long4
+/**
+ * Component wise conversion from char4 to long4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4006,8 +5446,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uchar2 to long2
+/**
+ * Component wise conversion from uchar2 to long2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4015,8 +5459,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uchar3 to long3
+/**
+ * Component wise conversion from uchar3 to long3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4024,8 +5472,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uchar4 to long4
+/**
+ * Component wise conversion from uchar4 to long4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4033,8 +5485,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from short2 to long2
+/**
+ * Component wise conversion from short2 to long2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4042,8 +5498,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from short3 to long3
+/**
+ * Component wise conversion from short3 to long3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4051,8 +5511,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from short4 to long4
+/**
+ * Component wise conversion from short4 to long4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4060,8 +5524,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ushort2 to long2
+/**
+ * Component wise conversion from ushort2 to long2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4069,8 +5537,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ushort3 to long3
+/**
+ * Component wise conversion from ushort3 to long3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4078,8 +5550,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ushort4 to long4
+/**
+ * Component wise conversion from ushort4 to long4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4087,8 +5563,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from int2 to long2
+/**
+ * Component wise conversion from int2 to long2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4096,8 +5576,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from int3 to long3
+/**
+ * Component wise conversion from int3 to long3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4105,8 +5589,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from int4 to long4
+/**
+ * Component wise conversion from int4 to long4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4114,8 +5602,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uint2 to long2
+/**
+ * Component wise conversion from uint2 to long2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4123,8 +5615,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uint3 to long3
+/**
+ * Component wise conversion from uint3 to long3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4132,8 +5628,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uint4 to long4
+/**
+ * Component wise conversion from uint4 to long4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4141,8 +5641,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from float2 to ulong2
+/**
+ * Component wise conversion from float2 to ulong2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4150,8 +5654,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from float3 to ulong3
+/**
+ * Component wise conversion from float3 to ulong3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4159,8 +5667,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from float4 to ulong4
+/**
+ * Component wise conversion from float4 to ulong4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4168,8 +5680,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from char2 to ulong2
+/**
+ * Component wise conversion from char2 to ulong2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4177,8 +5693,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from char3 to ulong3
+/**
+ * Component wise conversion from char3 to ulong3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4186,8 +5706,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from char4 to ulong4
+/**
+ * Component wise conversion from char4 to ulong4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4195,8 +5719,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uchar2 to ulong2
+/**
+ * Component wise conversion from uchar2 to ulong2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4204,8 +5732,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uchar3 to ulong3
+/**
+ * Component wise conversion from uchar3 to ulong3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4213,8 +5745,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uchar4 to ulong4
+/**
+ * Component wise conversion from uchar4 to ulong4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4222,8 +5758,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from short2 to ulong2
+/**
+ * Component wise conversion from short2 to ulong2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4231,8 +5771,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from short3 to ulong3
+/**
+ * Component wise conversion from short3 to ulong3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4240,8 +5784,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from short4 to ulong4
+/**
+ * Component wise conversion from short4 to ulong4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4249,8 +5797,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ushort2 to ulong2
+/**
+ * Component wise conversion from ushort2 to ulong2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4258,8 +5810,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ushort3 to ulong3
+/**
+ * Component wise conversion from ushort3 to ulong3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4267,8 +5823,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from ushort4 to ulong4
+/**
+ * Component wise conversion from ushort4 to ulong4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4276,8 +5836,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from int2 to ulong2
+/**
+ * Component wise conversion from int2 to ulong2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4285,8 +5849,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from int3 to ulong3
+/**
+ * Component wise conversion from int3 to ulong3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4294,8 +5862,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from int4 to ulong4
+/**
+ * Component wise conversion from int4 to ulong4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4303,8 +5875,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uint2 to ulong2
+/**
+ * Component wise conversion from uint2 to ulong2.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4312,8 +5888,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uint3 to ulong3
+/**
+ * Component wise conversion from uint3 to ulong3.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4321,8 +5901,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Component wise conversion from uint4 to ulong4
+/**
+ * Component wise conversion from uint4 to ulong4.
+ *
+ * For the convert_* functions, conversions of floating point values to integer will truncate.
+ * Conversions of numbers too large to fit the destination type yield undefined results.
+ * For example, converting a float that contains 1.0e18 to a short is undefined.
  *
  * Supported by API versions 21 and newer.
  */
@@ -4330,8 +5914,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Copy the sign bit from y to x.
+/**
+ * Copies the sign from y to x.
+ *
+ * The value returned is either x or -x.
+ *
+ * For example, copysign(4.0f, -2.7f) returns -4.0f and copysign(-4.0f, 2.7f) returns 4.0f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4339,8 +5927,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Copy the sign bit from y to x.
+/**
+ * Copies the sign from y to x.
+ *
+ * The value returned is either x or -x.
+ *
+ * For example, copysign(4.0f, -2.7f) returns -4.0f and copysign(-4.0f, 2.7f) returns 4.0f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4348,8 +5940,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Copy the sign bit from y to x.
+/**
+ * Copies the sign from y to x.
+ *
+ * The value returned is either x or -x.
+ *
+ * For example, copysign(4.0f, -2.7f) returns -4.0f and copysign(-4.0f, 2.7f) returns 4.0f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4357,8 +5953,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Copy the sign bit from y to x.
+/**
+ * Copies the sign from y to x.
+ *
+ * The value returned is either x or -x.
+ *
+ * For example, copysign(4.0f, -2.7f) returns -4.0f and copysign(-4.0f, 2.7f) returns 4.0f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4366,8 +5966,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the cosine.
+/**
+ * Returns the cosine of an angle measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4375,8 +5975,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the cosine.
+/**
+ * Returns the cosine of an angle measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4384,8 +5984,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the cosine.
+/**
+ * Returns the cosine of an angle measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4393,8 +5993,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the cosine.
+/**
+ * Returns the cosine of an angle measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4402,80 +6002,88 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the hypebolic cosine.
+/**
+ * Returns the hypebolic cosine of x, where x is measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((const, overloadable))cosh(float);
+extern float __attribute__((const, overloadable))cosh(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the hypebolic cosine.
+/**
+ * Returns the hypebolic cosine of x, where x is measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))cosh(float2);
+extern float2 __attribute__((const, overloadable))cosh(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the hypebolic cosine.
+/**
+ * Returns the hypebolic cosine of x, where x is measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))cosh(float3);
+extern float3 __attribute__((const, overloadable))cosh(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the hypebolic cosine.
+/**
+ * Returns the hypebolic cosine of x, where x is measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))cosh(float4);
+extern float4 __attribute__((const, overloadable))cosh(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the cosine of the value * PI.
+/**
+ * Returns the cosine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the cosine of a value measured in degrees, call cospi(a / 180.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((const, overloadable))cospi(float);
+extern float __attribute__((const, overloadable))cospi(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the cosine of the value * PI.
+/**
+ * Returns the cosine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the cosine of a value measured in degrees, call cospi(a / 180.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))cospi(float2);
+extern float2 __attribute__((const, overloadable))cospi(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the cosine of the value * PI.
+/**
+ * Returns the cosine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the cosine of a value measured in degrees, call cospi(a / 180.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))cospi(float3);
+extern float3 __attribute__((const, overloadable))cospi(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the cosine of the value * PI.
+/**
+ * Returns the cosine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the cosine of a value measured in degrees, call cospi(a / 180.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))cospi(float4);
+extern float4 __attribute__((const, overloadable))cospi(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the cross product of two vectors.
+/**
+ * Computes the cross product of two vectors.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4483,8 +6091,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the cross product of two vectors.
+/**
+ * Computes the cross product of two vectors.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4492,8 +6100,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Convert from radians to degrees.
+/**
+ * Converts from radians to degrees.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4501,8 +6109,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Convert from radians to degrees.
+/**
+ * Converts from radians to degrees.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4510,8 +6118,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Convert from radians to degrees.
+/**
+ * Converts from radians to degrees.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4519,8 +6127,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Convert from radians to degrees.
+/**
+ * Converts from radians to degrees.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4528,7 +6136,7 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
+/**
  * Compute the distance between two points.
  *
  * Supported by API versions 9 and newer.
@@ -4537,7 +6145,7 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
+/**
  * Compute the distance between two points.
  *
  * Supported by API versions 9 and newer.
@@ -4546,7 +6154,7 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
+/**
  * Compute the distance between two points.
  *
  * Supported by API versions 9 and newer.
@@ -4555,7 +6163,7 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
+/**
  * Compute the distance between two points.
  *
  * Supported by API versions 9 and newer.
@@ -4564,8 +6172,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the dot product of two vectors.
+/**
+ * Computes the dot product of two vectors.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4573,8 +6181,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the dot product of two vectors.
+/**
+ * Computes the dot product of two vectors.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4582,8 +6190,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the dot product of two vectors.
+/**
+ * Computes the dot product of two vectors.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4591,8 +6199,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the dot product of two vectors.
+/**
+ * Computes the dot product of two vectors.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4600,8 +6208,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the error function.
+/**
+ * Returns the error function.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4609,8 +6217,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the error function.
+/**
+ * Returns the error function.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4618,8 +6226,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the error function.
+/**
+ * Returns the error function.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4627,8 +6235,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the error function.
+/**
+ * Returns the error function.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4636,8 +6244,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the complementary error function.
+/**
+ * Returns the complementary error function.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4645,8 +6253,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the complementary error function.
+/**
+ * Returns the complementary error function.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4654,8 +6262,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the complementary error function.
+/**
+ * Returns the complementary error function.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4663,8 +6271,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the complementary error function.
+/**
+ * Returns the complementary error function.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4672,188 +6280,198 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return e ^ value.
+/**
+ * Returns e raised to x, i.e. e ^ x.
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((const, overloadable))exp(float);
+extern float __attribute__((const, overloadable))exp(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return e ^ value.
+/**
+ * Returns e raised to x, i.e. e ^ x.
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))exp(float2);
+extern float2 __attribute__((const, overloadable))exp(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return e ^ value.
+/**
+ * Returns e raised to x, i.e. e ^ x.
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))exp(float3);
+extern float3 __attribute__((const, overloadable))exp(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return e ^ value.
+/**
+ * Returns e raised to x, i.e. e ^ x.
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))exp(float4);
+extern float4 __attribute__((const, overloadable))exp(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return 10 ^ value.
+/**
+ * Returns 10 raised to x, i.e. 10.f ^ x.
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((const, overloadable))exp10(float);
+extern float __attribute__((const, overloadable))exp10(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return 10 ^ value.
+/**
+ * Returns 10 raised to x, i.e. 10.f ^ x.
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))exp10(float2);
+extern float2 __attribute__((const, overloadable))exp10(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return 10 ^ value.
+/**
+ * Returns 10 raised to x, i.e. 10.f ^ x.
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))exp10(float3);
+extern float3 __attribute__((const, overloadable))exp10(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return 10 ^ value.
+/**
+ * Returns 10 raised to x, i.e. 10.f ^ x.
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))exp10(float4);
+extern float4 __attribute__((const, overloadable))exp10(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return 2 ^ value.
+/**
+ * Returns 2 raised to x, i.e. 2.f ^ x.
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((const, overloadable))exp2(float);
+extern float __attribute__((const, overloadable))exp2(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return 2 ^ value.
+/**
+ * Returns 2 raised to x, i.e. 2.f ^ x.
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))exp2(float2);
+extern float2 __attribute__((const, overloadable))exp2(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return 2 ^ value.
+/**
+ * Returns 2 raised to x, i.e. 2.f ^ x.
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))exp2(float3);
+extern float3 __attribute__((const, overloadable))exp2(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return 2 ^ value.
+/**
+ * Returns 2 raised to x, i.e. 2.f ^ x.
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))exp2(float4);
+extern float4 __attribute__((const, overloadable))exp2(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (e ^ value) - 1.
+/**
+ * Returns e raised to x minus 1, i.e. (e ^ x) - 1.
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((const, overloadable))expm1(float);
+extern float __attribute__((const, overloadable))expm1(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (e ^ value) - 1.
+/**
+ * Returns e raised to x minus 1, i.e. (e ^ x) - 1.
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))expm1(float2);
+extern float2 __attribute__((const, overloadable))expm1(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (e ^ value) - 1.
+/**
+ * Returns e raised to x minus 1, i.e. (e ^ x) - 1.
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))expm1(float3);
+extern float3 __attribute__((const, overloadable))expm1(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (e ^ value) - 1.
+/**
+ * Returns e raised to x minus 1, i.e. (e ^ x) - 1.
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))expm1(float4);
+extern float4 __attribute__((const, overloadable))expm1(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the float x.
+ *
+ * For integers, use abs().
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((const, overloadable))fabs(float);
+extern float __attribute__((const, overloadable))fabs(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the float x.
+ *
+ * For integers, use abs().
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))fabs(float2);
+extern float2 __attribute__((const, overloadable))fabs(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the float x.
+ *
+ * For integers, use abs().
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))fabs(float3);
+extern float3 __attribute__((const, overloadable))fabs(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the absolute value of a value.
+/**
+ * Returns the absolute value of the float x.
+ *
+ * For integers, use abs().
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))fabs(float4);
+extern float4 __attribute__((const, overloadable))fabs(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Compute the approximate distance between two points.
+/**
+ * Computes the approximate distance between two points.
+ *
+ * The precision is what would be expected from doing the computation using 16 bit floating point values.
  *
  * Supported by API versions 17 and newer.
  */
@@ -4861,8 +6479,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Compute the approximate distance between two points.
+/**
+ * Computes the approximate distance between two points.
+ *
+ * The precision is what would be expected from doing the computation using 16 bit floating point values.
  *
  * Supported by API versions 17 and newer.
  */
@@ -4870,8 +6490,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Compute the approximate distance between two points.
+/**
+ * Computes the approximate distance between two points.
+ *
+ * The precision is what would be expected from doing the computation using 16 bit floating point values.
  *
  * Supported by API versions 17 and newer.
  */
@@ -4879,8 +6501,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Compute the approximate distance between two points.
+/**
+ * Computes the approximate distance between two points.
+ *
+ * The precision is what would be expected from doing the computation using 16 bit floating point values.
  *
  * Supported by API versions 17 and newer.
  */
@@ -4888,8 +6512,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Compute the approximate length of a vector.
+/**
+ * Computes the approximate length of a vector.
+ *
+ * The precision is what would be expected from doing the computation using 16 bit floating point values.
  *
  * Supported by API versions 17 and newer.
  */
@@ -4897,8 +6523,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Compute the approximate length of a vector.
+/**
+ * Computes the approximate length of a vector.
+ *
+ * The precision is what would be expected from doing the computation using 16 bit floating point values.
  *
  * Supported by API versions 17 and newer.
  */
@@ -4906,8 +6534,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Compute the approximate length of a vector.
+/**
+ * Computes the approximate length of a vector.
+ *
+ * The precision is what would be expected from doing the computation using 16 bit floating point values.
  *
  * Supported by API versions 17 and newer.
  */
@@ -4915,8 +6545,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Compute the approximate length of a vector.
+/**
+ * Computes the approximate length of a vector.
+ *
+ * The precision is what would be expected from doing the computation using 16 bit floating point values.
  *
  * Supported by API versions 17 and newer.
  */
@@ -4924,8 +6556,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Approximately normalize a vector.
+/**
+ * Approximately normalizes a vector.
+ *
+ * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
+ *
+ * The precision is what would be expected from doing the computation using 16 bit floating point values.
  *
  * Supported by API versions 17 and newer.
  */
@@ -4933,8 +6569,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Approximately normalize a vector.
+/**
+ * Approximately normalizes a vector.
+ *
+ * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
+ *
+ * The precision is what would be expected from doing the computation using 16 bit floating point values.
  *
  * Supported by API versions 17 and newer.
  */
@@ -4942,8 +6582,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Approximately normalize a vector.
+/**
+ * Approximately normalizes a vector.
+ *
+ * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
+ *
+ * The precision is what would be expected from doing the computation using 16 bit floating point values.
  *
  * Supported by API versions 17 and newer.
  */
@@ -4951,8 +6595,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Approximately normalize a vector.
+/**
+ * Approximately normalizes a vector.
+ *
+ * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
+ *
+ * The precision is what would be expected from doing the computation using 16 bit floating point values.
  *
  * Supported by API versions 17 and newer.
  */
@@ -4960,8 +6608,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the positive difference between two values.
+/**
+ * Returns the positive difference between two values.
+ *
+ * If a > b, returns (a - b) otherwise returns 0f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4969,8 +6619,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the positive difference between two values.
+/**
+ * Returns the positive difference between two values.
+ *
+ * If a > b, returns (a - b) otherwise returns 0f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4978,8 +6630,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the positive difference between two values.
+/**
+ * Returns the positive difference between two values.
+ *
+ * If a > b, returns (a - b) otherwise returns 0f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4987,8 +6641,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the positive difference between two values.
+/**
+ * Returns the positive difference between two values.
+ *
+ * If a > b, returns (a - b) otherwise returns 0f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -4996,8 +6652,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the smallest integer not greater than a value.
+/**
+ * Returns the smallest integer not greater than a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5005,8 +6661,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the smallest integer not greater than a value.
+/**
+ * Returns the smallest integer not greater than a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5014,8 +6670,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the smallest integer not greater than a value.
+/**
+ * Returns the smallest integer not greater than a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5023,8 +6679,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the smallest integer not greater than a value.
+/**
+ * Returns the smallest integer not greater than a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5032,8 +6688,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (a * b) + c.
+/**
+ * Multiply and add.  Returns (a * b) + c.
+ *
+ * This function is identical to mad().
  *
  * Supported by API versions 9 and newer.
  */
@@ -5041,8 +6699,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (a * b) + c.
+/**
+ * Multiply and add.  Returns (a * b) + c.
+ *
+ * This function is identical to mad().
  *
  * Supported by API versions 9 and newer.
  */
@@ -5050,8 +6710,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (a * b) + c.
+/**
+ * Multiply and add.  Returns (a * b) + c.
+ *
+ * This function is identical to mad().
  *
  * Supported by API versions 9 and newer.
  */
@@ -5059,8 +6721,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (a * b) + c.
+/**
+ * Multiply and add.  Returns (a * b) + c.
+ *
+ * This function is identical to mad().
  *
  * Supported by API versions 9 and newer.
  */
@@ -5068,8 +6732,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x < y ? y : x)
+/**
+ * Returns the maximum of x and y, i.e. (x < y ? y : x).
+ *
+ * The max() function returns identical results but can be applied to more data types.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5077,8 +6743,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x < y ? y : x)
+/**
+ * Returns the maximum of x and y, i.e. (x < y ? y : x).
+ *
+ * The max() function returns identical results but can be applied to more data types.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5086,8 +6754,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x < y ? y : x)
+/**
+ * Returns the maximum of x and y, i.e. (x < y ? y : x).
+ *
+ * The max() function returns identical results but can be applied to more data types.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5095,8 +6765,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x < y ? y : x)
+/**
+ * Returns the maximum of x and y, i.e. (x < y ? y : x).
+ *
+ * The max() function returns identical results but can be applied to more data types.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5104,8 +6776,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x < y ? y : x)
+/**
+ * Returns the maximum of x and y, i.e. (x < y ? y : x).
+ *
+ * Unlike the other variants of fmax() and max(), this function compare each element of x to the scalar y.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5113,8 +6787,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x < y ? y : x)
+/**
+ * Returns the maximum of x and y, i.e. (x < y ? y : x).
+ *
+ * Unlike the other variants of fmax() and max(), this function compare each element of x to the scalar y.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5122,8 +6798,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x < y ? y : x)
+/**
+ * Returns the maximum of x and y, i.e. (x < y ? y : x).
+ *
+ * Unlike the other variants of fmax() and max(), this function compare each element of x to the scalar y.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5131,8 +6809,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x > y ? y : x)
+/**
+ * Returns the minimum of x and y, i.e. (x > y ? y : x).
+ *
+ * The min() function returns identical results but can be applied to more data types.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5140,8 +6820,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x > y ? y : x)
+/**
+ * Returns the minimum of x and y, i.e. (x > y ? y : x).
+ *
+ * The min() function returns identical results but can be applied to more data types.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5149,8 +6831,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x > y ? y : x)
+/**
+ * Returns the minimum of x and y, i.e. (x > y ? y : x).
+ *
+ * The min() function returns identical results but can be applied to more data types.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5158,8 +6842,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x > y ? y : x)
+/**
+ * Returns the minimum of x and y, i.e. (x > y ? y : x).
+ *
+ * The min() function returns identical results but can be applied to more data types.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5167,8 +6853,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x > y ? y : x)
+/**
+ * Returns the minimum of x and y, i.e. (x > y ? y : x)
+ *
+ * Unlike the other variants of fmin() and min(), this function compare each element of x to the scalar y.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5176,8 +6864,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x > y ? y : x)
+/**
+ * Returns the minimum of x and y, i.e. (x > y ? y : x)
+ *
+ * Unlike the other variants of fmin() and min(), this function compare each element of x to the scalar y.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5185,8 +6875,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x > y ? y : x)
+/**
+ * Returns the minimum of x and y, i.e. (x > y ? y : x)
+ *
+ * Unlike the other variants of fmin() and min(), this function compare each element of x to the scalar y.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5194,8 +6886,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the remainder from x / y
+/**
+ * Returns the remainder of x / y, where the quotient is rounded towards zero.
+ *
+ * The function remainder() is similar but rounds toward the closest interger.
+ * For example, fmod(-3.8f, 2.f) returns -1.8f (-3.8f - -1.f * 2.f)
+ * while remainder(-3.8f, 2.f) returns 0.2f (-3.8f - -2.f * 2.f).
  *
  * Supported by API versions 9 and newer.
  */
@@ -5203,8 +6899,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the remainder from x / y
+/**
+ * Returns the remainder of x / y, where the quotient is rounded towards zero.
+ *
+ * The function remainder() is similar but rounds toward the closest interger.
+ * For example, fmod(-3.8f, 2.f) returns -1.8f (-3.8f - -1.f * 2.f)
+ * while remainder(-3.8f, 2.f) returns 0.2f (-3.8f - -2.f * 2.f).
  *
  * Supported by API versions 9 and newer.
  */
@@ -5212,8 +6912,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the remainder from x / y
+/**
+ * Returns the remainder of x / y, where the quotient is rounded towards zero.
+ *
+ * The function remainder() is similar but rounds toward the closest interger.
+ * For example, fmod(-3.8f, 2.f) returns -1.8f (-3.8f - -1.f * 2.f)
+ * while remainder(-3.8f, 2.f) returns 0.2f (-3.8f - -2.f * 2.f).
  *
  * Supported by API versions 9 and newer.
  */
@@ -5221,8 +6925,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the remainder from x / y
+/**
+ * Returns the remainder of x / y, where the quotient is rounded towards zero.
+ *
+ * The function remainder() is similar but rounds toward the closest interger.
+ * For example, fmod(-3.8f, 2.f) returns -1.8f (-3.8f - -1.f * 2.f)
+ * while remainder(-3.8f, 2.f) returns 0.2f (-3.8f - -2.f * 2.f).
  *
  * Supported by API versions 9 and newer.
  */
@@ -5230,10 +6938,14 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return fractional part of v
+/**
+ * Returns the positive fractional part of v, i.e. v - floor(v).
  *
- * @param floor  floor[0] will be set to the floor of the input value.
+ * For example, fract(1.3f, &val) returns 0.3f and sets val to 1.f.
+ * fract(-1.3f, &val) returns 0.7f and sets val to -2.f.
+ *
+ * @param v Input value.
+ * @param floor  If floor is not null, each element of floor will be set to the floor of the corresponding element of v.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5241,10 +6953,14 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return fractional part of v
+/**
+ * Returns the positive fractional part of v, i.e. v - floor(v).
  *
- * @param floor  floor[0] will be set to the floor of the input value.
+ * For example, fract(1.3f, &val) returns 0.3f and sets val to 1.f.
+ * fract(-1.3f, &val) returns 0.7f and sets val to -2.f.
+ *
+ * @param v Input value.
+ * @param floor  If floor is not null, each element of floor will be set to the floor of the corresponding element of v.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5252,10 +6968,14 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return fractional part of v
+/**
+ * Returns the positive fractional part of v, i.e. v - floor(v).
  *
- * @param floor  floor[0] will be set to the floor of the input value.
+ * For example, fract(1.3f, &val) returns 0.3f and sets val to 1.f.
+ * fract(-1.3f, &val) returns 0.7f and sets val to -2.f.
+ *
+ * @param v Input value.
+ * @param floor  If floor is not null, each element of floor will be set to the floor of the corresponding element of v.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5263,10 +6983,14 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return fractional part of v
+/**
+ * Returns the positive fractional part of v, i.e. v - floor(v).
  *
- * @param floor  floor[0] will be set to the floor of the input value.
+ * For example, fract(1.3f, &val) returns 0.3f and sets val to 1.f.
+ * fract(-1.3f, &val) returns 0.7f and sets val to -2.f.
+ *
+ * @param v Input value.
+ * @param floor  If floor is not null, each element of floor will be set to the floor of the corresponding element of v.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5274,8 +6998,11 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return fractional part of v
+/**
+ * Returns the positive fractional part of v, i.e. v - floor(v).
+ *
+ * For example, fract(1.3f, &val) returns 0.3f and sets val to 1.f.
+ * fract(-1.3f, &val) returns 0.7f and sets val to -2.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5286,8 +7013,11 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return fractional part of v
+/**
+ * Returns the positive fractional part of v, i.e. v - floor(v).
+ *
+ * For example, fract(1.3f, &val) returns 0.3f and sets val to 1.f.
+ * fract(-1.3f, &val) returns 0.7f and sets val to -2.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5298,8 +7028,11 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return fractional part of v
+/**
+ * Returns the positive fractional part of v, i.e. v - floor(v).
+ *
+ * For example, fract(1.3f, &val) returns 0.3f and sets val to 1.f.
+ * fract(-1.3f, &val) returns 0.7f and sets val to -2.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5310,8 +7043,11 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return fractional part of v
+/**
+ * Returns the positive fractional part of v, i.e. v - floor(v).
+ *
+ * For example, fract(1.3f, &val) returns 0.3f and sets val to 1.f.
+ * fract(-1.3f, &val) returns 0.7f and sets val to -2.f.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5322,52 +7058,70 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the mantissa and place the exponent into iptr[0]
+/**
+ * Returns the binary mantissa and exponent of v, e.g. v == mantissa * 2 ^ exponent.
+ *
+ * The mantissa is always between 0.5 (inclusive) and 1.0 (exclusive).
+ * See ldexp() for the reverse operation.
  *
  * @param v Supports float, float2, float3, float4.
+ * @param expo  If expo is not null, each element of expo will be set to the exponent of the corresponding element of v.
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((overloadable))frexp(float v, int* iptr);
+extern float __attribute__((overloadable))frexp(float v, int* expo);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the mantissa and place the exponent into iptr[0]
+/**
+ * Returns the binary mantissa and exponent of v, e.g. v == mantissa * 2 ^ exponent.
+ *
+ * The mantissa is always between 0.5 (inclusive) and 1.0 (exclusive).
+ * See ldexp() for the reverse operation.
  *
  * @param v Supports float, float2, float3, float4.
+ * @param expo  If expo is not null, each element of expo will be set to the exponent of the corresponding element of v.
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((overloadable))frexp(float2 v, int2* iptr);
+extern float2 __attribute__((overloadable))frexp(float2 v, int2* expo);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the mantissa and place the exponent into iptr[0]
+/**
+ * Returns the binary mantissa and exponent of v, e.g. v == mantissa * 2 ^ exponent.
+ *
+ * The mantissa is always between 0.5 (inclusive) and 1.0 (exclusive).
+ * See ldexp() for the reverse operation.
  *
  * @param v Supports float, float2, float3, float4.
+ * @param expo  If expo is not null, each element of expo will be set to the exponent of the corresponding element of v.
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((overloadable))frexp(float3 v, int3* iptr);
+extern float3 __attribute__((overloadable))frexp(float3 v, int3* expo);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the mantissa and place the exponent into iptr[0]
+/**
+ * Returns the binary mantissa and exponent of v, e.g. v == mantissa * 2 ^ exponent.
+ *
+ * The mantissa is always between 0.5 (inclusive) and 1.0 (exclusive).
+ * See ldexp() for the reverse operation.
  *
  * @param v Supports float, float2, float3, float4.
+ * @param expo  If expo is not null, each element of expo will be set to the exponent of the corresponding element of v.
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((overloadable))frexp(float4 v, int4* iptr);
+extern float4 __attribute__((overloadable))frexp(float4 v, int4* expo);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Return the approximate reciprocal of a value.
+/**
+ * Returns the approximate reciprocal of a value.
+ *
+ * The precision is that of a 16 bit floating point value.
  *
  * Supported by API versions 17 and newer.
  */
@@ -5375,8 +7129,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Return the approximate reciprocal of a value.
+/**
+ * Returns the approximate reciprocal of a value.
+ *
+ * The precision is that of a 16 bit floating point value.
  *
  * Supported by API versions 17 and newer.
  */
@@ -5384,8 +7140,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Return the approximate reciprocal of a value.
+/**
+ * Returns the approximate reciprocal of a value.
+ *
+ * The precision is that of a 16 bit floating point value.
  *
  * Supported by API versions 17 and newer.
  */
@@ -5393,8 +7151,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Return the approximate reciprocal of a value.
+/**
+ * Returns the approximate reciprocal of a value.
+ *
+ * The precision is that of a 16 bit floating point value.
  *
  * Supported by API versions 17 and newer.
  */
@@ -5402,8 +7162,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Return the approximate value of (1.f / sqrt(value)).
+/**
+ * Returns the approximate value of (1.f / sqrt(value)).
+ *
+ * The precision is that of a 16 bit floating point value.
  *
  * Supported by API versions 17 and newer.
  */
@@ -5411,8 +7173,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Return the approximate value of (1.f / sqrt(value)).
+/**
+ * Returns the approximate value of (1.f / sqrt(value)).
+ *
+ * The precision is that of a 16 bit floating point value.
  *
  * Supported by API versions 17 and newer.
  */
@@ -5420,8 +7184,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Return the approximate value of (1.f / sqrt(value)).
+/**
+ * Returns the approximate value of (1.f / sqrt(value)).
+ *
+ * The precision is that of a 16 bit floating point value.
  *
  * Supported by API versions 17 and newer.
  */
@@ -5429,8 +7195,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Return the approximate value of (1.f / sqrt(value)).
+/**
+ * Returns the approximate value of (1.f / sqrt(value)).
+ *
+ * The precision is that of a 16 bit floating point value.
  *
  * Supported by API versions 17 and newer.
  */
@@ -5438,8 +7206,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Return the approximate square root of a value.
+/**
+ * Returns the approximate square root of a value.
+ *
+ * The precision is that of a 16 bit floating point value.
  *
  * Supported by API versions 17 and newer.
  */
@@ -5447,8 +7217,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Return the approximate square root of a value.
+/**
+ * Returns the approximate square root of a value.
+ *
+ * The precision is that of a 16 bit floating point value.
  *
  * Supported by API versions 17 and newer.
  */
@@ -5456,8 +7228,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Return the approximate square root of a value.
+/**
+ * Returns the approximate square root of a value.
+ *
+ * The precision is that of a 16 bit floating point value.
  *
  * Supported by API versions 17 and newer.
  */
@@ -5465,8 +7239,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 17))
-/*
- * Return the approximate square root of a value.
+/**
+ * Returns the approximate square root of a value.
+ *
+ * The precision is that of a 16 bit floating point value.
  *
  * Supported by API versions 17 and newer.
  */
@@ -5474,8 +7250,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return sqrt(x*x + y*y)
+/**
+ * Returns the hypotenuse, i.e. sqrt(x * x + y * y).
  *
  * Supported by API versions 9 and newer.
  */
@@ -5483,8 +7259,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return sqrt(x*x + y*y)
+/**
+ * Returns the hypotenuse, i.e. sqrt(x * x + y * y).
  *
  * Supported by API versions 9 and newer.
  */
@@ -5492,8 +7268,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return sqrt(x*x + y*y)
+/**
+ * Returns the hypotenuse, i.e. sqrt(x * x + y * y).
  *
  * Supported by API versions 9 and newer.
  */
@@ -5501,8 +7277,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return sqrt(x*x + y*y)
+/**
+ * Returns the hypotenuse, i.e. sqrt(x * x + y * y).
  *
  * Supported by API versions 9 and newer.
  */
@@ -5510,8 +7286,13 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the integer exponent of a value
+/**
+ * Returns the base two exponent of a value, where the mantissa is between 1.f (inclusive) and 2.f (exclusive).
+ *
+ * For example, ilogb(8.5f) returns 3.  Because of the difference in mantissa, this number is one less than
+ * is returned by frexp().
+ *
+ * logb() is similar but returns a float.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5519,8 +7300,13 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the integer exponent of a value
+/**
+ * Returns the base two exponent of a value, where the mantissa is between 1.f (inclusive) and 2.f (exclusive).
+ *
+ * For example, ilogb(8.5f) returns 3.  Because of the difference in mantissa, this number is one less than
+ * is returned by frexp().
+ *
+ * logb() is similar but returns a float.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5528,8 +7314,13 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the integer exponent of a value
+/**
+ * Returns the base two exponent of a value, where the mantissa is between 1.f (inclusive) and 2.f (exclusive).
+ *
+ * For example, ilogb(8.5f) returns 3.  Because of the difference in mantissa, this number is one less than
+ * is returned by frexp().
+ *
+ * logb() is similar but returns a float.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5537,8 +7328,13 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the integer exponent of a value
+/**
+ * Returns the base two exponent of a value, where the mantissa is between 1.f (inclusive) and 2.f (exclusive).
+ *
+ * For example, ilogb(8.5f) returns 3.  Because of the difference in mantissa, this number is one less than
+ * is returned by frexp().
+ *
+ * logb() is similar but returns a float.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5546,92 +7342,103 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x * 2^y)
+/**
+ * Returns the floating point created from the mantissa and exponent, i.e. (mantissa * 2 ^ exponent).
  *
- * @param x Supports 1,2,3,4 components
- * @param y Supports single component or matching vector.
+ * See frexp() for the reverse operation.
+ *
+ * @param mantissa Supports float, float2, float3, and float4.
+ * @param exponent Supports single component or matching vector.
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((const, overloadable))ldexp(float x, int y);
+extern float __attribute__((const, overloadable))ldexp(float mantissa, int exponent);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x * 2^y)
+/**
+ * Returns the floating point created from the mantissa and exponent, i.e. (mantissa * 2 ^ exponent).
  *
- * @param x Supports 1,2,3,4 components
- * @param y Supports single component or matching vector.
+ * See frexp() for the reverse operation.
+ *
+ * @param mantissa Supports float, float2, float3, and float4.
+ * @param exponent Supports single component or matching vector.
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))ldexp(float2 x, int2 y);
+extern float2 __attribute__((const, overloadable))ldexp(float2 mantissa, int2 exponent);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x * 2^y)
+/**
+ * Returns the floating point created from the mantissa and exponent, i.e. (mantissa * 2 ^ exponent).
  *
- * @param x Supports 1,2,3,4 components
- * @param y Supports single component or matching vector.
+ * See frexp() for the reverse operation.
+ *
+ * @param mantissa Supports float, float2, float3, and float4.
+ * @param exponent Supports single component or matching vector.
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))ldexp(float3 x, int3 y);
+extern float3 __attribute__((const, overloadable))ldexp(float3 mantissa, int3 exponent);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x * 2^y)
+/**
+ * Returns the floating point created from the mantissa and exponent, i.e. (mantissa * 2 ^ exponent).
  *
- * @param x Supports 1,2,3,4 components
- * @param y Supports single component or matching vector.
+ * See frexp() for the reverse operation.
+ *
+ * @param mantissa Supports float, float2, float3, and float4.
+ * @param exponent Supports single component or matching vector.
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))ldexp(float4 x, int4 y);
+extern float4 __attribute__((const, overloadable))ldexp(float4 mantissa, int4 exponent);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x * 2^y)
+/**
+ * Returns the floating point created from the mantissa and exponent, i.e. (mantissa * 2 ^ exponent).
+ * See frexp() for the reverse operation.
  *
- * @param x Supports 1,2,3,4 components
- * @param y Supports single component or matching vector.
+ * @param mantissa Supports float, float2, float3, and float4.
+ * @param exponent Supports single component or matching vector.
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))ldexp(float2 x, int y);
+extern float2 __attribute__((const, overloadable))ldexp(float2 mantissa, int exponent);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x * 2^y)
+/**
+ * Returns the floating point created from the mantissa and exponent, i.e. (mantissa * 2 ^ exponent).
+ * See frexp() for the reverse operation.
  *
- * @param x Supports 1,2,3,4 components
- * @param y Supports single component or matching vector.
+ * @param mantissa Supports float, float2, float3, and float4.
+ * @param exponent Supports single component or matching vector.
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))ldexp(float3 x, int y);
+extern float3 __attribute__((const, overloadable))ldexp(float3 mantissa, int exponent);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (x * 2^y)
+/**
+ * Returns the floating point created from the mantissa and exponent, i.e. (mantissa * 2 ^ exponent).
+ * See frexp() for the reverse operation.
  *
- * @param x Supports 1,2,3,4 components
- * @param y Supports single component or matching vector.
+ * @param mantissa Supports float, float2, float3, and float4.
+ * @param exponent Supports single component or matching vector.
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))ldexp(float4 x, int y);
+extern float4 __attribute__((const, overloadable))ldexp(float4 mantissa, int exponent);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the length of a vector.
+/**
+ * Computes the length of a vector.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5639,8 +7446,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the length of a vector.
+/**
+ * Computes the length of a vector.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5648,8 +7455,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the length of a vector.
+/**
+ * Computes the length of a vector.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5657,8 +7464,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the length of a vector.
+/**
+ * Computes the length of a vector.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5666,8 +7473,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the log gamma
+/**
+ * Returns the natural logarithm of the absolute value of the gamma function, i.e. log(fabs(gamma(value))).
  *
  * Supported by API versions 9 and newer.
  */
@@ -5675,8 +7482,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the log gamma
+/**
+ * Returns the natural logarithm of the absolute value of the gamma function, i.e. log(fabs(gamma(value))).
  *
  * Supported by API versions 9 and newer.
  */
@@ -5684,8 +7491,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the log gamma
+/**
+ * Returns the natural logarithm of the absolute value of the gamma function, i.e. log(fabs(gamma(value))).
  *
  * Supported by API versions 9 and newer.
  */
@@ -5693,8 +7500,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the log gamma
+/**
+ * Returns the natural logarithm of the absolute value of the gamma function, i.e. log(fabs(gamma(value))).
  *
  * Supported by API versions 9 and newer.
  */
@@ -5702,44 +7509,68 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the log gamma and sign
+/**
+ * Returns the natural logarithm of the absolute value of the gamma function, i.e. log(fabs(gamma(x))).
+ *
+ * Can also return the sign of the gamma function.
+ *
+ * @param x Input value.
+ * @param sign  If sign is not null, each element of sign will be set to -1.f if the gamma of the corresponding element of x is negative, otherwise to 1.f.
+ *
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((overloadable))lgamma(float x, int* y);
+extern float __attribute__((overloadable))lgamma(float x, int* sign);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the log gamma and sign
+/**
+ * Returns the natural logarithm of the absolute value of the gamma function, i.e. log(fabs(gamma(x))).
+ *
+ * Can also return the sign of the gamma function.
+ *
+ * @param x Input value.
+ * @param sign  If sign is not null, each element of sign will be set to -1.f if the gamma of the corresponding element of x is negative, otherwise to 1.f.
+ *
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((overloadable))lgamma(float2 x, int2* y);
+extern float2 __attribute__((overloadable))lgamma(float2 x, int2* sign);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the log gamma and sign
+/**
+ * Returns the natural logarithm of the absolute value of the gamma function, i.e. log(fabs(gamma(x))).
+ *
+ * Can also return the sign of the gamma function.
+ *
+ * @param x Input value.
+ * @param sign  If sign is not null, each element of sign will be set to -1.f if the gamma of the corresponding element of x is negative, otherwise to 1.f.
+ *
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((overloadable))lgamma(float3 x, int3* y);
+extern float3 __attribute__((overloadable))lgamma(float3 x, int3* sign);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the log gamma and sign
+/**
+ * Returns the natural logarithm of the absolute value of the gamma function, i.e. log(fabs(gamma(x))).
+ *
+ * Can also return the sign of the gamma function.
+ *
+ * @param x Input value.
+ * @param sign  If sign is not null, each element of sign will be set to -1.f if the gamma of the corresponding element of x is negative, otherwise to 1.f.
+ *
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((overloadable))lgamma(float4 x, int4* y);
+extern float4 __attribute__((overloadable))lgamma(float4 x, int4* sign);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the natural logarithm.
+/**
+ * Returns the natural logarithm.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5747,8 +7578,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the natural logarithm.
+/**
+ * Returns the natural logarithm.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5756,8 +7587,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the natural logarithm.
+/**
+ * Returns the natural logarithm.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5765,8 +7596,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the natural logarithm.
+/**
+ * Returns the natural logarithm.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5774,8 +7605,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the base 10 logarithm.
+/**
+ * Returns the base 10 logarithm.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5783,8 +7614,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the base 10 logarithm.
+/**
+ * Returns the base 10 logarithm.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5792,8 +7623,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the base 10 logarithm.
+/**
+ * Returns the base 10 logarithm.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5801,8 +7632,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the base 10 logarithm.
+/**
+ * Returns the base 10 logarithm.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5810,44 +7641,44 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the natural logarithm of (v + 1.0f)
+/**
+ * Returns the natural logarithm of (v + 1.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((const, overloadable))log1p(float);
+extern float __attribute__((const, overloadable))log1p(float v);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the natural logarithm of (v + 1.0f)
+/**
+ * Returns the natural logarithm of (v + 1.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))log1p(float2);
+extern float2 __attribute__((const, overloadable))log1p(float2 v);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the natural logarithm of (v + 1.0f)
+/**
+ * Returns the natural logarithm of (v + 1.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))log1p(float3);
+extern float3 __attribute__((const, overloadable))log1p(float3 v);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the natural logarithm of (v + 1.0f)
+/**
+ * Returns the natural logarithm of (v + 1.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))log1p(float4);
+extern float4 __attribute__((const, overloadable))log1p(float4 v);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the base 2 logarithm.
+/**
+ * Returns the base 2 logarithm.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5855,8 +7686,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the base 2 logarithm.
+/**
+ * Returns the base 2 logarithm.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5864,8 +7695,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the base 2 logarithm.
+/**
+ * Returns the base 2 logarithm.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5873,8 +7704,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the base 2 logarithm.
+/**
+ * Returns the base 2 logarithm.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5882,8 +7713,13 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the exponent of the value.
+/**
+ * Returns the base two exponent of a value, where the mantissa is between 1.f (inclusive) and 2.f (exclusive).
+ *
+ * For example, ilogb(8.5f) returns 3.f.  Because of the difference in mantissa, this number is one less than
+ * is returned by frexp().
+ *
+ * ilogb() is similar but returns an integer.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5891,8 +7727,13 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the exponent of the value.
+/**
+ * Returns the base two exponent of a value, where the mantissa is between 1.f (inclusive) and 2.f (exclusive).
+ *
+ * For example, ilogb(8.5f) returns 3.f.  Because of the difference in mantissa, this number is one less than
+ * is returned by frexp().
+ *
+ * ilogb() is similar but returns an integer.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5900,8 +7741,13 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the exponent of the value.
+/**
+ * Returns the base two exponent of a value, where the mantissa is between 1.f (inclusive) and 2.f (exclusive).
+ *
+ * For example, ilogb(8.5f) returns 3.f.  Because of the difference in mantissa, this number is one less than
+ * is returned by frexp().
+ *
+ * ilogb() is similar but returns an integer.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5909,8 +7755,13 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the exponent of the value.
+/**
+ * Returns the base two exponent of a value, where the mantissa is between 1.f (inclusive) and 2.f (exclusive).
+ *
+ * For example, ilogb(8.5f) returns 3.f.  Because of the difference in mantissa, this number is one less than
+ * is returned by frexp().
+ *
+ * ilogb() is similar but returns an integer.
  *
  * Supported by API versions 9 and newer.
  */
@@ -5918,8 +7769,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute (a * b) + c
+/**
+ * Multiply and add.  Returns (a * b) + c.
+ *
+ * This function is identical to fma().
  *
  * Supported by API versions 9 and newer.
  */
@@ -5927,8 +7780,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute (a * b) + c
+/**
+ * Multiply and add.  Returns (a * b) + c.
+ *
+ * This function is identical to fma().
  *
  * Supported by API versions 9 and newer.
  */
@@ -5936,8 +7791,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute (a * b) + c
+/**
+ * Multiply and add.  Returns (a * b) + c.
+ *
+ * This function is identical to fma().
  *
  * Supported by API versions 9 and newer.
  */
@@ -5945,8 +7802,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute (a * b) + c
+/**
+ * Multiply and add.  Returns (a * b) + c.
+ *
+ * This function is identical to fma().
  *
  * Supported by API versions 9 and newer.
  */
@@ -5954,8 +7813,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 9 and newer.
  */
@@ -5963,8 +7822,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 9 and newer.
  */
@@ -5972,8 +7831,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 9 and newer.
  */
@@ -5981,8 +7840,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 9 and newer.
  */
@@ -5990,8 +7849,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6001,8 +7860,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6012,8 +7871,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6023,8 +7882,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6034,8 +7893,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6045,8 +7904,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6056,8 +7915,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6070,8 +7929,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6084,8 +7943,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6098,8 +7957,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6112,8 +7971,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6126,8 +7985,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6140,8 +7999,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6155,8 +8014,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6170,8 +8029,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6185,8 +8044,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6200,8 +8059,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6215,8 +8074,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6230,8 +8089,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6246,8 +8105,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6262,8 +8121,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6278,8 +8137,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6294,8 +8153,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6310,8 +8169,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6326,8 +8185,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6335,8 +8194,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6344,8 +8203,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6353,8 +8212,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6362,8 +8221,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6371,8 +8230,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6380,8 +8239,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6389,8 +8248,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6398,8 +8257,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6407,8 +8266,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6416,8 +8275,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6425,8 +8284,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6434,8 +8293,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6443,8 +8302,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6452,8 +8311,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6461,8 +8320,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6470,8 +8329,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6479,8 +8338,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6488,8 +8347,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6497,8 +8356,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6506,8 +8365,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6515,8 +8374,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6524,8 +8383,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6533,8 +8392,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6542,8 +8401,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6551,8 +8410,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6560,8 +8419,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6569,8 +8428,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6578,8 +8437,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6587,8 +8446,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6596,8 +8455,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6605,8 +8464,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the maximum value from two arguments
+/**
+ * Returns the maximum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6614,8 +8473,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 9 and newer.
  */
@@ -6623,8 +8482,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 9 and newer.
  */
@@ -6632,8 +8491,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 9 and newer.
  */
@@ -6641,8 +8500,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 9 and newer.
  */
@@ -6650,8 +8509,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6661,8 +8520,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6672,8 +8531,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6683,8 +8542,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6694,8 +8553,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6705,8 +8564,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6716,8 +8575,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6730,8 +8589,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6744,8 +8603,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6758,8 +8617,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6772,8 +8631,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6786,8 +8645,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6800,8 +8659,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6815,8 +8674,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6830,8 +8689,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6845,8 +8704,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6860,8 +8719,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6875,8 +8734,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6890,8 +8749,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6906,8 +8765,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6922,8 +8781,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6938,8 +8797,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6954,8 +8813,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6970,8 +8829,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9) && (RS_VERSION <= 19))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Suppored by API versions 9 - 19
  */
@@ -6986,8 +8845,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -6995,8 +8854,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7004,8 +8863,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7013,8 +8872,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7022,8 +8881,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7031,8 +8890,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7040,8 +8899,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7049,8 +8908,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7058,8 +8917,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7067,8 +8926,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7076,8 +8935,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7085,8 +8944,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7094,8 +8953,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7103,8 +8962,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7112,8 +8971,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7121,8 +8980,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7130,8 +8989,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7139,8 +8998,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7148,8 +9007,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7157,8 +9016,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7166,8 +9025,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7175,8 +9034,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7184,8 +9043,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7193,8 +9052,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7202,8 +9061,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7211,8 +9070,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7220,8 +9079,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7229,8 +9088,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7238,8 +9097,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7247,8 +9106,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7256,8 +9115,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7265,8 +9124,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the minimum value from two arguments
+/**
+ * Returns the minimum value from two arguments
  *
  * Supported by API versions 21 and newer.
  */
@@ -7274,8 +9133,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * return start + ((stop - start) * amount)
+/**
+ * Returns start + ((stop - start) * amount).
  *
  * Supported by API versions 9 and newer.
  */
@@ -7283,8 +9142,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * return start + ((stop - start) * amount)
+/**
+ * Returns start + ((stop - start) * amount).
  *
  * Supported by API versions 9 and newer.
  */
@@ -7292,8 +9151,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * return start + ((stop - start) * amount)
+/**
+ * Returns start + ((stop - start) * amount).
  *
  * Supported by API versions 9 and newer.
  */
@@ -7301,8 +9160,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * return start + ((stop - start) * amount)
+/**
+ * Returns start + ((stop - start) * amount).
  *
  * Supported by API versions 9 and newer.
  */
@@ -7310,8 +9169,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * return start + ((stop - start) * amount)
+/**
+ * Returns start + ((stop - start) * amount).
+ *
+ * This can be useful for mixing two values.  For example, to create a new color that is 40% color1 and 60% color2, use mix(color1, color2, 0.6f).
  *
  * Supported by API versions 9 and newer.
  */
@@ -7319,8 +9180,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * return start + ((stop - start) * amount)
+/**
+ * Returns start + ((stop - start) * amount).
+ *
+ * This can be useful for mixing two values.  For example, to create a new color that is 40% color1 and 60% color2, use mix(color1, color2, 0.6f).
  *
  * Supported by API versions 9 and newer.
  */
@@ -7328,8 +9191,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * return start + ((stop - start) * amount)
+/**
+ * Returns start + ((stop - start) * amount).
+ *
+ * This can be useful for mixing two values.  For example, to create a new color that is 40% color1 and 60% color2, use mix(color1, color2, 0.6f).
  *
  * Supported by API versions 9 and newer.
  */
@@ -7337,8 +9202,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the integral and fractional components of a number.
+/**
+ * Returns the integral and fractional components of a number.
+ *
+ * Both components will have the same sign as x.  For example, for an input of -3.72f, iret will be set to -3.f and .72f will be returned.
  *
  * @param x Source value
  * @param iret iret[0] will be set to the integral portion of the number.
@@ -7350,8 +9217,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the integral and fractional components of a number.
+/**
+ * Returns the integral and fractional components of a number.
+ *
+ * Both components will have the same sign as x.  For example, for an input of -3.72f, iret will be set to -3.f and .72f will be returned.
  *
  * @param x Source value
  * @param iret iret[0] will be set to the integral portion of the number.
@@ -7363,8 +9232,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the integral and fractional components of a number.
+/**
+ * Returns the integral and fractional components of a number.
+ *
+ * Both components will have the same sign as x.  For example, for an input of -3.72f, iret will be set to -3.f and .72f will be returned.
  *
  * @param x Source value
  * @param iret iret[0] will be set to the integral portion of the number.
@@ -7376,8 +9247,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the integral and fractional components of a number.
+/**
+ * Returns the integral and fractional components of a number.
+ *
+ * Both components will have the same sign as x.  For example, for an input of -3.72f, iret will be set to -3.f and .72f will be returned.
  *
  * @param x Source value
  * @param iret iret[0] will be set to the integral portion of the number.
@@ -7389,8 +9262,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * generate a nan
+/**
+ * Returns a NaN value (Not a Number).
+ *
+ * The argument is embedded into the return value and can be used to distinguish various NaNs.
  *
  * Supported by API versions 9 and newer.
  */
@@ -7398,8 +9273,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * acos
+/**
+ * Returns the approximate inverse cosine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7407,8 +9282,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * acos
+/**
+ * Returns the approximate inverse cosine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7416,8 +9291,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * acos
+/**
+ * Returns the approximate inverse cosine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7425,8 +9300,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * acos
+/**
+ * Returns the approximate inverse cosine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7434,8 +9309,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * acosh
+/**
+ * Returns the approximate inverse hyperbolic cosine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7443,8 +9318,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * acosh
+/**
+ * Returns the approximate inverse hyperbolic cosine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7452,8 +9327,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * acosh
+/**
+ * Returns the approximate inverse hyperbolic cosine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7461,8 +9336,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * acosh
+/**
+ * Returns the approximate inverse hyperbolic cosine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7470,8 +9345,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * acospi
+/**
+ * Returns the approximate inverse cosine in radians, divided by pi.
+ *
+ * To get an inverse cosine measured in degrees, use acospi(a) * 180.f.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7479,8 +9356,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * acospi
+/**
+ * Returns the approximate inverse cosine in radians, divided by pi.
+ *
+ * To get an inverse cosine measured in degrees, use acospi(a) * 180.f.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7488,8 +9367,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * acospi
+/**
+ * Returns the approximate inverse cosine in radians, divided by pi.
+ *
+ * To get an inverse cosine measured in degrees, use acospi(a) * 180.f.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7497,8 +9378,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * acospi
+/**
+ * Returns the approximate inverse cosine in radians, divided by pi.
+ *
+ * To get an inverse cosine measured in degrees, use acospi(a) * 180.f.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7506,8 +9389,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * asin
+/**
+ * Returns the approximate inverse sine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7515,8 +9398,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * asin
+/**
+ * Returns the approximate inverse sine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7524,8 +9407,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * asin
+/**
+ * Returns the approximate inverse sine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7533,8 +9416,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * asin
+/**
+ * Returns the approximate inverse sine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7542,8 +9425,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * asinh
+/**
+ * Returns the approximate inverse hyperbolic sine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7551,8 +9434,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * asinh
+/**
+ * Returns the approximate inverse hyperbolic sine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7560,8 +9443,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * asinh
+/**
+ * Returns the approximate inverse hyperbolic sine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7569,8 +9452,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * asinh
+/**
+ * Returns the approximate inverse hyperbolic sine, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7578,8 +9461,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse sine divided by PI.
+/**
+ * Returns the approximate inverse sine in radians, divided by pi.
+ *
+ * To get an inverse sine measured in degrees, use asinpi(a) * 180.f.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7587,8 +9472,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse sine divided by PI.
+/**
+ * Returns the approximate inverse sine in radians, divided by pi.
+ *
+ * To get an inverse sine measured in degrees, use asinpi(a) * 180.f.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7596,8 +9483,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse sine divided by PI.
+/**
+ * Returns the approximate inverse sine in radians, divided by pi.
+ *
+ * To get an inverse sine measured in degrees, use asinpi(a) * 180.f.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7605,8 +9494,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse sine divided by PI.
+/**
+ * Returns the approximate inverse sine in radians, divided by pi.
+ *
+ * To get an inverse sine measured in degrees, use asinpi(a) * 180.f.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7614,8 +9505,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent.
+/**
+ * Returns the approximate inverse tangent, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7623,8 +9514,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent.
+/**
+ * Returns the approximate inverse tangent, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7632,8 +9523,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent.
+/**
+ * Returns the approximate inverse tangent, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7641,8 +9532,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent.
+/**
+ * Returns the approximate inverse tangent, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7650,8 +9541,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent of y / x.
+/**
+ * Returns the approximate inverse tangent of y / x, in radians.
+ *
+ * x can be 0.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7659,8 +9552,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent of y / x.
+/**
+ * Returns the approximate inverse tangent of y / x, in radians.
+ *
+ * x can be 0.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7668,8 +9563,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent of y / x.
+/**
+ * Returns the approximate inverse tangent of y / x, in radians.
+ *
+ * x can be 0.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7677,8 +9574,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent of y / x.
+/**
+ * Returns the approximate inverse tangent of y / x, in radians.
+ *
+ * x can be 0.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7686,8 +9585,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent of y / x, divided by PI.
+/**
+ * Returns the approximate inverse tangent of y / x, in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atan2pi(x, y) * 180.f.
+ *
+ * x can be 0.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7695,8 +9598,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent of y / x, divided by PI.
+/**
+ * Returns the approximate inverse tangent of y / x, in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atan2pi(x, y) * 180.f.
+ *
+ * x can be 0.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7704,8 +9611,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent of y / x, divided by PI.
+/**
+ * Returns the approximate inverse tangent of y / x, in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atan2pi(x, y) * 180.f.
+ *
+ * x can be 0.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7713,8 +9624,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent of y / x, divided by PI.
+/**
+ * Returns the approximate inverse tangent of y / x, in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atan2pi(x, y) * 180.f.
+ *
+ * x can be 0.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7722,8 +9637,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse hyperbolic tangent.
+/**
+ * Returns the approximate inverse hyperbolic tangent, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7731,8 +9646,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse hyperbolic tangent.
+/**
+ * Returns the approximate inverse hyperbolic tangent, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7740,8 +9655,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse hyperbolic tangent.
+/**
+ * Returns the approximate inverse hyperbolic tangent, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7749,8 +9664,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse hyperbolic tangent.
+/**
+ * Returns the approximate inverse hyperbolic tangent, in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7758,8 +9673,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent divided by PI.
+/**
+ * Returns the approximate inverse tangent in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atanpi(a) * 180.f.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7767,8 +9684,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent divided by PI.
+/**
+ * Returns the approximate inverse tangent in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atanpi(a) * 180.f.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7776,8 +9695,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent divided by PI.
+/**
+ * Returns the approximate inverse tangent in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atanpi(a) * 180.f.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7785,8 +9706,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the inverse tangent divided by PI.
+/**
+ * Returns the approximate inverse tangent in radians, divided by pi.
+ *
+ * To get an inverse tangent measured in degrees, use atanpi(a) * 180.f.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7794,8 +9717,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the cube root.
+/**
+ * Returns the approximate cubic root.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7803,8 +9726,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the cube root.
+/**
+ * Returns the approximate cubic root.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7812,8 +9735,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the cube root.
+/**
+ * Returns the approximate cubic root.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7821,8 +9744,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the cube root.
+/**
+ * Returns the approximate cubic root.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7830,8 +9753,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the cosine.
+/**
+ * Returns the approximate cosine of an angle measured in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7839,8 +9762,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the cosine.
+/**
+ * Returns the approximate cosine of an angle measured in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7848,8 +9771,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the cosine.
+/**
+ * Returns the approximate cosine of an angle measured in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7857,8 +9780,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the cosine.
+/**
+ * Returns the approximate cosine of an angle measured in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7866,8 +9789,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the hypebolic cosine.
+/**
+ * Returns the approximate hypebolic cosine.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7875,8 +9798,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the hypebolic cosine.
+/**
+ * Returns the approximate hypebolic cosine.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7884,8 +9807,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the hypebolic cosine.
+/**
+ * Returns the approximate hypebolic cosine.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7893,8 +9816,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the hypebolic cosine.
+/**
+ * Returns the approximate hypebolic cosine.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7902,44 +9825,52 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the cosine of the value * PI.
+/**
+ * Returns the approximate cosine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the cosine of a value measured in degrees, call cospi(a / 180.f).
  *
  * Supported by API versions 21 and newer.
  */
-extern float __attribute__((const, overloadable))native_cospi(float);
+extern float __attribute__((const, overloadable))native_cospi(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the cosine of the value * PI.
+/**
+ * Returns the approximate cosine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the cosine of a value measured in degrees, call cospi(a / 180.f).
  *
  * Supported by API versions 21 and newer.
  */
-extern float2 __attribute__((const, overloadable))native_cospi(float2);
+extern float2 __attribute__((const, overloadable))native_cospi(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the cosine of the value * PI.
+/**
+ * Returns the approximate cosine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the cosine of a value measured in degrees, call cospi(a / 180.f).
  *
  * Supported by API versions 21 and newer.
  */
-extern float3 __attribute__((const, overloadable))native_cospi(float3);
+extern float3 __attribute__((const, overloadable))native_cospi(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the cosine of the value * PI.
+/**
+ * Returns the approximate cosine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the cosine of a value measured in degrees, call cospi(a / 180.f).
  *
  * Supported by API versions 21 and newer.
  */
-extern float4 __attribute__((const, overloadable))native_cospi(float4);
+extern float4 __attribute__((const, overloadable))native_cospi(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Compute the approximate distance between two points.
+/**
+ * Computes the approximate distance between two points.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7947,8 +9878,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Compute the approximate distance between two points.
+/**
+ * Computes the approximate distance between two points.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7956,8 +9887,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Compute the approximate distance between two points.
+/**
+ * Computes the approximate distance between two points.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7965,8 +9896,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Compute the approximate distance between two points.
+/**
+ * Computes the approximate distance between two points.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7974,8 +9905,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Compute the approximate division result of two values.
+/**
+ * Computes the approximate division result of two values.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7983,8 +9914,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Compute the approximate division result of two values.
+/**
+ * Computes the approximate division result of two values.
  *
  * Supported by API versions 21 and newer.
  */
@@ -7992,8 +9923,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Compute the approximate division result of two values.
+/**
+ * Computes the approximate division result of two values.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8001,8 +9932,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Compute the approximate division result of two values.
+/**
+ * Computes the approximate division result of two values.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8010,10 +9941,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate exp
- * valid for inputs -86.f to 86.f
- * Max 8192 ulps of error
+/**
+ * Fast approximate exp.
+ *
+ * It is valid for inputs from -86.f to 86.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
  *
  * Supported by API versions 18 and newer.
  */
@@ -8021,10 +9952,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate exp
- * valid for inputs -86.f to 86.f
- * Max 8192 ulps of error
+/**
+ * Fast approximate exp.
+ *
+ * It is valid for inputs from -86.f to 86.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
  *
  * Supported by API versions 18 and newer.
  */
@@ -8032,10 +9963,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate exp
- * valid for inputs -86.f to 86.f
- * Max 8192 ulps of error
+/**
+ * Fast approximate exp.
+ *
+ * It is valid for inputs from -86.f to 86.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
  *
  * Supported by API versions 18 and newer.
  */
@@ -8043,10 +9974,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate exp
- * valid for inputs -86.f to 86.f
- * Max 8192 ulps of error
+/**
+ * Fast approximate exp.
+ *
+ * It is valid for inputs from -86.f to 86.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
  *
  * Supported by API versions 18 and newer.
  */
@@ -8054,10 +9985,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate exp10
- * valid for inputs -37.f to 37.f
- * Max 8192 ulps of error
+/**
+ * Fast approximate exp10.
+ *
+ * It is valid for inputs from -37.f to 37.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
  *
  * Supported by API versions 18 and newer.
  */
@@ -8065,10 +9996,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate exp10
- * valid for inputs -37.f to 37.f
- * Max 8192 ulps of error
+/**
+ * Fast approximate exp10.
+ *
+ * It is valid for inputs from -37.f to 37.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
  *
  * Supported by API versions 18 and newer.
  */
@@ -8076,10 +10007,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate exp10
- * valid for inputs -37.f to 37.f
- * Max 8192 ulps of error
+/**
+ * Fast approximate exp10.
+ *
+ * It is valid for inputs from -37.f to 37.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
  *
  * Supported by API versions 18 and newer.
  */
@@ -8087,10 +10018,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate exp10
- * valid for inputs -37.f to 37.f
- * Max 8192 ulps of error
+/**
+ * Fast approximate exp10.
+ *
+ * It is valid for inputs from -37.f to 37.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
  *
  * Supported by API versions 18 and newer.
  */
@@ -8098,10 +10029,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate exp2
- * valid for inputs -125.f to 125.f
- * Max 8192 ulps of error
+/**
+ * Fast approximate exp2.
+ *
+ * It is valid for inputs from -125.f to 125.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
  *
  * Supported by API versions 18 and newer.
  */
@@ -8109,10 +10040,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate exp2
- * valid for inputs -125.f to 125.f
- * Max 8192 ulps of error
+/**
+ * Fast approximate exp2.
+ *
+ * It is valid for inputs from -125.f to 125.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
  *
  * Supported by API versions 18 and newer.
  */
@@ -8120,10 +10051,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate exp2
- * valid for inputs -125.f to 125.f
- * Max 8192 ulps of error
+/**
+ * Fast approximate exp2.
+ *
+ * It is valid for inputs from -125.f to 125.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
  *
  * Supported by API versions 18 and newer.
  */
@@ -8131,10 +10062,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate exp2
- * valid for inputs -125.f to 125.f
- * Max 8192 ulps of error
+/**
+ * Fast approximate exp2.
+ *
+ * It is valid for inputs from -125.f to 125.f.  The precision is no worse than what would be expected from using 16 bit floating point values.
  *
  * Supported by API versions 18 and newer.
  */
@@ -8142,8 +10073,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return (e ^ value) - 1.
+/**
+ * Returns the approximate (e ^ value) - 1.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8151,8 +10082,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return (e ^ value) - 1.
+/**
+ * Returns the approximate (e ^ value) - 1.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8160,8 +10091,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return (e ^ value) - 1.
+/**
+ * Returns the approximate (e ^ value) - 1.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8169,8 +10100,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return (e ^ value) - 1.
+/**
+ * Returns the approximate (e ^ value) - 1.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8178,8 +10109,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return native_sqrt(x*x + y*y)
+/**
+ * Returns the approximate native_sqrt(x*x + y*y)
  *
  * Supported by API versions 21 and newer.
  */
@@ -8187,8 +10118,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return native_sqrt(x*x + y*y)
+/**
+ * Returns the approximate native_sqrt(x*x + y*y)
  *
  * Supported by API versions 21 and newer.
  */
@@ -8196,8 +10127,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return native_sqrt(x*x + y*y)
+/**
+ * Returns the approximate native_sqrt(x*x + y*y)
  *
  * Supported by API versions 21 and newer.
  */
@@ -8205,8 +10136,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return native_sqrt(x*x + y*y)
+/**
+ * Returns the approximate native_sqrt(x*x + y*y)
  *
  * Supported by API versions 21 and newer.
  */
@@ -8214,7 +10145,7 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
+/**
  * Compute the approximate length of a vector.
  *
  * Supported by API versions 21 and newer.
@@ -8223,7 +10154,7 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
+/**
  * Compute the approximate length of a vector.
  *
  * Supported by API versions 21 and newer.
@@ -8232,7 +10163,7 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
+/**
  * Compute the approximate length of a vector.
  *
  * Supported by API versions 21 and newer.
@@ -8241,7 +10172,7 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
+/**
  * Compute the approximate length of a vector.
  *
  * Supported by API versions 21 and newer.
@@ -8250,8 +10181,9 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate log
+/**
+ * Fast approximate log.
+ *
  * It is not accurate for values very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8260,8 +10192,9 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate log
+/**
+ * Fast approximate log.
+ *
  * It is not accurate for values very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8270,8 +10203,9 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate log
+/**
+ * Fast approximate log.
+ *
  * It is not accurate for values very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8280,8 +10214,9 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate log
+/**
+ * Fast approximate log.
+ *
  * It is not accurate for values very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8290,8 +10225,9 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate log10
+/**
+ * Fast approximate log10.
+ *
  * It is not accurate for values very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8300,8 +10236,9 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate log10
+/**
+ * Fast approximate log10.
+ *
  * It is not accurate for values very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8310,8 +10247,9 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate log10
+/**
+ * Fast approximate log10.
+ *
  * It is not accurate for values very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8320,8 +10258,9 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate log10
+/**
+ * Fast approximate log10.
+ *
  * It is not accurate for values very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8330,8 +10269,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the natural logarithm of (v + 1.0f)
+/**
+ * Returns the approximate natural logarithm of (v + 1.0f)
  *
  * Supported by API versions 21 and newer.
  */
@@ -8339,8 +10278,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the natural logarithm of (v + 1.0f)
+/**
+ * Returns the approximate natural logarithm of (v + 1.0f)
  *
  * Supported by API versions 21 and newer.
  */
@@ -8348,8 +10287,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the natural logarithm of (v + 1.0f)
+/**
+ * Returns the approximate natural logarithm of (v + 1.0f)
  *
  * Supported by API versions 21 and newer.
  */
@@ -8357,8 +10296,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the natural logarithm of (v + 1.0f)
+/**
+ * Returns the approximate natural logarithm of (v + 1.0f)
  *
  * Supported by API versions 21 and newer.
  */
@@ -8366,8 +10305,9 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate log2
+/**
+ * Fast approximate log2.
+ *
  * It is not accurate for values very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8376,8 +10316,9 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate log2
+/**
+ * Fast approximate log2.
+ *
  * It is not accurate for values very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8386,8 +10327,9 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate log2
+/**
+ * Fast approximate log2.
+ *
  * It is not accurate for values very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8396,8 +10338,9 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate log2
+/**
+ * Fast approximate log2.
+ *
  * It is not accurate for values very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8406,8 +10349,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Normalize a vector.
+/**
+ * Approximately normalizes a vector.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8415,8 +10358,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Normalize a vector.
+/**
+ * Approximately normalizes a vector.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8424,8 +10367,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Normalize a vector.
+/**
+ * Approximately normalizes a vector.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8433,8 +10376,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Normalize a vector.
+/**
+ * Approximately normalizes a vector.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8442,10 +10385,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate v ^ y
- * v must be between 0.f and 256.f
- * y must be between -15.f and 15.f
+/**
+ * Fast approximate v ^ y.
+ *
+ * v must be between 0.f and 256.f.
+ * y must be between -15.f and 15.f.
+ *
  * It is not accurate for values of v very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8454,10 +10399,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate v ^ y
- * v must be between 0.f and 256.f
- * y must be between -15.f and 15.f
+/**
+ * Fast approximate v ^ y.
+ *
+ * v must be between 0.f and 256.f.
+ * y must be between -15.f and 15.f.
+ *
  * It is not accurate for values of v very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8466,10 +10413,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate v ^ y
- * v must be between 0.f and 256.f
- * y must be between -15.f and 15.f
+/**
+ * Fast approximate v ^ y.
+ *
+ * v must be between 0.f and 256.f.
+ * y must be between -15.f and 15.f.
+ *
  * It is not accurate for values of v very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8478,10 +10427,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 18))
-/*
- * Fast approximate v ^ y
- * v must be between 0.f and 256.f
- * y must be between -15.f and 15.f
+/**
+ * Fast approximate v ^ y.
+ *
+ * v must be between 0.f and 256.f.
+ * y must be between -15.f and 15.f.
+ *
  * It is not accurate for values of v very close to zero.
  *
  * Supported by API versions 18 and newer.
@@ -8490,8 +10441,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the approximate reciprocal of a value.
+/**
+ * Returns the approximate approximate reciprocal of a value.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8499,8 +10450,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the approximate reciprocal of a value.
+/**
+ * Returns the approximate approximate reciprocal of a value.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8508,8 +10459,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the approximate reciprocal of a value.
+/**
+ * Returns the approximate approximate reciprocal of a value.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8517,8 +10468,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the approximate reciprocal of a value.
+/**
+ * Returns the approximate approximate reciprocal of a value.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8526,8 +10477,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Compute the Nth root of a value.
+/**
+ * Compute the approximate Nth root of a value.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8535,8 +10486,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Compute the Nth root of a value.
+/**
+ * Compute the approximate Nth root of a value.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8544,8 +10495,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Compute the Nth root of a value.
+/**
+ * Compute the approximate Nth root of a value.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8553,8 +10504,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Compute the Nth root of a value.
+/**
+ * Compute the approximate Nth root of a value.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8562,8 +10513,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return (1 / sqrt(value)).
+/**
+ * Returns approximate (1 / sqrt(value)).
  *
  * Supported by API versions 21 and newer.
  */
@@ -8571,8 +10522,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return (1 / sqrt(value)).
+/**
+ * Returns approximate (1 / sqrt(value)).
  *
  * Supported by API versions 21 and newer.
  */
@@ -8580,8 +10531,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return (1 / sqrt(value)).
+/**
+ * Returns approximate (1 / sqrt(value)).
  *
  * Supported by API versions 21 and newer.
  */
@@ -8589,8 +10540,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return (1 / sqrt(value)).
+/**
+ * Returns approximate (1 / sqrt(value)).
  *
  * Supported by API versions 21 and newer.
  */
@@ -8598,8 +10549,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the sine of a value specified in radians.
+/**
+ * Returns the approximate sine of an angle measured in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8607,8 +10558,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the sine of a value specified in radians.
+/**
+ * Returns the approximate sine of an angle measured in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8616,8 +10567,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the sine of a value specified in radians.
+/**
+ * Returns the approximate sine of an angle measured in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8625,8 +10576,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the sine of a value specified in radians.
+/**
+ * Returns the approximate sine of an angle measured in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8634,8 +10585,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the sine and cosine of a value.
+/**
+ * Returns the approximate sine and cosine of a value.
  *
  * @return sine
  * @param v The incoming value in radians
@@ -8647,8 +10598,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the sine and cosine of a value.
+/**
+ * Returns the approximate sine and cosine of a value.
  *
  * @return sine
  * @param v The incoming value in radians
@@ -8660,8 +10611,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the sine and cosine of a value.
+/**
+ * Returns the approximate sine and cosine of a value.
  *
  * @return sine
  * @param v The incoming value in radians
@@ -8673,8 +10624,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the sine and cosine of a value.
+/**
+ * Returns the approximate sine and cosine of a value.
  *
  * @return sine
  * @param v The incoming value in radians
@@ -8686,8 +10637,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the hyperbolic sine of a value specified in radians.
+/**
+ * Returns the approximate hyperbolic sine of a value specified in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8695,8 +10646,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the hyperbolic sine of a value specified in radians.
+/**
+ * Returns the approximate hyperbolic sine of a value specified in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8704,8 +10655,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the hyperbolic sine of a value specified in radians.
+/**
+ * Returns the approximate hyperbolic sine of a value specified in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8713,8 +10664,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the hyperbolic sine of a value specified in radians.
+/**
+ * Returns the approximate hyperbolic sine of a value specified in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8722,44 +10673,52 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the sin(v * PI).
+/**
+ * Returns the approximate sine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the sine of a value measured in degrees, call sinpi(a / 180.f).
  *
  * Supported by API versions 21 and newer.
  */
-extern float __attribute__((const, overloadable))native_sinpi(float);
+extern float __attribute__((const, overloadable))native_sinpi(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the sin(v * PI).
+/**
+ * Returns the approximate sine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the sine of a value measured in degrees, call sinpi(a / 180.f).
  *
  * Supported by API versions 21 and newer.
  */
-extern float2 __attribute__((const, overloadable))native_sinpi(float2);
+extern float2 __attribute__((const, overloadable))native_sinpi(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the sin(v * PI).
+/**
+ * Returns the approximate sine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the sine of a value measured in degrees, call sinpi(a / 180.f).
  *
  * Supported by API versions 21 and newer.
  */
-extern float3 __attribute__((const, overloadable))native_sinpi(float3);
+extern float3 __attribute__((const, overloadable))native_sinpi(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the sin(v * PI).
+/**
+ * Returns the approximate sine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the sine of a value measured in degrees, call sinpi(a / 180.f).
  *
  * Supported by API versions 21 and newer.
  */
-extern float4 __attribute__((const, overloadable))native_sinpi(float4);
+extern float4 __attribute__((const, overloadable))native_sinpi(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the aproximate sqrt(v).
+/**
+ * Returns the approximate sqrt(v).
  *
  * Supported by API versions 21 and newer.
  */
@@ -8767,8 +10726,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the aproximate sqrt(v).
+/**
+ * Returns the approximate sqrt(v).
  *
  * Supported by API versions 21 and newer.
  */
@@ -8776,8 +10735,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the aproximate sqrt(v).
+/**
+ * Returns the approximate sqrt(v).
  *
  * Supported by API versions 21 and newer.
  */
@@ -8785,8 +10744,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the aproximate sqrt(v).
+/**
+ * Returns the approximate sqrt(v).
  *
  * Supported by API versions 21 and newer.
  */
@@ -8794,8 +10753,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the tangent of a value.
+/**
+ * Returns the approximate tangent of an angle measured in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8803,8 +10762,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the tangent of a value.
+/**
+ * Returns the approximate tangent of an angle measured in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8812,8 +10771,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the tangent of a value.
+/**
+ * Returns the approximate tangent of an angle measured in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8821,8 +10780,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the tangent of a value.
+/**
+ * Returns the approximate tangent of an angle measured in radians.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8830,8 +10789,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the hyperbolic tangent of a value.
+/**
+ * Returns the approximate hyperbolic tangent of a value.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8839,8 +10798,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the hyperbolic tangent of a value.
+/**
+ * Returns the approximate hyperbolic tangent of a value.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8848,8 +10807,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the hyperbolic tangent of a value.
+/**
+ * Returns the approximate hyperbolic tangent of a value.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8857,8 +10816,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return the hyperbolic tangent of a value.
+/**
+ * Returns the approximate hyperbolic tangent of a value.
  *
  * Supported by API versions 21 and newer.
  */
@@ -8866,44 +10825,52 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return tan(v * PI)
+/**
+ * Returns the approximate tangent of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the tangent of a value measured in degrees, call tanpi(a / 180.f).
  *
  * Supported by API versions 21 and newer.
  */
-extern float __attribute__((const, overloadable))native_tanpi(float);
+extern float __attribute__((const, overloadable))native_tanpi(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return tan(v * PI)
+/**
+ * Returns the approximate tangent of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the tangent of a value measured in degrees, call tanpi(a / 180.f).
  *
  * Supported by API versions 21 and newer.
  */
-extern float2 __attribute__((const, overloadable))native_tanpi(float2);
+extern float2 __attribute__((const, overloadable))native_tanpi(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return tan(v * PI)
+/**
+ * Returns the approximate tangent of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the tangent of a value measured in degrees, call tanpi(a / 180.f).
  *
  * Supported by API versions 21 and newer.
  */
-extern float3 __attribute__((const, overloadable))native_tanpi(float3);
+extern float3 __attribute__((const, overloadable))native_tanpi(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * Return tan(v * PI)
+/**
+ * Returns the approximate tangent of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the tangent of a value measured in degrees, call tanpi(a / 180.f).
  *
  * Supported by API versions 21 and newer.
  */
-extern float4 __attribute__((const, overloadable))native_tanpi(float4);
+extern float4 __attribute__((const, overloadable))native_tanpi(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the next floating point number from x towards y.
+/**
+ * Returns the next floating point number from x towards y.
  *
  * Supported by API versions 9 and newer.
  */
@@ -8911,8 +10878,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the next floating point number from x towards y.
+/**
+ * Returns the next floating point number from x towards y.
  *
  * Supported by API versions 9 and newer.
  */
@@ -8920,8 +10887,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the next floating point number from x towards y.
+/**
+ * Returns the next floating point number from x towards y.
  *
  * Supported by API versions 9 and newer.
  */
@@ -8929,8 +10896,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the next floating point number from x towards y.
+/**
+ * Returns the next floating point number from x towards y.
  *
  * Supported by API versions 9 and newer.
  */
@@ -8938,44 +10905,54 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
+/**
  * Normalize a vector.
  *
+ * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
+ *
  * Supported by API versions 9 and newer.
  */
 extern float __attribute__((const, overloadable))normalize(float v);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
+/**
  * Normalize a vector.
  *
+ * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
+ *
  * Supported by API versions 9 and newer.
  */
 extern float2 __attribute__((const, overloadable))normalize(float2 v);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
+/**
  * Normalize a vector.
  *
+ * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
+ *
  * Supported by API versions 9 and newer.
  */
 extern float3 __attribute__((const, overloadable))normalize(float3 v);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
+/**
  * Normalize a vector.
  *
+ * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
+ *
  * Supported by API versions 9 and newer.
  */
 extern float4 __attribute__((const, overloadable))normalize(float4 v);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return x ^ y.
+/**
+ * Returns x raised to the power y, i.e. x ^ y.
+ *
+ * pown() and powr() are similar.  pown() takes an integer exponent. powr() assumes the base to be non-negative.
  *
  * Supported by API versions 9 and newer.
  */
@@ -8983,8 +10960,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return x ^ y.
+/**
+ * Returns x raised to the power y, i.e. x ^ y.
+ *
+ * pown() and powr() are similar.  pown() takes an integer exponent. powr() assumes the base to be non-negative.
  *
  * Supported by API versions 9 and newer.
  */
@@ -8992,8 +10971,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return x ^ y.
+/**
+ * Returns x raised to the power y, i.e. x ^ y.
+ *
+ * pown() and powr() are similar.  pown() takes an integer exponent. powr() assumes the base to be non-negative.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9001,8 +10982,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return x ^ y.
+/**
+ * Returns x raised to the power y, i.e. x ^ y.
+ *
+ * pown() and powr() are similar.  pown() takes an integer exponent. powr() assumes the base to be non-negative.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9010,8 +10993,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return x ^ y.
+/**
+ * Returns x raised to the power y, i.e. x ^ y.
+ *
+ * pow() and powr() are similar.  The both take a float exponent. powr() also assumes the base to be non-negative.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9019,8 +11004,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return x ^ y.
+/**
+ * Returns x raised to the power y, i.e. x ^ y.
+ *
+ * pow() and powr() are similar.  The both take a float exponent. powr() also assumes the base to be non-negative.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9028,8 +11015,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return x ^ y.
+/**
+ * Returns x raised to the power y, i.e. x ^ y.
+ *
+ * pow() and powr() are similar.  The both take a float exponent. powr() also assumes the base to be non-negative.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9037,8 +11026,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return x ^ y.
+/**
+ * Returns x raised to the power y, i.e. x ^ y.
+ *
+ * pow() and powr() are similar.  The both take a float exponent. powr() also assumes the base to be non-negative.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9046,9 +11037,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return x ^ y.
- * x must be >= 0
+/**
+ * Returns x raised to the power y, i.e. x ^ y.  x must be >= 0.
+ *
+ * pow() and pown() are similar.  They both make no assumptions about the base.  pow() takes a float exponent while pown() take an integer.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9056,9 +11048,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return x ^ y.
- * x must be >= 0
+/**
+ * Returns x raised to the power y, i.e. x ^ y.  x must be >= 0.
+ *
+ * pow() and pown() are similar.  They both make no assumptions about the base.  pow() takes a float exponent while pown() take an integer.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9066,9 +11059,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return x ^ y.
- * x must be >= 0
+/**
+ * Returns x raised to the power y, i.e. x ^ y.  x must be >= 0.
+ *
+ * pow() and pown() are similar.  They both make no assumptions about the base.  pow() takes a float exponent while pown() take an integer.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9076,9 +11070,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return x ^ y.
- * x must be >= 0
+/**
+ * Returns x raised to the power y, i.e. x ^ y.  x must be >= 0.
+ *
+ * pow() and pown() are similar.  They both make no assumptions about the base.  pow() takes a float exponent while pown() take an integer.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9086,8 +11081,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Convert from degrees to radians.
+/**
+ * Converts from degrees to radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9095,8 +11090,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Convert from degrees to radians.
+/**
+ * Converts from degrees to radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9104,8 +11099,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Convert from degrees to radians.
+/**
+ * Converts from degrees to radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9113,8 +11108,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Convert from degrees to radians.
+/**
+ * Converts from degrees to radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9122,8 +11117,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return round x/y to the nearest integer then compute the remainder.
+/**
+ * Returns the remainder of x / y, where the quotient is rounded towards the nearest integer.
+ *
+ * The function fmod() is similar but rounds toward the closest interger.
+ * For example, fmod(-3.8f, 2.f) returns -1.8f (-3.8f - -1.f * 2.f)
+ * while remainder(-3.8f, 2.f) returns 0.2f (-3.8f - -2.f * 2.f).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9131,8 +11130,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return round x/y to the nearest integer then compute the remainder.
+/**
+ * Returns the remainder of x / y, where the quotient is rounded towards the nearest integer.
+ *
+ * The function fmod() is similar but rounds toward the closest interger.
+ * For example, fmod(-3.8f, 2.f) returns -1.8f (-3.8f - -1.f * 2.f)
+ * while remainder(-3.8f, 2.f) returns 0.2f (-3.8f - -2.f * 2.f).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9140,8 +11143,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return round x/y to the nearest integer then compute the remainder.
+/**
+ * Returns the remainder of x / y, where the quotient is rounded towards the nearest integer.
+ *
+ * The function fmod() is similar but rounds toward the closest interger.
+ * For example, fmod(-3.8f, 2.f) returns -1.8f (-3.8f - -1.f * 2.f)
+ * while remainder(-3.8f, 2.f) returns 0.2f (-3.8f - -2.f * 2.f).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9149,8 +11156,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return round x/y to the nearest integer then compute the remainder.
+/**
+ * Returns the remainder of x / y, where the quotient is rounded towards the nearest integer.
+ *
+ * The function fmod() is similar but rounds toward the closest interger.
+ * For example, fmod(-3.8f, 2.f) returns -1.8f (-3.8f - -1.f * 2.f)
+ * while remainder(-3.8f, 2.f) returns 0.2f (-3.8f - -2.f * 2.f).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9158,8 +11169,19 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the quotient and the remainder of b/c.  Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
+/**
+ * Returns the quotient and the remainder of b / c.
+ *
+ * Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
+ *
+ * This function is useful for implementing periodic functions.  The low three bits of the quotient gives the quadrant and the remainder the distance within the quadrant.  For example, an implementation of sin(x) could call remquo(x, PI / 2.f, &quadrant) to reduce very large value of x to something within a limited range.
+ *
+ * Example: remquo(-23.5f, 8.f, &quot) sets the lowest three bits of quot to 3 and the sign negative.  It returns 0.5f.
+ *
+ * @param b The numerator.
+ * @param c The denominator.
+ * @param *d d[0] will be set to the integer quotient.
+ * @return The remainder, precise only for the low three bits.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9167,8 +11189,19 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the quotient and the remainder of b/c.  Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
+/**
+ * Returns the quotient and the remainder of b / c.
+ *
+ * Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
+ *
+ * This function is useful for implementing periodic functions.  The low three bits of the quotient gives the quadrant and the remainder the distance within the quadrant.  For example, an implementation of sin(x) could call remquo(x, PI / 2.f, &quadrant) to reduce very large value of x to something within a limited range.
+ *
+ * Example: remquo(-23.5f, 8.f, &quot) sets the lowest three bits of quot to 3 and the sign negative.  It returns 0.5f.
+ *
+ * @param b The numerator.
+ * @param c The denominator.
+ * @param *d d[0] will be set to the integer quotient.
+ * @return The remainder, precise only for the low three bits.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9176,8 +11209,19 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the quotient and the remainder of b/c.  Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
+/**
+ * Returns the quotient and the remainder of b / c.
+ *
+ * Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
+ *
+ * This function is useful for implementing periodic functions.  The low three bits of the quotient gives the quadrant and the remainder the distance within the quadrant.  For example, an implementation of sin(x) could call remquo(x, PI / 2.f, &quadrant) to reduce very large value of x to something within a limited range.
+ *
+ * Example: remquo(-23.5f, 8.f, &quot) sets the lowest three bits of quot to 3 and the sign negative.  It returns 0.5f.
+ *
+ * @param b The numerator.
+ * @param c The denominator.
+ * @param *d d[0] will be set to the integer quotient.
+ * @return The remainder, precise only for the low three bits.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9185,8 +11229,19 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the quotient and the remainder of b/c.  Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
+/**
+ * Returns the quotient and the remainder of b / c.
+ *
+ * Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
+ *
+ * This function is useful for implementing periodic functions.  The low three bits of the quotient gives the quadrant and the remainder the distance within the quadrant.  For example, an implementation of sin(x) could call remquo(x, PI / 2.f, &quadrant) to reduce very large value of x to something within a limited range.
+ *
+ * Example: remquo(-23.5f, 8.f, &quot) sets the lowest three bits of quot to 3 and the sign negative.  It returns 0.5f.
+ *
+ * @param b The numerator.
+ * @param c The denominator.
+ * @param *d d[0] will be set to the integer quotient.
+ * @return The remainder, precise only for the low three bits.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9194,8 +11249,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Round to the nearest integral value.
+/**
+ * Rounds to the nearest integral value.
+ *
+ * rint() rounds half values to even.  For example, rint(0.5f) returns 0.f and rint(1.5f) returns 2.f.  Similarly, rint(-0.5f) returns -0.f and rint(-1.5f) returns -2.f.
+ *
+ * round() is similar but rounds away from zero.  trunc() truncates the decimal fraction.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9203,8 +11262,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Round to the nearest integral value.
+/**
+ * Rounds to the nearest integral value.
+ *
+ * rint() rounds half values to even.  For example, rint(0.5f) returns 0.f and rint(1.5f) returns 2.f.  Similarly, rint(-0.5f) returns -0.f and rint(-1.5f) returns -2.f.
+ *
+ * round() is similar but rounds away from zero.  trunc() truncates the decimal fraction.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9212,8 +11275,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Round to the nearest integral value.
+/**
+ * Rounds to the nearest integral value.
+ *
+ * rint() rounds half values to even.  For example, rint(0.5f) returns 0.f and rint(1.5f) returns 2.f.  Similarly, rint(-0.5f) returns -0.f and rint(-1.5f) returns -2.f.
+ *
+ * round() is similar but rounds away from zero.  trunc() truncates the decimal fraction.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9221,8 +11288,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Round to the nearest integral value.
+/**
+ * Rounds to the nearest integral value.
+ *
+ * rint() rounds half values to even.  For example, rint(0.5f) returns 0.f and rint(1.5f) returns 2.f.  Similarly, rint(-0.5f) returns -0.f and rint(-1.5f) returns -2.f.
+ *
+ * round() is similar but rounds away from zero.  trunc() truncates the decimal fraction.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9230,7 +11301,7 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
+/**
  * Compute the Nth root of a value.
  *
  * Supported by API versions 9 and newer.
@@ -9239,7 +11310,7 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
+/**
  * Compute the Nth root of a value.
  *
  * Supported by API versions 9 and newer.
@@ -9248,7 +11319,7 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
+/**
  * Compute the Nth root of a value.
  *
  * Supported by API versions 9 and newer.
@@ -9257,7 +11328,7 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
+/**
  * Compute the Nth root of a value.
  *
  * Supported by API versions 9 and newer.
@@ -9266,8 +11337,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Round to the nearest integral value.  Half values are rounded away from zero.
+/**
+ * Round to the nearest integral value.
+ *
+ * round() rounds half values away from zero.  For example, round(0.5f) returns 1.f and round(1.5f) returns 2.f.  Similarly, round(-0.5f) returns -1.f and round(-1.5f) returns -2.f.
+ *
+ * rint() is similar but rounds half values toward even.  trunc() truncates the decimal fraction.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9275,8 +11350,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Round to the nearest integral value.  Half values are rounded away from zero.
+/**
+ * Round to the nearest integral value.
+ *
+ * round() rounds half values away from zero.  For example, round(0.5f) returns 1.f and round(1.5f) returns 2.f.  Similarly, round(-0.5f) returns -1.f and round(-1.5f) returns -2.f.
+ *
+ * rint() is similar but rounds half values toward even.  trunc() truncates the decimal fraction.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9284,8 +11363,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Round to the nearest integral value.  Half values are rounded away from zero.
+/**
+ * Round to the nearest integral value.
+ *
+ * round() rounds half values away from zero.  For example, round(0.5f) returns 1.f and round(1.5f) returns 2.f.  Similarly, round(-0.5f) returns -1.f and round(-1.5f) returns -2.f.
+ *
+ * rint() is similar but rounds half values toward even.  trunc() truncates the decimal fraction.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9293,8 +11376,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Round to the nearest integral value.  Half values are rounded away from zero.
+/**
+ * Round to the nearest integral value.
+ *
+ * round() rounds half values away from zero.  For example, round(0.5f) returns 1.f and round(1.5f) returns 2.f.  Similarly, round(-0.5f) returns -1.f and round(-1.5f) returns -2.f.
+ *
+ * rint() is similar but rounds half values toward even.  trunc() truncates the decimal fraction.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9302,8 +11389,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (1 / sqrt(value)).
+/**
+ * Returns (1 / sqrt(value)).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9311,8 +11398,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (1 / sqrt(value)).
+/**
+ * Returns (1 / sqrt(value)).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9320,8 +11407,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (1 / sqrt(value)).
+/**
+ * Returns (1 / sqrt(value)).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9329,8 +11416,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return (1 / sqrt(value)).
+/**
+ * Returns (1 / sqrt(value)).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9338,8 +11425,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sign of a value.
+/**
+ * Returns the sign of a value.
  *
  * if (v < 0) return -1.f;
  * else if (v > 0) return 1.f;
@@ -9351,8 +11438,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sign of a value.
+/**
+ * Returns the sign of a value.
  *
  * if (v < 0) return -1.f;
  * else if (v > 0) return 1.f;
@@ -9364,8 +11451,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sign of a value.
+/**
+ * Returns the sign of a value.
  *
  * if (v < 0) return -1.f;
  * else if (v > 0) return 1.f;
@@ -9377,8 +11464,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sign of a value.
+/**
+ * Returns the sign of a value.
  *
  * if (v < 0) return -1.f;
  * else if (v > 0) return 1.f;
@@ -9390,8 +11477,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sine of a value specified in radians.
+/**
+ * Returns the sine of an angle measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9399,8 +11486,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sine of a value specified in radians.
+/**
+ * Returns the sine of an angle measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9408,8 +11495,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sine of a value specified in radians.
+/**
+ * Returns the sine of an angle measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9417,8 +11504,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sine of a value specified in radians.
+/**
+ * Returns the sine of an angle measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9426,10 +11513,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sine and cosine of a value.
+/**
+ * Returns the sine and cosine of a value.
  *
- * @return sine
+ * @return sine of v
  * @param v The incoming value in radians
  * @param *cosptr cosptr[0] will be set to the cosine value.
  *
@@ -9439,10 +11526,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sine and cosine of a value.
+/**
+ * Returns the sine and cosine of a value.
  *
- * @return sine
+ * @return sine of v
  * @param v The incoming value in radians
  * @param *cosptr cosptr[0] will be set to the cosine value.
  *
@@ -9452,10 +11539,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sine and cosine of a value.
+/**
+ * Returns the sine and cosine of a value.
  *
- * @return sine
+ * @return sine of v
  * @param v The incoming value in radians
  * @param *cosptr cosptr[0] will be set to the cosine value.
  *
@@ -9465,10 +11552,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sine and cosine of a value.
+/**
+ * Returns the sine and cosine of a value.
  *
- * @return sine
+ * @return sine of v
  * @param v The incoming value in radians
  * @param *cosptr cosptr[0] will be set to the cosine value.
  *
@@ -9478,8 +11565,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the hyperbolic sine of a value specified in radians.
+/**
+ * Returns the hyperbolic sine of x, where x is measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9487,8 +11574,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the hyperbolic sine of a value specified in radians.
+/**
+ * Returns the hyperbolic sine of x, where x is measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9496,8 +11583,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the hyperbolic sine of a value specified in radians.
+/**
+ * Returns the hyperbolic sine of x, where x is measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9505,8 +11592,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the hyperbolic sine of a value specified in radians.
+/**
+ * Returns the hyperbolic sine of x, where x is measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9514,44 +11601,52 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sin(v * PI).
+/**
+ * Returns the sine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the sine of a value measured in degrees, call sinpi(a / 180.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((const, overloadable))sinpi(float);
+extern float __attribute__((const, overloadable))sinpi(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sin(v * PI).
+/**
+ * Returns the sine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the sine of a value measured in degrees, call sinpi(a / 180.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))sinpi(float2);
+extern float2 __attribute__((const, overloadable))sinpi(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sin(v * PI).
+/**
+ * Returns the sine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the sine of a value measured in degrees, call sinpi(a / 180.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))sinpi(float3);
+extern float3 __attribute__((const, overloadable))sinpi(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the sin(v * PI).
+/**
+ * Returns the sine of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the sine of a value measured in degrees, call sinpi(a / 180.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))sinpi(float4);
+extern float4 __attribute__((const, overloadable))sinpi(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the square root of a value.
+/**
+ * Returns the square root of a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9559,8 +11654,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the square root of a value.
+/**
+ * Returns the square root of a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9568,8 +11663,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the square root of a value.
+/**
+ * Returns the square root of a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9577,8 +11672,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the square root of a value.
+/**
+ * Returns the square root of a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9586,11 +11681,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * if (v < edge)
- * return 0.f;
- * else
- * return 1.f;
+/**
+ * Returns 0.f if v < edge, 1.f otherwise.
+ *
+ * This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a[i] < b[i]) ? 0.f : atan2(a[i], b[i]) for the corresponding elements of a vector, you could instead use step(a, b) * atan2(a, b).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9598,11 +11692,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * if (v < edge)
- * return 0.f;
- * else
- * return 1.f;
+/**
+ * Returns 0.f if v < edge, 1.f otherwise.
+ *
+ * This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a[i] < b[i]) ? 0.f : atan2(a[i], b[i]) for the corresponding elements of a vector, you could instead use step(a, b) * atan2(a, b).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9610,11 +11703,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * if (v < edge)
- * return 0.f;
- * else
- * return 1.f;
+/**
+ * Returns 0.f if v < edge, 1.f otherwise.
+ *
+ * This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a[i] < b[i]) ? 0.f : atan2(a[i], b[i]) for the corresponding elements of a vector, you could instead use step(a, b) * atan2(a, b).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9622,11 +11714,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * if (v < edge)
- * return 0.f;
- * else
- * return 1.f;
+/**
+ * Returns 0.f if v < edge, 1.f otherwise.
+ *
+ * This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a[i] < b[i]) ? 0.f : atan2(a[i], b[i]) for the corresponding elements of a vector, you could instead use step(a, b) * atan2(a, b).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9634,11 +11725,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * if (v < edge)
- * return 0.f;
- * else
- * return 1.f;
+/**
+ * Returns 0.f if v < edge, 1.f otherwise.
+ *
+ * This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a[i] < b) ? 0.f : atan2(a[i], b) for each element of a vector, you could instead use step(a, b) * atan2(a, b).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9646,11 +11736,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * if (v < edge)
- * return 0.f;
- * else
- * return 1.f;
+/**
+ * Returns 0.f if v < edge, 1.f otherwise.
+ *
+ * This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a[i] < b) ? 0.f : atan2(a[i], b) for each element of a vector, you could instead use step(a, b) * atan2(a, b).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9658,11 +11747,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * if (v < edge)
- * return 0.f;
- * else
- * return 1.f;
+/**
+ * Returns 0.f if v < edge, 1.f otherwise.
+ *
+ * This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a[i] < b) ? 0.f : atan2(a[i], b) for each element of a vector, you could instead use step(a, b) * atan2(a, b).
  *
  * Supported by API versions 9 and newer.
  */
@@ -9670,11 +11758,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * if (v < edge)
- * return 0.f;
- * else
- * return 1.f;
+/**
+ * Returns 0.f if v < edge, 1.f otherwise.
+ *
+ * This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a < b[i]) ? 0.f : atan2(a, b[i]) for each element of a vector, you could instead use step(a, b) * atan2(a, b).
  *
  * Supported by API versions 21 and newer.
  */
@@ -9682,11 +11769,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * if (v < edge)
- * return 0.f;
- * else
- * return 1.f;
+/**
+ * Returns 0.f if v < edge, 1.f otherwise.
+ *
+ * This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a < b[i]) ? 0.f : atan2(a, b[i]) for each element of a vector, you could instead use step(a, b) * atan2(a, b).
  *
  * Supported by API versions 21 and newer.
  */
@@ -9694,11 +11780,10 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 21))
-/*
- * if (v < edge)
- * return 0.f;
- * else
- * return 1.f;
+/**
+ * Returns 0.f if v < edge, 1.f otherwise.
+ *
+ * This can be useful to create conditional computations without using loops and branching instructions.  For example, instead of computing (a < b[i]) ? 0.f : atan2(a, b[i]) for each element of a vector, you could instead use step(a, b) * atan2(a, b).
  *
  * Supported by API versions 21 and newer.
  */
@@ -9706,44 +11791,44 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the tangent of a value.
+/**
+ * Returns the tangent of an angle measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((const, overloadable))tan(float);
+extern float __attribute__((const, overloadable))tan(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the tangent of a value.
+/**
+ * Returns the tangent of an angle measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))tan(float2);
+extern float2 __attribute__((const, overloadable))tan(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the tangent of a value.
+/**
+ * Returns the tangent of an angle measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))tan(float3);
+extern float3 __attribute__((const, overloadable))tan(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the tangent of a value.
+/**
+ * Returns the tangent of an angle measured in radians.
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))tan(float4);
+extern float4 __attribute__((const, overloadable))tan(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the hyperbolic tangent of a value.
+/**
+ * Returns the hyperbolic tangent of a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9751,8 +11836,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the hyperbolic tangent of a value.
+/**
+ * Returns the hyperbolic tangent of a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9760,8 +11845,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the hyperbolic tangent of a value.
+/**
+ * Returns the hyperbolic tangent of a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9769,8 +11854,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return the hyperbolic tangent of a value.
+/**
+ * Returns the hyperbolic tangent of a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9778,44 +11863,52 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return tan(v * PI)
+/**
+ * Returns the tangent of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the tangent of a value measured in degrees, call tanpi(a / 180.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float __attribute__((const, overloadable))tanpi(float);
+extern float __attribute__((const, overloadable))tanpi(float x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return tan(v * PI)
+/**
+ * Returns the tangent of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the tangent of a value measured in degrees, call tanpi(a / 180.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float2 __attribute__((const, overloadable))tanpi(float2);
+extern float2 __attribute__((const, overloadable))tanpi(float2 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return tan(v * PI)
+/**
+ * Returns the tangent of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the tangent of a value measured in degrees, call tanpi(a / 180.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float3 __attribute__((const, overloadable))tanpi(float3);
+extern float3 __attribute__((const, overloadable))tanpi(float3 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Return tan(v * PI)
+/**
+ * Returns the tangent of (x * pi), where (x * pi) is measured in radians.
+ *
+ * To get the tangent of a value measured in degrees, call tanpi(a / 180.f).
  *
  * Supported by API versions 9 and newer.
  */
-extern float4 __attribute__((const, overloadable))tanpi(float4);
+extern float4 __attribute__((const, overloadable))tanpi(float4 x);
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the gamma function of a value.
+/**
+ * Returns the gamma function of a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9823,8 +11916,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the gamma function of a value.
+/**
+ * Returns the gamma function of a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9832,8 +11925,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the gamma function of a value.
+/**
+ * Returns the gamma function of a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9841,8 +11934,8 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * Compute the gamma function of a value.
+/**
+ * Returns the gamma function of a value.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9850,8 +11943,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * ound to integral using truncation.
+/**
+ * Rounds to integral using truncation.
+ *
+ * For example, trunc(1.7f) returns 1.f and trunc(-1.7f) returns -1.f.
+ *
+ * See rint() and round() for other rounding options.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9859,8 +11956,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * ound to integral using truncation.
+/**
+ * Rounds to integral using truncation.
+ *
+ * For example, trunc(1.7f) returns 1.f and trunc(-1.7f) returns -1.f.
+ *
+ * See rint() and round() for other rounding options.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9868,8 +11969,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * ound to integral using truncation.
+/**
+ * Rounds to integral using truncation.
+ *
+ * For example, trunc(1.7f) returns 1.f and trunc(-1.7f) returns -1.f.
+ *
+ * See rint() and round() for other rounding options.
  *
  * Supported by API versions 9 and newer.
  */
@@ -9877,8 +11982,12 @@
 #endif
 
 #if (defined(RS_VERSION) && (RS_VERSION >= 9))
-/*
- * ound to integral using truncation.
+/**
+ * Rounds to integral using truncation.
+ *
+ * For example, trunc(1.7f) returns 1.f and trunc(-1.7f) returns -1.f.
+ *
+ * See rint() and round() for other rounding options.
  *
  * Supported by API versions 9 and newer.
  */
diff --git a/scriptc/rs_element.rsh b/scriptc/rs_element.rsh
index 0230f10..9a53735 100644
--- a/scriptc/rs_element.rsh
+++ b/scriptc/rs_element.rsh
@@ -47,7 +47,7 @@
  * @return sub-element in this element at given index
  */
 extern rs_element __attribute__((overloadable))
-    rsElementGetSubElement(rs_element, uint32_t index);
+    rsElementGetSubElement(rs_element e, uint32_t index);
 
 /**
  * For complex elements, this function will return the length of
@@ -140,4 +140,3 @@
 #endif // (defined(RS_VERSION) && (RS_VERSION >= 16))
 
 #endif // __RS_ELEMENT_RSH__
-
diff --git a/scriptc/rs_matrix.rsh b/scriptc/rs_matrix.rsh
index 34b9532..6faeca1 100644
--- a/scriptc/rs_matrix.rsh
+++ b/scriptc/rs_matrix.rsh
@@ -34,7 +34,7 @@
  * once, multiply the two source matrices, with the first transformation as the
  * right argument.  E.g. to create a transformation matrix that applies the
  * transformation \e s1 followed by \e s2, call
- * </c>rsMatrixLoadMultiply(&combined, &s2, &s1)</c>.
+ * <c>rsMatrixLoadMultiply(&combined, &s2, &s1)</c>.
  * This derives from <em>s2 * (s1 * v)</em>, which is <em>(s2 * s1) * v</em>.
  *
  * \li We have two style of functions to create transformation matrices:
@@ -60,8 +60,6 @@
  *
  * \warning The order of the column and row parameters may be
  * unexpected.
- *
- * @return void
  */
 _RS_RUNTIME void __attribute__((overloadable))
 rsMatrixSet(rs_matrix4x4 *m, uint32_t col, uint32_t row, float v);
@@ -233,7 +231,7 @@
  * To combine two 4x4 transformaton matrices, multiply the second transformation matrix
  * by the first transformation matrix.  E.g. to create a transformation matrix that applies
  * the transformation \e s1 followed by \e s2, call
- * </c>rsMatrixLoadMultiply(&combined, &s2, &s1)</c>.
+ * <c>rsMatrixLoadMultiply(&combined, &s2, &s1)</c>.
  *
  * \warning Prior to version 21, storing the result back into right matrix is not supported and
  * will result in undefined behavior.  Use rsMatrixMulitply instead.   E.g. instead of doing
diff --git a/scriptc/rs_quaternion.rsh b/scriptc/rs_quaternion.rsh
index 4e08d2f..d2ec24c 100644
--- a/scriptc/rs_quaternion.rsh
+++ b/scriptc/rs_quaternion.rsh
@@ -26,6 +26,7 @@
 
 /**
  * Set the quaternion components
+ * @param q destination quaternion
  * @param w component
  * @param x component
  * @param y component
@@ -68,7 +69,7 @@
 /**
  * Add two quaternions
  * @param q destination quaternion to add to
- * @param rsh right hand side quaternion to add
+ * @param rhs right hand side quaternion to add
  */
 static void
 rsQuaternionAdd(rs_quaternion *q, const rs_quaternion *rhs) {
@@ -84,7 +85,7 @@
  * @param rot angle to rotate by
  * @param x component of a vector
  * @param y component of a vector
- * @param x component of a vector
+ * @param z component of a vector
  */
 static void
 rsQuaternionLoadRotateUnit(rs_quaternion *q, float rot, float x, float y, float z) {
@@ -105,7 +106,7 @@
  * @param rot angle to rotate by
  * @param x component of a vector
  * @param y component of a vector
- * @param x component of a vector
+ * @param z component of a vector
  */
 static void
 rsQuaternionLoadRotate(rs_quaternion *q, float rot, float x, float y, float z) {
@@ -223,7 +224,7 @@
 /**
  * Computes rotation matrix from the normalized quaternion
  * @param m resulting matrix
- * @param p normalized quaternion
+ * @param q normalized quaternion
  */
 static void rsQuaternionGetMatrixUnit(rs_matrix4x4 *m, const rs_quaternion *q) {
     float xx = q->x * q->x;
@@ -250,4 +251,3 @@
 }
 
 #endif
-
diff --git a/scriptc/rs_types.rsh b/scriptc/rs_types.rsh
index f1fc60b..998d6ab 100644
--- a/scriptc/rs_types.rsh
+++ b/scriptc/rs_types.rsh
@@ -557,6 +557,11 @@
 } rs_data_kind;
 
 #ifndef __LP64__
+/**
+ * Specifies conditional drawing depending on the comparison of the incoming
+ * depth to that found in the depth buffer.
+ *
+ **/
 typedef enum {
     /**
     * Always drawn
