  
    <!-- section 6.13.2 Math Functions -->
    <para>
        General information about built-in math functions:
        The built-in math functions are categorized into the following:
    </para>

    <para>
      <itemizedlist>
        <listitem>A list of built-in functions that have scalar or vector argument versions, and,</listitem>
        <listitem>A list of built-in functions that only take scalar float arguments.</listitem>
      </itemizedlist>
    </para>

    <para>
        The vector versions of the math functions operate
        component-wise.  The description is per-component.
    </para>

  <para>
    The built-in math functions are not affected by the prevailing rounding mode in the calling
    environment, and always return the same value as they would if called with the round to
    nearest even rounding mode.
  </para>

  <para>
    The built-in math functions take scalar or vector arguments. For any specific use of these
    function, the actual type has to be the same for all arguments and the return type unless
    otherwise specified.
  </para>

  <para>
    The generic type name <type>gentype</type> is used to indicate that the function can
    take <type>float</type>, <type>float2</type>, <type>float3</type>, <type>float4</type>,
    <type>float8</type>, <type>float16</type>, <type>double</type>, <type>double2</type>,
    <type>double3</type>, <type>double4</type>, <type>double8</type>, or <type>double16</type>
    as the type for the arguments.
  </para>

  <para>
    If extended with <citerefentry><refentrytitle>cl_khr_fp16</refentrytitle></citerefentry>,
    generic type name <type>gentype</type> may indicate <type>half</type> and
    <type>half{2|3|4|8|16}</type> as arguments and return values.
  </para>

  <para>
    The generic type name <type>gentypef</type> is used to indicate that the function can
    take <type>float</type>, <type>float2</type>, <type>float3</type>, <type>float4</type>,
    <type>float8</type>, or <type>float16</type> as the type for the arguments.
  </para>

  <para>
    The generic type name <type>gentyped</type> is used to indicate that the function can take
    <type>double</type>, <type>double2</type>, <type>double3</type>, <type>double4</type>,
    <type>double8</type>, or <type>double16</type> as the type for the arguments.
  </para>

 <!-- 28-Oct-2015, C lang ver 2.0 rev 30 -->

