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

    <refmeta>                                    
        <refentrytitle>fmin</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2009</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>2</manvolnum>
    </refmeta>

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

    <refnamediv id="fmin">             
        <refname>fmin</refname>

        <refpurpose>
            Returns the lessor of either <varname>x</varname> or <varname>y</varname>.
        </refpurpose>
    </refnamediv>

	<refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    gentype
                    <function>                   
                        fmin
                    </function>
                </funcdef>
				<paramdef>gentype<parameter>x</parameter></paramdef>	
				<paramdef>gentype<parameter>y</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>     

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    gentype
                    <function>                   
                        fmin
                    </function>
                </funcdef>
				<paramdef>gentype<parameter>x</parameter></paramdef>	
				<paramdef>float<parameter>y</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>     
	</refsynopsisdiv>	
	
<!-- Optional Double and Half prototypes -->
 <refsect2 id="double">
        <title></title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
gentype <function>fmin</function> (<type>gentype</type> <varname>x</varname>, 
              <type>double</type> <varname>y</varname>)      // if double extension enabled 
</entry>
                    </row>
					<row>
                        <entry>
gentype <function>fmin</function> (<type>gentype</type> <varname>x</varname>, 
              <type>half</type> <varname>y</varname>)      // if half extension enabled 
</entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>   		

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

    <refsect1 id="description"><title>Description</title>
        <para>Returns <varname>y</varname> if <varname>y</varname> less than <varname>x</varname>, otherwise it returns <varname>x</varname>. If one
argument is a NaN, <function>fmax()</function> returns the other
argument. If both arguments are NaNs, <function>fmax()</function>
returns a NaN.</para>
    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>
      <para>
	  	<function>fmin</function> and <citerefentry><refentrytitle>fmax</refentrytitle></citerefentry>  behave as defined by C99 and may not match the IEEE 754-2008 definition for <function>minNum</function> and <function>maxNum</function> with regard to signaling NaNs. Specifically, signaling NaNs may behave as quiet NaNs.  
		</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>
			This built-in math function takes 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>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|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|4|8|16}</type> as arguments and return values. 
		</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>

