<!-- HTML header for doxygen 1.8.15-->
<!-- Remember to use version doxygen 1.8.15 +-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
<title>Compute Library: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <img alt="Compute Library" src="https://raw.githubusercontent.com/ARM-software/ComputeLibrary/gh-pages/ACL_logo.png" style="max-width: 100%;margin-top: 15px;margin-left: 10px"/>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   &#160;<span id="projectnumber">19.08</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('globals_w.xhtml','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>

<h3><a id="index_w"></a>- w -</h3><ul>
<li>W5_A
: <a class="el" href="fft_8cl.xhtml#a3ddea99343f4804c61e3d3376d3bedc1">fft.cl</a>
</li>
<li>W5_B
: <a class="el" href="fft_8cl.xhtml#aeb3e0b1f96e2ecec9df46338c274ab9f">fft.cl</a>
</li>
<li>W5_C
: <a class="el" href="fft_8cl.xhtml#add4ae9e98c446aeb95bb6bf312996eb0">fft.cl</a>
</li>
<li>W5_D
: <a class="el" href="fft_8cl.xhtml#a55263f2a15f045ec5f4673b5bdda9bc4">fft.cl</a>
</li>
<li>W7_A
: <a class="el" href="fft_8cl.xhtml#ac2612396f1dc9f3037fa59f6efd4e759">fft.cl</a>
</li>
<li>W7_B
: <a class="el" href="fft_8cl.xhtml#ab07d9041b925e9a79b953d01d170145d">fft.cl</a>
</li>
<li>W7_C
: <a class="el" href="fft_8cl.xhtml#a014e0a1952e8b2a95b66f244958adc86">fft.cl</a>
</li>
<li>W7_D
: <a class="el" href="fft_8cl.xhtml#a2e8bd73ebc6280cb023a90bff4b4e595">fft.cl</a>
</li>
<li>W7_E
: <a class="el" href="fft_8cl.xhtml#ad6991beebc37eaa9fec68f1a7ccf019f">fft.cl</a>
</li>
<li>W7_F
: <a class="el" href="fft_8cl.xhtml#a2c2804f21de28bb28c360d8d5b8ab98b">fft.cl</a>
</li>
<li>W_BITS
: <a class="el" href="optical__flow__pyramid__lk_8cl.xhtml#aab6bf9cc4b300f72d07a2ebe9939f376">optical_flow_pyramid_lk.cl</a>
</li>
<li>warp_affine_bilinear()
: <a class="el" href="warp__affine_8cl.xhtml#a4a77d9bbbc01353083729a076cedc38c">warp_affine.cl</a>
</li>
<li>warp_affine_nearest_neighbour()
: <a class="el" href="warp__affine_8cl.xhtml#a716ebd98bb81a3addb7f4d769e118dd9">warp_affine.cl</a>
</li>
<li>warp_perspective_bilinear()
: <a class="el" href="warp__perspective_8cl.xhtml#a5dba6d401b54fd02d20a2ba246668d93">warp_perspective.cl</a>
</li>
<li>warp_perspective_nearest_neighbour()
: <a class="el" href="warp__perspective_8cl.xhtml#ab8f5d79d7699ec7e2a805a25ca0fca2b">warp_perspective.cl</a>
</li>
<li>WRAP_VALIDATE
: <a class="el" href="_n_e_o_n_2_pixel_wise_multiplication_8cpp.xhtml#a6c21e1e9072e5251356f8a97ffb7b98d">PixelWiseMultiplication.cpp</a>
</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Mon Sep 2 2019 11:47:43 for Compute Library by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
  </ul>
</div>
</body>
</html>
