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

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

        <refpurpose>
            Compare of <varname>x</varname> &gt;= <varname>y</varname>.
        </refpurpose>
    </refnamediv>

	<refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">int</link>


                    <function>                   
                        isgreaterequal
                    </function>
                </funcdef>
				<paramdef>float<parameter>x</parameter></paramdef>
				<paramdef>float<parameter>y</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>     

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">int</link>

<replaceable>n</replaceable>
                    <function>                   
                        isgreaterequal
                    </function>
                </funcdef>
				<paramdef>float<replaceable>n</replaceable><parameter>x</parameter></paramdef>
				<paramdef>float<replaceable>n</replaceable><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>
int <function>isgreaterequal</function> (<type>double</type> <varname>x</varname>, 
                    <type>double</type> <varname>y</varname>)      // if double extension enabled 

<type>long<replaceable>n</replaceable></type> <function>isgreaterequal</function> (<type>double<replaceable>n</replaceable></type> <varname>x</varname>, 
                      <type>double<replaceable>n</replaceable></type> <varname>y</varname>)      // if double extension enabled 
</entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>

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

<type>short<replaceable>n</replaceable></type> <function>isgreaterequal</function> (<type>half<replaceable>n</replaceable></type> <varname>x</varname>, 
                       <type>half<replaceable>n</replaceable></type> <varname>y</varname>)      // if half extension enabled 
</entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2> 			

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

    <refsect1 id="description"><title>Description</title>
        <para>
		Returns the component-wise compare of <varname>x</varname> &gt;= <varname>y</varname>.
		</para>
		<para>
		
		</para>
		
    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>
		<para>
		This function returns a 0 if the specified relation is <emphasis>false</emphasis> and a 1 if the specified relation is <emphasis>true</emphasis> for scalar argument types. It returns a 0 if the specified relation is <emphasis>false</emphasis> and a -1 (i.e. all
bits set) if the specified relation is <emphasis>true</emphasis> for vector argument types. This function always return 0 if either argument is not a number (NaN). 
		</para>
		<para>
The relational and equality operators (&lt;, &lt;=, &gt;, &gt;=, !=, ==) can be used with scalar and vector
built-in types and produce a scalar or vector signed integer result respectively.
		</para>
		<para>
		This function can be used with built-in scalar or vector types as arguments and return a scalar vector integer result. The argument type igentype refers to signed integer vector types i.e. <type>char</type>, <type>char<replaceable>n</replaceable></type>, <type>short</type>, <type>short<replaceable>n</replaceable></type>, <type>int</type>, <type>int<replaceable>n</replaceable></type>, <type>long</type>, and <type>long<replaceable>n</replaceable></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="relationalFunctions">OpenCL Specification</olink>
        </para>
    </refsect1>


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

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

