<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }

                .term {
                        font: italic 16px verdana, sans-serif;
                        font-weight: normal;
                }

                .type {
                        font: normal 16px verdana, sans-serif !important;
                }

                .parameter {
                        font-style: italic;
                        }

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
                        padding-top: 10px;
                        padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }

                span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }

        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }

        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
                        margin-top: 10px;
            background-color: #FFF;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
                        font: normal 16px verdana, sans-serif;
        }

        div.refsect1 th {
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }

        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }

                  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }


        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
                        white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }

</style>
    <title>tan, tanh, tanpi, half_tan, native_tan</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="tan, tanh, tanpi, half_tan, native_tan" />
  </head>
  <body>
    <div class="refentry">
      <a id="id-1"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="tan"></a>
        <h1>tan, tanh, tanpi, half_tan, native_tan</h1>
        <p>
           Tangent functions.
        </p>
      </div>
      <div class="refsynopsisdiv">
        <h2></h2>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    gentype
                    <strong class="fsfunc">
                        tan
                    </strong>
                (</code>
                <td>gentype <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam"></var><code>)</code></td>
              </td>
            </tr>
          </table>
        </div>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    gentype
                    <strong class="fsfunc">
                        tanh
                    </strong>
                (</code>
                <td>gentype <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam"></var><code>)</code></td>
              </td>
            </tr>
          </table>
        </div>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    gentype
                    <strong class="fsfunc">
                        tanpi
                    </strong>
                (</code>
                <td>gentype <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">x</var><code>)</code></td>
              </td>
            </tr>
          </table>
        </div>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    gentype
                    <strong class="fsfunc">
                        half_tan
                    </strong>
                (</code>
                <td>gentype <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">x</var><code>)</code></td>
              </td>
            </tr>
          </table>
        </div>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    gentype
                    <strong class="fsfunc">
                        native_tan
                    </strong>
                (</code>
                <td>gentype <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">x</var><code>)</code></td>
              </td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="description"></a>
        <h2>Description</h2>
        <p>
          <code class="function">tan</code> computes the tangent.
        </p>
        <p>
          <code class="function">tanh</code> computes the hyperbolic tangent.
        </p>
        <p>
          <code class="function">tanpi</code> computes <code class="function">tan</code>(<code class="varname">pi * x</code>).
        </p>
        <p>
          <code class="function">half_tan</code> computes tangent. <code class="varname">x</code> must be in the
          range -2<sup>16</sup>... +2<sup>16</sup>.
        </p>
        <p>
          <code class="function">native_tan</code> computes tangent over an implementation-defined
          range. The maximum error is implementation-defined.
        </p>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
        General information about built-in math functions:
        The built-in math functions are categorized into the following:
    </p>
        <p>
      </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem">A list of built-in functions that have scalar or vector argument versions, and,</li>
            <li class="listitem">A list of built-in functions that only take scalar float arguments.</li>
          </ul>
        </div>
        <p>
    </p>
        <p>
        The vector versions of the math functions operate
        component-wise.  The description is per-component.
    </p>
        <p>
    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.
  </p>
        <p>
    The built-in math functions take scalar or vector arguments. For any specific use of these
    function, the actual type has to be the same for all arguments and the return type unless
    otherwise specified.
  </p>
        <p>
    The generic type name <span class="type">gentype</span> is used to indicate that the function can
    take <span class="type">float</span>, <span class="type">float2</span>, <span class="type">float3</span>, <span class="type">float4</span>,
    <span class="type">float8</span>, <span class="type">float16</span>, <span class="type">double</span>, <span class="type">double2</span>,
    <span class="type">double3</span>, <span class="type">double4</span>, <span class="type">double8</span>, or <span class="type">double16</span>
    as the type for the arguments.
  </p>
        <p>
    If extended with <a class="citerefentry" href="cl_khr_fp16.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_fp16</span></span></a>,
    generic type name <span class="type">gentype</span> may indicate <span class="type">half</span> and
    <span class="type">half{2|3|4|8|16}</span> as arguments and return values.
  </p>
        <p>
    The generic type name <span class="type">gentypef</span> is used to indicate that the function can
    take <span class="type">float</span>, <span class="type">float2</span>, <span class="type">float3</span>, <span class="type">float4</span>,
    <span class="type">float8</span>, or <span class="type">float16</span> as the type for the arguments.
  </p>
        <p>
    The generic type name <span class="type">gentyped</span> is used to indicate that the function can take
    <span class="type">double</span>, <span class="type">double2</span>, <span class="type">double3</span>, <span class="type">double4</span>,
    <span class="type">double8</span>, or <span class="type">double16</span> as the type for the arguments.
  </p>
        <h4><a id="id-1.6.11"></a>Half and Native forms</h4>
        <p>
        A subset of Math functions (table 6.8) are defined 
        with the <code class="code">half_</code> prefix. These 
        functions are implemented with a minimum of 
        10-bits of accuracy i.e. an ULP value ≤ 
        8192 ulp.
    </p>
        <p>
        A subset of Math functions (table 6.8) are 
        defined with the <code class="code">native_</code> prefix. These 
        functions may map to one or more native device 
        instructions and will typically have 
        better performance compared to the corresponding 
        functions (without the <code class="code">native__</code>
        prefix). The accuracy (and in some cases the 
        input range(s)) of 
        these functions is implementation-defined.
    </p>
        <p>
        For the half and native forms, we use the 
        generic type name 
        gentype to indicate that the functions 
        (table 6.9) can take 
        <span class="type">float</span>, <span class="type">float2</span>, 
        <span class="type">float3</span>, 
        <span class="type">float4</span>, <span class="type">float8</span> 
        or <span class="type">float16</span> as the type for the 
        arguments.
    </p>
        <p>
        Support for denormal values is optional for 
        <code class="code">half_</code> functions. The <code class="code">half_</code> 
        functions may return any 
        result allowed by section 7.5.3, even when 
        <code class="code">-cl-denorms-are-zero</code> (see section 5.8.4.2) is not in 
        force. Support for denormal values is 
        implementation-defined for <code class="code">native_</code> functions.
    </p>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p>
            <img src="pdficon_small1.gif" />

            <a href="https://www.khronos.org/registry/cl/specs/opencl-2.1-openclc.pdf#page=72" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="mathFunctions.html"><span class="citerefentry"><span class="refentrytitle">Math Functions</span></span></a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2015 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.
</div>
    </div>
  </body>
</html>
