<?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>ldexp</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>                                    
        <refentrytitle>ldexp</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="ldexp">             
        <refname>ldexp</refname>

        <refpurpose>
            Multiply <varname>x</varname> by 2 to the power <varname>n</varname>.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    gentype
                    <function>                   
                        ldexp
                    </function>
                </funcdef>     
                <paramdef>gentype<parameter>x</parameter></paramdef>    
                <paramdef><link xlink:href="vectorDataTypes.html">int<varname>n</varname></link><parameter>n</parameter></paramdef> 
            </funcprototype>
        </funcsynopsis>     

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    gentype
                    <function>                   
                        ldexp
                    </function>
                </funcdef>     
                <paramdef>gentype<parameter>x</parameter></paramdef>    
                <paramdef><link xlink:href="scalarDataTypes.html">int</link><parameter>n</parameter></paramdef> 
            </funcprototype>
        </funcsynopsis>     
    </refsynopsisdiv>
<!-- ================================ DESCRIPTION  -->

    <refsect1 id="description"><title>Description</title>
        <para>Multiply <varname>x</varname> by 2 to the power <varname>n</varname>.
</para>
    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>
        <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. 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>, or <type>float16</type> as the type for the arguments. For 
            any specific use of these function, the actual type has to be the same for all 
            arguments and the return type.
        </para>
        <para>
            If extended with <citerefentry><refentrytitle>cl_khr_fp64</refentrytitle></citerefentry>,
            generic type name <type>gentype</type> may indicate <type>double</type> and
            <type>double{2|3|4|8|16}</type> as arguments and return values. 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, and the form <code>gentype ldexp (gentype <varname>x</varname>, intn <varname>n</varname>)</code> is not avaialble.. 
        </para>
    </refsect1>

<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </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="mathFunctions">OpenCL Specification</olink>
        </para>
    </refsect1>


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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry href="mathFunctions"><refentrytitle>Math Functions</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>

