<!-- 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: Data Fields - Functions</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('functions_func_q.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">
&#160;

<h3><a id="index_q"></a>- q -</h3><ul>
<li>quantization()
: <a class="el" href="classarm__compute_1_1_c_l_sub_tensor.xhtml#a6d614dfaa0606b7fef13f3e26d745b48">CLSubTensor</a>
, <a class="el" href="classarm__compute_1_1_c_l_tensor.xhtml#a6d614dfaa0606b7fef13f3e26d745b48">CLTensor</a>
, <a class="el" href="classarm__compute_1_1_c_l_tensor_allocator.xhtml#a5c27e81a1ad958e4de947c1da77f4cf1">CLTensorAllocator</a>
, <a class="el" href="classarm__compute_1_1_i_c_l_tensor.xhtml#aff9433a5bb38873d6af3d45e6f638281">ICLTensor</a>
</li>
<li>quantization_info()
: <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a3f3e1a3200223e6a304a533b1016e749">ITensorInfo</a>
, <a class="el" href="classarm__compute_1_1_sub_tensor_info.xhtml#ac74736e3863207232a23b7181c1d0f44">SubTensorInfo</a>
, <a class="el" href="classarm__compute_1_1_tensor_info.xhtml#ac74736e3863207232a23b7181c1d0f44">TensorInfo</a>
, <a class="el" href="classarm__compute_1_1test_1_1_accessor.xhtml#ac74736e3863207232a23b7181c1d0f44">Accessor</a>
, <a class="el" href="classarm__compute_1_1test_1_1_c_l_accessor.xhtml#ac74736e3863207232a23b7181c1d0f44">CLAccessor</a>
, <a class="el" href="classarm__compute_1_1test_1_1_g_c_accessor.xhtml#ac74736e3863207232a23b7181c1d0f44">GCAccessor</a>
, <a class="el" href="classarm__compute_1_1test_1_1_i_accessor.xhtml#a3f3e1a3200223e6a304a533b1016e749">IAccessor</a>
, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#ac74736e3863207232a23b7181c1d0f44">SimpleTensor&lt; T &gt;</a>
, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor_accessor.xhtml#ac74736e3863207232a23b7181c1d0f44">SimpleTensorAccessor&lt; T &gt;</a>
</li>
<li>QuantizationInfo()
: <a class="el" href="classarm__compute_1_1_quantization_info.xhtml#af565d3fc3f7d82e9ed5e36dda5377eab">QuantizationInfo</a>
</li>
<li>QuantizationLayer()
: <a class="el" href="classarm__compute_1_1graph_1_1frontend_1_1_quantization_layer.xhtml#a2a7f0e0b904a95289b8f0af3911abda0">QuantizationLayer</a>
</li>
<li>QuantizationLayerNode()
: <a class="el" href="classarm__compute_1_1graph_1_1_quantization_layer_node.xhtml#a3376905986dc802c9c1133bb9cc313b4">QuantizationLayerNode</a>
</li>
<li>QuantizeWrapper()
: <a class="el" href="classarm__gemm_1_1_quantize_wrapper.xhtml#a774f265ae526558dcb394da1f600dd1d">QuantizeWrapper&lt; To, Tr, Tgemm &gt;</a>
</li>
<li>queue()
: <a class="el" href="classarm__compute_1_1_c_l_scheduler.xhtml#ad381d1aed28b4b1e1f5a710633934580">CLScheduler</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:42 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>
