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

    <refmeta>                                    
        <refentrytitle>isgreater</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="isgreater">             
        <refname>isgreater</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>                   
                        isgreater
                    </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>                   
                        isgreater
                    </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>isgreater</function> (<type>double</type> <varname>x</varname>, 
               <type>double</type> <varname>y</varname>)      // if double extension enabled 

<type>long<replaceable>n</replaceable></type> <function>isgreater</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>isgreater</function> (<type>half</type> <varname>x</varname>, 
               <type>half</type> <varname>y</varname>)      // if half extension enabled 

<type>short<replaceable>n</replaceable></type> <function>isgreater</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>

