<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>                            
                Explicit conversions with convert_T()
            </keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>                                    
        <refentrytitle>Explicit conversions with convert_T()</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2010</year>
                <holder>The Khronos Group Inc. 
 Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>3</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

    <refnamediv id="convert_T">             
        <refname>Explicit conversions with convert_T()</refname>

        <refpurpose>
            Explicit type conversions using convert_<varname>T</varname>()
        </refpurpose>
    </refnamediv>


    <!-- ALTERNATIVE SYNTAX SYNOPSIS (NON-FUNCTION) -->
    <refsect2 id="synopsis">
        <title>
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
convert_<replaceable>destType</replaceable>(<replaceable>srctype val</replaceable>)
<replaceable>destType</replaceable> convert_<replaceable>destType</replaceable>[_sat][<replaceable>roundingMode</replaceable>] (<replaceable>srcType val</replaceable>)
<replaceable>destTypen</replaceable> convert_<replaceable>destTypen</replaceable>[_sat][<replaceable>roundingMode</replaceable>] (<replaceable>srcTypen val</replaceable>)
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
    

<!-- ================================ DESCRIPTION  -->

    <refsect1 id="description"><title>Description</title>
        <para>
Explicit conversions may be performed using the <code>convert_&lt;dest type name&gt;(srctype)</code> suite of functions. These provide a full set of type conversions between supported types (see
<citerefentry href="scalarDataTypes"><refentrytitle>Scalar Data Types</refentrytitle></citerefentry>)<!--section 6.1.1-->
except for the following types:
<type>bool</type>, <type>half</type>, <type>size_t</type>, <type>ptrdiff_t</type>, <type>intptr_t</type>, <type>uintptr_t</type>, and  <type>void</type>. The number of elements in the source and destination vectors must match.
        </para>

        <para>
Explicit conversions from a type to the same type has no effect on the type or value of an
expression.
        </para>

        <para>
The behavior of the conversion may be modified by one or two optional modifiers that specify
saturation for out-of-range inputs and rounding behavior.
        </para>

        <para>
The full form of the scalar convert function is:
<literallayout>          <code><replaceable>destType</replaceable> convert_<replaceable>destType</replaceable>[_sat][<replaceable>roundingMode</replaceable>](<replaceable>srcType val</replaceable>)</code></literallayout>
        </para>
        

        <para>
The full form of the vector convert function is:
<literallayout>          <code><replaceable>destTypen</replaceable> convert_<replaceable>destTypen</replaceable>[_sat][<replaceable>roundingMode</replaceable>](<replaceable>srcTypen val</replaceable>)</code></literallayout>

        </para>

<bridgehead>Data Types</bridgehead>

        <para>
The operand and result type may be the same type and must have the same number of elements. Conversions are available for the following scalar types and built-in vector types derived therefrom: <type>char</type>, <type>uchar</type>, <type>short</type>, <type>ushort</type>, <type>int</type>, <type>uint</type>, <type>long</type>, <type>ulong</type>, and <type>float</type>.
        </para>


<bridgehead>Rounding Modes</bridgehead>
        <para>
Conversions to and from floating-point type shall conform to IEEE-754 rounding rules.
Conversions involving a floating-point or integer source operand or destination type may have an
optional rounding mode modifier. These are described in the table below:
        </para>
        <para>
        <informaltable frame="all">
            <tgroup cols="2" align="left" colsep="1" rowsep="1">
                <colspec colname="col1" colnum="1" />
                <colspec colname="col2" colnum="2" />

                <thead>
                    <row>
                        <entry>Modifier</entry>
                        <entry>Rounding Mode Description</entry>
                    </row>
                </thead>

                <tbody>

                    <row>
                        <entry>
                            <para>
<code>_rte</code>
                            </para>
                        </entry>

                        <entry>
                            <para>
Round to nearest even
                            </para>
                        </entry>
                    </row>

                    <row>
                        <entry>
                            <para>
<code>_rtz</code>
                            </para>
                        </entry>

                        <entry>
                            <para>
Round towards zero
                            </para>
                        </entry>
                    </row>

                    <row>
                        <entry>
                            <para>
<code>_rtp</code>
                            </para>
                        </entry>

                        <entry>
                            <para>
Round toward positive infinity
                            </para>
                        </entry>
                    </row>

                    <row>
                        <entry>
                            <para>
<code>_rtn</code>
                            </para>
                        </entry>

                        <entry>
                            <para>
Round toward negative infinity
                            </para>
                        </entry>
                    </row>

                    <row>
                        <entry>
                            <para>
no modifier specified
                            </para>
                        </entry>

                        <entry>
                            <para>
Use the default rounding mode for this destination type, <code>_rtz</code> for conversion to integers or the current rounding mode for conversion to floating-point types.
                            </para>
                        </entry>
                    </row>

                </tbody>
            </tgroup>
        </informaltable>
        </para>
        <para>
By default, conversions to integer type use the <code>_rtz</code> (round toward zero) rounding mode and conversions to floating-point type use the current rounding mode. The only default floating-point rounding mode supported is round to nearest even, i.e the current rounding mode will be <code>_rte</code> for floating-point types.
        </para>

        <para>
<bridgehead>Out-of-Range Behavior and Saturated Conversions</bridgehead>
        </para>

        <para>
When the conversion operand is either greater than the greatest representable destination value or
less than the least representable destination value, it is said to be out-of-range. When converting
between integer types, the resulting value for out-of-range inputs will be equal to the set of least
significant bits in the source operand element that fit in the corresponding destination element.
When converting from a floating-point type to integer type, the behavior is implementation-
defined.
        </para>

        <para>
Conversions to integer type may opt to convert using the optional saturated mode by appending
the <code>_sat</code> modifier to the conversion function name. When in saturated mode, values that are
outside the representable range shall clamp to the nearest representable value in the destination
format. (NaN should be converted to 0).
        </para>

        <para>
Conversions to floating-point type shall conform to IEEE-754 rounding rules. The _sat
modifier may not be used for conversions to floating-point formats.
        </para>


    </refsect1>


<!-- ================================ NOTES  -->


    <refsect1 id="notes"><title>Notes</title>
        <para>
For conversions to floating-point format, when a finite source
value exceeds the maximum representable finite
floating-point destination value, the rounding mode will affect
whether the result is the maximum finite floating-point value
or infinity of same sign as the source value, per IEEE-754 rules for rounding.
        </para>
    </refsect1>


<!-- ================================ EXAMPLE  -->

    <refsect2 id="example1">
        <title>
Examples
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
short4  s;

// negative values clamped to 0
ushort4     u = convert_ushort4_sat( s );

// values &gt; CHAR_MAX converted to CHAR_MAX
// values &lt; CHAR_MIN converted to CHAR_MIN
char4  c = convert_char4_sat( s );
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>

    <refsect2 id="example2">
        <title>

        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
float4 f;

// values implementation defined for
// f &gt; INT_MAX, f &lt; INT_MIN or NaN
int4   i = convert_int4( f );

// values &gt; INT_MAX clamp to INT_MAX, values &lt; INT_MIN clamp
// to INT_MIN. NaN should produce 0.
// The _rtz rounding mode is
// used to produce the integer values.
int4   i2 = convert_int4_sat( f );

// similar to convert_int4, except that
// floating-point values are rounded to the nearest
// integer instead of truncated
int4   i3 = convert_int4_rte( f );

// similar to convert_int4_sat, except that
// floating-point values are rounded to the
// nearest integer instead of truncated
int4   i4 = convert_int4_sat_rte( f );
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>

    <refsect2 id="example3">
        <title>

        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
int4   i;

// convert ints to floats using the current rounding mode.
float4 f = convert_float4( i );

// convert ints to floats. integer values that cannot
// be exactly represented as floats should round up to the
// next representable float.
float4 f = convert_float4_rtp( i );
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>

    </refsect2>



<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>
                                                 
            <olink uri="convert_T">OpenCL Specification</olink>
        </para>
    </refsect1>


<!-- ================================ ALSO SEE  -->

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry href="scalarDataTypes"><refentrytitle>Scalar Data Types</refentrytitle></citerefentry>, 
            <citerefentry href="vectorDataTypes"><refentrytitle>Vector Data Types</refentrytitle></citerefentry>
        </para>
    </refsect1>



<!-- ============================== COPYRIGHT -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
        <imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
        <para />
    </refsect3>

</refentry>

