blob: 67576dec76c8477a8c4e1efa6797d1e0d3ebeb7c [file] [log] [blame]
<!-- 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: arm_compute::test::validation::reference Namespace Reference</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('namespacearm__compute_1_1test_1_1validation_1_1reference.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="header">
<div class="summary">
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">arm_compute::test::validation::reference Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a23d9f0c01c9e120dfb828ee922b7a8ae"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> { <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8aea9eeb52badb613229884838847294b90d">ADD</a>,
<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8aea241dd841abade20fcb27b8a9f494e1eb">SUB</a>
}</td></tr>
<tr class="memdesc:a23d9f0c01c9e120dfb828ee922b7a8ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Arithmetic operation types. <a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">More...</a><br /></td></tr>
<tr class="separator:a23d9f0c01c9e120dfb828ee922b7a8ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86a0c8e195c900a895c249662cfaa564"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564">FFTDirection</a> { <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564a67d2f6740a8eaebf4d5c6f79be8da481">Forward</a>,
<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564a9f87f02f2da8f99c571b2a1c2a96132b">Inverse</a>
}</td></tr>
<tr class="separator:a86a0c8e195c900a895c249662cfaa564"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d19c046f7c6ca24d067312183e8871e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871e">WinogradTransformType</a> { <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871eaa84cc046d48610b05c21fd3670d0c829">INPUT</a>,
<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871eae75ab17a550f46adbbe891b819cf951d">FILTER</a>,
<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871ea50a87f0d71f7221582dad4bf507a0f34">OUTPUT</a>
}</td></tr>
<tr class="memdesc:a5d19c046f7c6ca24d067312183e8871e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Winograd transform type. <a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871e">More...</a><br /></td></tr>
<tr class="separator:a5d19c046f7c6ca24d067312183e8871e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a4be63f36f5a22cb9f23c4ad003998c83"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a4be63f36f5a22cb9f23c4ad003998c83"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4be63f36f5a22cb9f23c4ad003998c83">absolute_difference</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_data_type)</td></tr>
<tr class="separator:a4be63f36f5a22cb9f23c4ad003998c83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab072e4246c7e802843a8d65ba4351dd0"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab072e4246c7e802843a8d65ba4351dd0">absolute_difference</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_data_type)</td></tr>
<tr class="separator:ab072e4246c7e802843a8d65ba4351dd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb49abe2b0391bf36a561dff9130f07d"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#afb49abe2b0391bf36a561dff9130f07d">absolute_difference</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_data_type)</td></tr>
<tr class="separator:afb49abe2b0391bf36a561dff9130f07d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbda304aed5292da9c067c4e3fd99b20"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acbda304aed5292da9c067c4e3fd99b20">absolute_difference</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_data_type)</td></tr>
<tr class="separator:acbda304aed5292da9c067c4e3fd99b20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48e7832f8e28c3f7fc0ded12467f8bb0"><td class="memTemplParams" colspan="2">template&lt;typename T1 , typename T2 &gt; </td></tr>
<tr class="memitem:a48e7832f8e28c3f7fc0ded12467f8bb0"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a48e7832f8e28c3f7fc0ded12467f8bb0">accumulate</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a>)</td></tr>
<tr class="separator:a48e7832f8e28c3f7fc0ded12467f8bb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80107badc51d92c79886955f52c61a1b"><td class="memTemplParams" colspan="2">template&lt;typename T1 , typename T2 &gt; </td></tr>
<tr class="memitem:a80107badc51d92c79886955f52c61a1b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a80107badc51d92c79886955f52c61a1b">accumulate_weighted</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3161c2c93c655dd30953372064ec627b">alpha</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a>)</td></tr>
<tr class="separator:a80107badc51d92c79886955f52c61a1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9668e0633026b0281b1d2f01226cabf0"><td class="memTemplParams" colspan="2">template&lt;typename T1 , typename T2 &gt; </td></tr>
<tr class="memitem:a9668e0633026b0281b1d2f01226cabf0"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9668e0633026b0281b1d2f01226cabf0">accumulate_squared</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a>)</td></tr>
<tr class="separator:a9668e0633026b0281b1d2f01226cabf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f825c8e50b0cdee9153f49a17e1ecb9"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5f825c8e50b0cdee9153f49a17e1ecb9">accumulate</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a>)</td></tr>
<tr class="separator:a5f825c8e50b0cdee9153f49a17e1ecb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96aec9e46985dbfdc79566407d8ad793"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a96aec9e46985dbfdc79566407d8ad793">accumulate_weighted</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3161c2c93c655dd30953372064ec627b">alpha</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a>)</td></tr>
<tr class="separator:a96aec9e46985dbfdc79566407d8ad793"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a158ea97c295a1672d7a7d09afdf90307"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a158ea97c295a1672d7a7d09afdf90307">accumulate_squared</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a>)</td></tr>
<tr class="separator:a158ea97c295a1672d7a7d09afdf90307"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3802a0604503a4f9c4eb7189db69f11d"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a3802a0604503a4f9c4eb7189db69f11d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3802a0604503a4f9c4eb7189db69f11d">activation_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;oq_info)</td></tr>
<tr class="separator:a3802a0604503a4f9c4eb7189db69f11d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5b06ffc3863187ee11b4410e19425c0"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ad5b06ffc3863187ee11b4410e19425c0"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad5b06ffc3863187ee11b4410e19425c0">activation_layer&lt; uint8_t &gt;</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;oq_info)</td></tr>
<tr class="separator:ad5b06ffc3863187ee11b4410e19425c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad988691e7bd192624a4d8544a80340c1"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ad988691e7bd192624a4d8544a80340c1"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad988691e7bd192624a4d8544a80340c1">activation_layer&lt; int16_t &gt;</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;oq_info)</td></tr>
<tr class="separator:ad988691e7bd192624a4d8544a80340c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a313729bff7fa8ec949558abfe6cacb11"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a313729bff7fa8ec949558abfe6cacb11">activation_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;oq_info)</td></tr>
<tr class="separator:a313729bff7fa8ec949558abfe6cacb11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad54829d0021829c5e84fca2b21c3c433"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad54829d0021829c5e84fca2b21c3c433">activation_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;oq_info)</td></tr>
<tr class="separator:ad54829d0021829c5e84fca2b21c3c433"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a20c17062ce636db94d101bb3f01a0e"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a7a20c17062ce636db94d101bb3f01a0e"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a7a20c17062ce636db94d101bb3f01a0e">activate_float</a> (T x, T a, T <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationLayerInfo::ActivationFunction</a> activation)</td></tr>
<tr class="separator:a7a20c17062ce636db94d101bb3f01a0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3ab69a504e69097ee96b458cb26e011"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad3ab69a504e69097ee96b458cb26e011"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad3ab69a504e69097ee96b458cb26e011">arithmetic_division</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a>)</td></tr>
<tr class="separator:ad3ab69a504e69097ee96b458cb26e011"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1729a8530c6b38895574c9a2eebc6f05"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1729a8530c6b38895574c9a2eebc6f05">arithmetic_division</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a>)</td></tr>
<tr class="separator:a1729a8530c6b38895574c9a2eebc6f05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6fc7ed5c0825af21afdcff5b3123ab5"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae6fc7ed5c0825af21afdcff5b3123ab5">arithmetic_division</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a>)</td></tr>
<tr class="separator:ae6fc7ed5c0825af21afdcff5b3123ab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf9af191573bdcb8e1b0be4b10ba5954"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:acf9af191573bdcb8e1b0be4b10ba5954"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acf9af191573bdcb8e1b0be4b10ba5954">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src2, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:acf9af191573bdcb8e1b0be4b10ba5954"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa61583632c4ba9f979ef7694376f6d4"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:aaa61583632c4ba9f979ef7694376f6d4"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aaa61583632c4ba9f979ef7694376f6d4">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src2, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:aaa61583632c4ba9f979ef7694376f6d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22dc6973039d30ebe25370d5e64717a0"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a22dc6973039d30ebe25370d5e64717a0"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a22dc6973039d30ebe25370d5e64717a0">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;src2, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:a22dc6973039d30ebe25370d5e64717a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ec33e48961de1cd1e68b0132f674f96"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5ec33e48961de1cd1e68b0132f674f96">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;src2, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:a5ec33e48961de1cd1e68b0132f674f96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5db9557ac53637ea72421b32386f9e40"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5db9557ac53637ea72421b32386f9e40">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;src2, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:a5db9557ac53637ea72421b32386f9e40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff2a214f6417b4641928bd533da4960c"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aff2a214f6417b4641928bd533da4960c">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src2, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:aff2a214f6417b4641928bd533da4960c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41815e938f6643786fe39fad6e362d81"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a41815e938f6643786fe39fad6e362d81"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a41815e938f6643786fe39fad6e362d81">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_data_type, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:a41815e938f6643786fe39fad6e362d81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a554906dce7e96493648d8d63de9bf37e"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a554906dce7e96493648d8d63de9bf37e">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_data_type, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:a554906dce7e96493648d8d63de9bf37e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07939197761c818f07b5e3ff8553fa8c"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a07939197761c818f07b5e3ff8553fa8c">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_data_type, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:a07939197761c818f07b5e3ff8553fa8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2af6bc180bf7d3b3b82a528ee1c1b572"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2af6bc180bf7d3b3b82a528ee1c1b572">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_data_type, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:a2af6bc180bf7d3b3b82a528ee1c1b572"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89bf6564436779db314a3c36b7d1fa88"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a89bf6564436779db314a3c36b7d1fa88">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_data_type, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:a89bf6564436779db314a3c36b7d1fa88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b59ab07308c9b51bfb23f6c8bd21021"><td class="memTemplParams" colspan="2">template&lt;typename T , typename std::enable_if&lt; is_floating_point&lt; T &gt;::value, int &gt;::type * &gt; </td></tr>
<tr class="memitem:a9b59ab07308c9b51bfb23f6c8bd21021"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9b59ab07308c9b51bfb23f6c8bd21021">batch_normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;var, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;beta, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;gamma, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1f8aca235c095df227e7444f6b237eb1">act_info</a>)</td></tr>
<tr class="separator:a9b59ab07308c9b51bfb23f6c8bd21021"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0c46a385d4a694b228d527433901b92"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af0c46a385d4a694b228d527433901b92">batch_normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;var, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;beta, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;gamma, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1f8aca235c095df227e7444f6b237eb1">act_info</a>)</td></tr>
<tr class="separator:af0c46a385d4a694b228d527433901b92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac19e9350e59de09cc88646b5352f7fb"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aac19e9350e59de09cc88646b5352f7fb">batch_normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;var, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;beta, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;gamma, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1f8aca235c095df227e7444f6b237eb1">act_info</a>)</td></tr>
<tr class="separator:aac19e9350e59de09cc88646b5352f7fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa759ea865a99fcd45399d91506056f3d"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa759ea865a99fcd45399d91506056f3d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa759ea865a99fcd45399d91506056f3d">batch_to_space</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;block_shape, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>)</td></tr>
<tr class="separator:aa759ea865a99fcd45399d91506056f3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71aee17712ae0fcf913df5d651cd5eb3"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a71aee17712ae0fcf913df5d651cd5eb3">batch_to_space</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;block_shape, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>)</td></tr>
<tr class="separator:a71aee17712ae0fcf913df5d651cd5eb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5795210429190bccc66045566a47edf5"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5795210429190bccc66045566a47edf5">batch_to_space</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;block_shape, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>)</td></tr>
<tr class="separator:a5795210429190bccc66045566a47edf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7229d506620fd44c5916716f7bf696b2"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a7229d506620fd44c5916716f7bf696b2"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a7229d506620fd44c5916716f7bf696b2">bitwise_and</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src2)</td></tr>
<tr class="separator:a7229d506620fd44c5916716f7bf696b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55c7ec1e1273f65d37c51ff1d39a5d77"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a55c7ec1e1273f65d37c51ff1d39a5d77">bitwise_and</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src2)</td></tr>
<tr class="separator:a55c7ec1e1273f65d37c51ff1d39a5d77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4713d48a2398823bcfd449c2aafef30"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:af4713d48a2398823bcfd449c2aafef30"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af4713d48a2398823bcfd449c2aafef30">bitwise_not</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:af4713d48a2398823bcfd449c2aafef30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a003581bd71ae054b9b7ff70d975856d8"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a003581bd71ae054b9b7ff70d975856d8">bitwise_not</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a003581bd71ae054b9b7ff70d975856d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe5e573ce60f341bbeebd0498d8e499b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:abe5e573ce60f341bbeebd0498d8e499b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#abe5e573ce60f341bbeebd0498d8e499b">bitwise_or</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src2)</td></tr>
<tr class="separator:abe5e573ce60f341bbeebd0498d8e499b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89ed2687d967ec8a8ffc24195fbda72e"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a89ed2687d967ec8a8ffc24195fbda72e">bitwise_or</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src2)</td></tr>
<tr class="separator:a89ed2687d967ec8a8ffc24195fbda72e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aade8c313bbf87320b8b8f81c5ff5aeac"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aade8c313bbf87320b8b8f81c5ff5aeac"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aade8c313bbf87320b8b8f81c5ff5aeac">bitwise_xor</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src2)</td></tr>
<tr class="separator:aade8c313bbf87320b8b8f81c5ff5aeac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af05c4e8f9356af6f59bb1e7f48b97d4d"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af05c4e8f9356af6f59bb1e7f48b97d4d">bitwise_xor</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src2)</td></tr>
<tr class="separator:af05c4e8f9356af6f59bb1e7f48b97d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf07b6d2bb97c0f4ab096187a7221718"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:acf07b6d2bb97c0f4ab096187a7221718"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acf07b6d2bb97c0f4ab096187a7221718">bounding_box_transform</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;boxes, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;deltas, const <a class="el" href="classarm__compute_1_1_bounding_box_transform_info.xhtml">BoundingBoxTransformInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:acf07b6d2bb97c0f4ab096187a7221718"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1508c928b8a97a8381b8d441ad1417c2"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1508c928b8a97a8381b8d441ad1417c2">bounding_box_transform</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;boxes, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;deltas, const <a class="el" href="classarm__compute_1_1_bounding_box_transform_info.xhtml">BoundingBoxTransformInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:a1508c928b8a97a8381b8d441ad1417c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a137920e5250375eeb4bc273a5d23aba2"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a137920e5250375eeb4bc273a5d23aba2">bounding_box_transform</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;boxes, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;deltas, const <a class="el" href="classarm__compute_1_1_bounding_box_transform_info.xhtml">BoundingBoxTransformInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:a137920e5250375eeb4bc273a5d23aba2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa048ec4655f2ebb10b8d1f301f60df69"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa048ec4655f2ebb10b8d1f301f60df69"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa048ec4655f2ebb10b8d1f301f60df69">box3x3</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value)</td></tr>
<tr class="separator:aa048ec4655f2ebb10b8d1f301f60df69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ff0714b006e333c893d87a928d88da6"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2ff0714b006e333c893d87a928d88da6">box3x3</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a2ff0714b006e333c893d87a928d88da6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aacc7e9df985310966100b88ef3bed59c"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aacc7e9df985310966100b88ef3bed59c"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aacc7e9df985310966100b88ef3bed59c">canny_edge_detector</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int32_t upper_thresh, int32_t lower_thresh, int gradient_size, <a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8a">MagnitudeType</a> norm_type, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value)</td></tr>
<tr class="separator:aacc7e9df985310966100b88ef3bed59c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2885998be053c89fa6bd41cdeda9656"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac2885998be053c89fa6bd41cdeda9656">canny_edge_detector</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int32_t upper_thresh, int32_t lower_thresh, int gradient_size, <a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8a">MagnitudeType</a> norm_type, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:ac2885998be053c89fa6bd41cdeda9656"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2b7a225c81e58726bad28af5f8d84c3"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad2b7a225c81e58726bad28af5f8d84c3"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad2b7a225c81e58726bad28af5f8d84c3">channel_combine</a> (const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>, const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;image_planes, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> format)</td></tr>
<tr class="separator:ad2b7a225c81e58726bad28af5f8d84c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15a83291552130a09c9725895fa1f677"><td class="memItemLeft" align="right" valign="top">template std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a15a83291552130a09c9725895fa1f677">channel_combine</a> (const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>, const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&gt; &amp;image_planes, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> format)</td></tr>
<tr class="separator:a15a83291552130a09c9725895fa1f677"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0b4ddddba7177964382fe96ab0e611d"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:af0b4ddddba7177964382fe96ab0e611d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af0b4ddddba7177964382fe96ab0e611d">channel_extract</a> (const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>, const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;tensor_planes, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> format, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455a">Channel</a> channel)</td></tr>
<tr class="separator:af0b4ddddba7177964382fe96ab0e611d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c1907cbb46b073bd529c6cdb6b3c8b9"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5c1907cbb46b073bd529c6cdb6b3c8b9">channel_extract</a> (const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>, const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&gt; &amp;tensor_planes, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> format, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455a">Channel</a> channel)</td></tr>
<tr class="separator:a5c1907cbb46b073bd529c6cdb6b3c8b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4e272f3519c88b88d5cdd668a24e822"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ab4e272f3519c88b88d5cdd668a24e822"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab4e272f3519c88b88d5cdd668a24e822">channel_shuffle</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:ab4e272f3519c88b88d5cdd668a24e822"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88adb35e57a000aebe497281c8cb0475"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a88adb35e57a000aebe497281c8cb0475">channel_shuffle</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:a88adb35e57a000aebe497281c8cb0475"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a205ca70e4eecdf6464747eaff8f855a1"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a205ca70e4eecdf6464747eaff8f855a1">channel_shuffle</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:a205ca70e4eecdf6464747eaff8f855a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2131f5b7b37e97eda38ec49cecc94086"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2131f5b7b37e97eda38ec49cecc94086">channel_shuffle</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:a2131f5b7b37e97eda38ec49cecc94086"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30d68588745ace70b40d9fbeb307cd4a"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a30d68588745ace70b40d9fbeb307cd4a">channel_shuffle</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:a30d68588745ace70b40d9fbeb307cd4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c1fa253c6637e17d034e43ac52181f3"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5c1fa253c6637e17d034e43ac52181f3">channel_shuffle</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:a5c1fa253c6637e17d034e43ac52181f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a322ce5510f1325f02993132f5da68525"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a322ce5510f1325f02993132f5da68525"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a322ce5510f1325f02993132f5da68525">col2im</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:a322ce5510f1325f02993132f5da68525"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b681fe3cdd1dc6d31137220dbd0307d"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9b681fe3cdd1dc6d31137220dbd0307d">col2im</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:a9b681fe3cdd1dc6d31137220dbd0307d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2dc7444c541764b71db241d2f37079a"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae2dc7444c541764b71db241d2f37079a">col2im</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:ae2dc7444c541764b71db241d2f37079a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a483cdee93e3819f748aac690e0f5f5a7"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a483cdee93e3819f748aac690e0f5f5a7">col2im</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:a483cdee93e3819f748aac690e0f5f5a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46c0b6c2eccdd522741cf4f1e3ba755b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a46c0b6c2eccdd522741cf4f1e3ba755b"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a46c0b6c2eccdd522741cf4f1e3ba755b">color_convert</a> (const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>, const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;tensor_planes, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> src_format, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> dst_format)</td></tr>
<tr class="separator:a46c0b6c2eccdd522741cf4f1e3ba755b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43ac449cca4ea65b7520e63bdfa80d73"><td class="memItemLeft" align="right" valign="top">template std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a43ac449cca4ea65b7520e63bdfa80d73">color_convert</a> (const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>, const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&gt; &amp;tensor_planes, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> src_format, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> dst_format)</td></tr>
<tr class="separator:a43ac449cca4ea65b7520e63bdfa80d73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7da5947996960e48cf958f1e722829ae"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a7da5947996960e48cf958f1e722829ae"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a7da5947996960e48cf958f1e722829ae">compare</a> (<a class="el" href="namespacearm__compute.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src2)</td></tr>
<tr class="separator:a7da5947996960e48cf958f1e722829ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb0925853b5ede7a77715e9c3494a0cc"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:afb0925853b5ede7a77715e9c3494a0cc"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#afb0925853b5ede7a77715e9c3494a0cc">compare</a> (<a class="el" href="namespacearm__compute.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src2)</td></tr>
<tr class="separator:afb0925853b5ede7a77715e9c3494a0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1c2f04c530bae0379463c1414305a89"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad1c2f04c530bae0379463c1414305a89">compare</a> (<a class="el" href="namespacearm__compute.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;src2)</td></tr>
<tr class="separator:ad1c2f04c530bae0379463c1414305a89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9bfac7b9e4c2ff4299e279ae829791f"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9bfac7b9e4c2ff4299e279ae829791f">compare</a> (<a class="el" href="namespacearm__compute.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src2)</td></tr>
<tr class="separator:ad9bfac7b9e4c2ff4299e279ae829791f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab38cb5a1d32cbb556fea427595caf1d5"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ab38cb5a1d32cbb556fea427595caf1d5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab38cb5a1d32cbb556fea427595caf1d5">compute_all_anchors</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;anchors, const <a class="el" href="classarm__compute_1_1_compute_anchors_info.xhtml">ComputeAnchorsInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:ab38cb5a1d32cbb556fea427595caf1d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1d470be6666beb908f5aa645ae34f88"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad1d470be6666beb908f5aa645ae34f88">compute_all_anchors</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;anchors, const <a class="el" href="classarm__compute_1_1_compute_anchors_info.xhtml">ComputeAnchorsInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:ad1d470be6666beb908f5aa645ae34f88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fa94aee6e1195a0e54a39eeec965a24"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2fa94aee6e1195a0e54a39eeec965a24">compute_all_anchors</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;anchors, const <a class="el" href="classarm__compute_1_1_compute_anchors_info.xhtml">ComputeAnchorsInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:a2fa94aee6e1195a0e54a39eeec965a24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f143a9ff97f00632d212b3b7c96aad0"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a0f143a9ff97f00632d212b3b7c96aad0"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0f143a9ff97f00632d212b3b7c96aad0">concatenate_layer</a> (std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;srcs, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a0f143a9ff97f00632d212b3b7c96aad0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a64bde72f5f3d28ce8cbb2d9890e68b"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1a64bde72f5f3d28ce8cbb2d9890e68b">concatenate_layer</a> (std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&gt; &amp;srcs, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a1a64bde72f5f3d28ce8cbb2d9890e68b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1cc96a336f30616241fc7f2b6850cff9"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1cc96a336f30616241fc7f2b6850cff9">concatenate_layer</a> (std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&gt; &amp;srcs, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a1cc96a336f30616241fc7f2b6850cff9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3b21bf3cc9d4b7c077805a3c99adfb1"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af3b21bf3cc9d4b7c077805a3c99adfb1">concatenate_layer</a> (std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&gt; &amp;srcs, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:af3b21bf3cc9d4b7c077805a3c99adfb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e2c47772be91252ef78e8c7fe67ef12"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6e2c47772be91252ef78e8c7fe67ef12"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6e2c47772be91252ef78e8c7fe67ef12">convert_fully_connected_weights</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;original_input_shape, const <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> training_data_layout)</td></tr>
<tr class="separator:a6e2c47772be91252ef78e8c7fe67ef12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af26eb814a56ed238d734b476a08a36ec"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af26eb814a56ed238d734b476a08a36ec">convert_fully_connected_weights</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;original_input_shape, const <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> training_data_layout)</td></tr>
<tr class="separator:af26eb814a56ed238d734b476a08a36ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad72a6f02d381cf4fb42ef050f4de0793"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad72a6f02d381cf4fb42ef050f4de0793">convert_fully_connected_weights</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;original_input_shape, const <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> training_data_layout)</td></tr>
<tr class="separator:ad72a6f02d381cf4fb42ef050f4de0793"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af731f5f25a5302adac2184118e6fc094"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af731f5f25a5302adac2184118e6fc094">convert_fully_connected_weights</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;original_input_shape, const <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> training_data_layout)</td></tr>
<tr class="separator:af731f5f25a5302adac2184118e6fc094"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01a7620e1490bfee842dd8ab9bd0ea4c"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a01a7620e1490bfee842dd8ab9bd0ea4c"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a01a7620e1490bfee842dd8ab9bd0ea4c">convolution</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a>, const int16_t *<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a006546051719c5fb4b20c966a26b9c76">conv</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6d1214c8e51d5c216c257b8c1ce14525">scale</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value, const unsigned int width, const unsigned int height)</td></tr>
<tr class="separator:a01a7620e1490bfee842dd8ab9bd0ea4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abafcbe337f50c1a434ee3287b78cafc4"><td class="memTemplParams" colspan="2">template&lt;typename T , typename TB &gt; </td></tr>
<tr class="memitem:abafcbe337f50c1a434ee3287b78cafc4"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#abafcbe337f50c1a434ee3287b78cafc4">convolution_layer_nchw</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TB &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:abafcbe337f50c1a434ee3287b78cafc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ceb764c20eb3c26b13e49315d835eb5"><td class="memTemplParams" colspan="2">template&lt;typename T , typename TB &gt; </td></tr>
<tr class="memitem:a1ceb764c20eb3c26b13e49315d835eb5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1ceb764c20eb3c26b13e49315d835eb5">convolution_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TB &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>, <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> out_quant_info)</td></tr>
<tr class="separator:a1ceb764c20eb3c26b13e49315d835eb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78ccc6d044d618d26b388abc9596e42c"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a78ccc6d044d618d26b388abc9596e42c">convolution_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>, <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> out_quant_info)</td></tr>
<tr class="separator:a78ccc6d044d618d26b388abc9596e42c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c12846c0fd41539509e08e5f83ef8b4"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a7c12846c0fd41539509e08e5f83ef8b4">convolution_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>, <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> out_quant_info)</td></tr>
<tr class="separator:a7c12846c0fd41539509e08e5f83ef8b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2e210bbbd2cd4e742395526405bf8af"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae2e210bbbd2cd4e742395526405bf8af">convolution_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>, <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> out_quant_info)</td></tr>
<tr class="separator:ae2e210bbbd2cd4e742395526405bf8af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9000ce99b9ffcec5722cade36d7e757"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad9000ce99b9ffcec5722cade36d7e757"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">copy</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:ad9000ce99b9ffcec5722cade36d7e757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3596a3a6614b401bcdb60720c19e6b3e"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3596a3a6614b401bcdb60720c19e6b3e">copy</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:a3596a3a6614b401bcdb60720c19e6b3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac796f1c782a45a03865323daf9d01a96"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac796f1c782a45a03865323daf9d01a96">copy</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:ac796f1c782a45a03865323daf9d01a96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9e2e92c4a125ee94af9df17b01b5e33"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab9e2e92c4a125ee94af9df17b01b5e33">copy</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:ab9e2e92c4a125ee94af9df17b01b5e33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adea115d1cd3a84fa4620dad6b42744cf"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#adea115d1cd3a84fa4620dad6b42744cf">copy</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:adea115d1cd3a84fa4620dad6b42744cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acaec6cbbf203170d63e1f15b859317f2"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acaec6cbbf203170d63e1f15b859317f2">copy</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:acaec6cbbf203170d63e1f15b859317f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7bae8d334e5dd7e6b9c51cd4b224d06"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab7bae8d334e5dd7e6b9c51cd4b224d06">copy</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:ab7bae8d334e5dd7e6b9c51cd4b224d06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af01286b52d60b087950f3b010a7b5bfc"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af01286b52d60b087950f3b010a7b5bfc">copy</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:af01286b52d60b087950f3b010a7b5bfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93fa89f152a11f0b7b479eddc833f44b"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a93fa89f152a11f0b7b479eddc833f44b">copy</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:a93fa89f152a11f0b7b479eddc833f44b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6375d6e6efadf8ae7237d6490e8015af"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6375d6e6efadf8ae7237d6490e8015af"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6375d6e6efadf8ae7237d6490e8015af">crop_and_resize</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;boxes, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; box_ind, <a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a> crop_size, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> method, float extrapolation_value)</td></tr>
<tr class="separator:a6375d6e6efadf8ae7237d6490e8015af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a529e0e59bce5fdaec98664d396158140"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a529e0e59bce5fdaec98664d396158140">crop_and_resize</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;boxes, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; box_ind, <a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a> crop_size, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> method, float extrapolation_value)</td></tr>
<tr class="separator:a529e0e59bce5fdaec98664d396158140"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02d39c7466f00362ee4c56e15bb24fea"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a02d39c7466f00362ee4c56e15bb24fea">crop_and_resize</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;boxes, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; box_ind, <a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a> crop_size, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> method, float extrapolation_value)</td></tr>
<tr class="separator:a02d39c7466f00362ee4c56e15bb24fea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb90cfcf3bb4cb8af801e2d94df218a0"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aeb90cfcf3bb4cb8af801e2d94df218a0">crop_and_resize</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;boxes, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; box_ind, <a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a> crop_size, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> method, float extrapolation_value)</td></tr>
<tr class="separator:aeb90cfcf3bb4cb8af801e2d94df218a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d090ef82b33a5becb3aa37d62af1003"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1d090ef82b33a5becb3aa37d62af1003">crop_and_resize</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;boxes, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; box_ind, <a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a> crop_size, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> method, float extrapolation_value)</td></tr>
<tr class="separator:a1d090ef82b33a5becb3aa37d62af1003"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa455781ebdf8cbbfe9d06ce0ba7bc4bf"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa455781ebdf8cbbfe9d06ce0ba7bc4bf">crop_and_resize</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;boxes, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; box_ind, <a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a> crop_size, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> method, float extrapolation_value)</td></tr>
<tr class="separator:aa455781ebdf8cbbfe9d06ce0ba7bc4bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8698a00dbaa753456be2fcf40ec320e1"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8698a00dbaa753456be2fcf40ec320e1">crop_and_resize</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;boxes, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; box_ind, <a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a> crop_size, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> method, float extrapolation_value)</td></tr>
<tr class="separator:a8698a00dbaa753456be2fcf40ec320e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12bc62165f6277d6196148ce46260d1a"><td class="memTemplParams" colspan="2">template&lt;typename T , typename TB &gt; </td></tr>
<tr class="memitem:a12bc62165f6277d6196148ce46260d1a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a12bc62165f6277d6196148ce46260d1a">deconvolution_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TB &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="memdesc:a12bc62165f6277d6196148ce46260d1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deconvolution reference implementation. <a href="#a12bc62165f6277d6196148ce46260d1a">More...</a><br /></td></tr>
<tr class="separator:a12bc62165f6277d6196148ce46260d1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7af6f74771afcdb9fee7b948afc4af6"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af7af6f74771afcdb9fee7b948afc4af6">deconvolution_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:af7af6f74771afcdb9fee7b948afc4af6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a402696fc0412e9052f1d30d6331dfdef"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a402696fc0412e9052f1d30d6331dfdef">deconvolution_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:a402696fc0412e9052f1d30d6331dfdef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d2ea6a35e80f768e55935e819912505"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0d2ea6a35e80f768e55935e819912505">deconvolution_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:a0d2ea6a35e80f768e55935e819912505"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e15b670980db455ad07397b2c34b610"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a4e15b670980db455ad07397b2c34b610"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4e15b670980db455ad07397b2c34b610">depthconcatenate_layer</a> (const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;srcs, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>)</td></tr>
<tr class="separator:a4e15b670980db455ad07397b2c34b610"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae87f24b80ddc830b9911fcba89004686"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae87f24b80ddc830b9911fcba89004686">depthconcatenate_layer</a> (const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&gt; &amp;srcs, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>)</td></tr>
<tr class="separator:ae87f24b80ddc830b9911fcba89004686"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab620d10e96dbaf31989ff11b490deef9"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab620d10e96dbaf31989ff11b490deef9">depthconcatenate_layer</a> (const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&gt; &amp;srcs, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>)</td></tr>
<tr class="separator:ab620d10e96dbaf31989ff11b490deef9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a822ab49e0fc97c2687bb92c079ebf1f1"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a822ab49e0fc97c2687bb92c079ebf1f1">depthconcatenate_layer</a> (const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&gt; &amp;srcs, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>)</td></tr>
<tr class="separator:a822ab49e0fc97c2687bb92c079ebf1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a742cdbdf3c1db76c9a189f1bcd745579"><td class="memTemplParams" colspan="2">template&lt;typename T1 , typename T2 , typename std::enable_if&lt; std::is_integral&lt; T1 &gt;::value &amp;&amp;!std::is_same&lt; T1, T2 &gt;::value, int &gt;::type &gt; </td></tr>
<tr class="memitem:a742cdbdf3c1db76c9a189f1bcd745579"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a742cdbdf3c1db76c9a189f1bcd745579">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>)</td></tr>
<tr class="separator:a742cdbdf3c1db76c9a189f1bcd745579"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97ffa19c49dbe0b8d0e47b0ab15c51dd"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a97ffa19c49dbe0b8d0e47b0ab15c51dd">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>)</td></tr>
<tr class="separator:a97ffa19c49dbe0b8d0e47b0ab15c51dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acad5a5cf179151895a976da050f213f4"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acad5a5cf179151895a976da050f213f4">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>)</td></tr>
<tr class="separator:acad5a5cf179151895a976da050f213f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8d5666de9f1ea545436d8dd3dac7b8a"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae8d5666de9f1ea545436d8dd3dac7b8a">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>)</td></tr>
<tr class="separator:ae8d5666de9f1ea545436d8dd3dac7b8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a968f4da89a68d28ad39d8e39d8d19f93"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a968f4da89a68d28ad39d8e39d8d19f93">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>)</td></tr>
<tr class="separator:a968f4da89a68d28ad39d8e39d8d19f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b297a6ebf043fe0f8b2ad99a3d12062"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6b297a6ebf043fe0f8b2ad99a3d12062">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>)</td></tr>
<tr class="separator:a6b297a6ebf043fe0f8b2ad99a3d12062"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2790b7ea17fe89ea8befa5a0c657f4ae"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2790b7ea17fe89ea8befa5a0c657f4ae">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>)</td></tr>
<tr class="separator:a2790b7ea17fe89ea8befa5a0c657f4ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0a3b5445ea9e2835f0c0321a0afe9b1"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac0a3b5445ea9e2835f0c0321a0afe9b1">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>)</td></tr>
<tr class="separator:ac0a3b5445ea9e2835f0c0321a0afe9b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f6b2f51f5c49ae3d358f65246581656"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4f6b2f51f5c49ae3d358f65246581656">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>)</td></tr>
<tr class="separator:a4f6b2f51f5c49ae3d358f65246581656"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5ebcd0b7af3ed4028f686bf7a4ab814"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ac5ebcd0b7af3ed4028f686bf7a4ab814"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac5ebcd0b7af3ed4028f686bf7a4ab814">depth_to_space</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, int32_t block_shape)</td></tr>
<tr class="separator:ac5ebcd0b7af3ed4028f686bf7a4ab814"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac911b1992900602137e790cc89ddc8ac"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac911b1992900602137e790cc89ddc8ac">depth_to_space</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, int32_t block_shape)</td></tr>
<tr class="separator:ac911b1992900602137e790cc89ddc8ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab36b4f1c7136e731b56bcea1ba1f6674"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab36b4f1c7136e731b56bcea1ba1f6674">depth_to_space</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, int32_t block_shape)</td></tr>
<tr class="separator:ab36b4f1c7136e731b56bcea1ba1f6674"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af411a55d9c9aeba5c5e579613f362988"><td class="memTemplParams" colspan="2">template&lt;typename T , typename TB &gt; </td></tr>
<tr class="memitem:af411a55d9c9aeba5c5e579613f362988"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af411a55d9c9aeba5c5e579613f362988">depthwise_convolution</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TB &gt; &amp;biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>, unsigned int depth_multiplier, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;out_quant_info)</td></tr>
<tr class="memdesc:af411a55d9c9aeba5c5e579613f362988"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform a depthwise convolution. <a href="#af411a55d9c9aeba5c5e579613f362988">More...</a><br /></td></tr>
<tr class="separator:af411a55d9c9aeba5c5e579613f362988"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec5c617012397c568660626f052fd23b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:aec5c617012397c568660626f052fd23b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aec5c617012397c568660626f052fd23b">depthwise_convolution</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>, unsigned int depth_multiplier, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;out_quant_info)</td></tr>
<tr class="separator:aec5c617012397c568660626f052fd23b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9f4779124f1665e05a60ce576cba865"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9f4779124f1665e05a60ce576cba865">depthwise_convolution</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>, unsigned int depth_multiplier, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;out_quant_info)</td></tr>
<tr class="separator:ad9f4779124f1665e05a60ce576cba865"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad76902f9b0ac13716a64d22ecb8e34bf"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad76902f9b0ac13716a64d22ecb8e34bf">depthwise_convolution</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>, unsigned int depth_multiplier, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;out_quant_info)</td></tr>
<tr class="separator:ad76902f9b0ac13716a64d22ecb8e34bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71dcbc5f08da9ae1a8981746d7a62322"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a71dcbc5f08da9ae1a8981746d7a62322"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a71dcbc5f08da9ae1a8981746d7a62322">depthwise_separable_convolution_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;depthwise_weights, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;depthwise_biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;depthwise_out_shape, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;pointwise_weights, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;pointwise_biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;depthwise_conv_info, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;pointwise_conv_info)</td></tr>
<tr class="separator:a71dcbc5f08da9ae1a8981746d7a62322"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c7524d5bce923f96be77f49e1da3913"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0c7524d5bce923f96be77f49e1da3913">depthwise_separable_convolution_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;in, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;depthwise_weights, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;depthwise_biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;depthwise_out_shape, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;pointwise_weights, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;pointwise_biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;depthwise_conv_info, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;pointwise_conv_info)</td></tr>
<tr class="separator:a0c7524d5bce923f96be77f49e1da3913"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd43030e06efec1c26997107b7bd184d"><td class="memTemplParams" colspan="2">template&lt;typename TOut , typename TIn &gt; </td></tr>
<tr class="memitem:abd43030e06efec1c26997107b7bd184d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TOut &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#abd43030e06efec1c26997107b7bd184d">dequantization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TIn &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:abd43030e06efec1c26997107b7bd184d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b5c98302ac3ac376c23302a1f3beef2"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9b5c98302ac3ac376c23302a1f3beef2">dequantization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a9b5c98302ac3ac376c23302a1f3beef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abede2427030c71627ea72c8eaee16fff"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#abede2427030c71627ea72c8eaee16fff">dequantization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:abede2427030c71627ea72c8eaee16fff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb55c366bbc0df5025d95b736ac14ff4"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#afb55c366bbc0df5025d95b736ac14ff4">dequantization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:afb55c366bbc0df5025d95b736ac14ff4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeae8f44225b61c5a6b05fdfcd82ae3d1"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
<tr class="memitem:aeae8f44225b61c5a6b05fdfcd82ae3d1"><td class="memTemplItemLeft" align="right" valign="top">std::pair&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aeae8f44225b61c5a6b05fdfcd82ae3d1">derivative</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value, <a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7">GradientDimension</a> gradient_dimension)</td></tr>
<tr class="separator:aeae8f44225b61c5a6b05fdfcd82ae3d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5079d3fc0f7cf5f8dfb40b882cea1af"><td class="memItemLeft" align="right" valign="top">template std::pair&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac5079d3fc0f7cf5f8dfb40b882cea1af">derivative</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value, <a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7">GradientDimension</a> gradient_dimension)</td></tr>
<tr class="separator:ac5079d3fc0f7cf5f8dfb40b882cea1af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b8dffeef6fede89bb1d53aa94821357"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a9b8dffeef6fede89bb1d53aa94821357"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9b8dffeef6fede89bb1d53aa94821357">rdft_1d</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="memdesc:a9b8dffeef6fede89bb1d53aa94821357"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs an one dimensional DFT on a real input. <a href="#a9b8dffeef6fede89bb1d53aa94821357">More...</a><br /></td></tr>
<tr class="separator:a9b8dffeef6fede89bb1d53aa94821357"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a913f2b2a80ba620a225ab364822702b6"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a913f2b2a80ba620a225ab364822702b6"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a913f2b2a80ba620a225ab364822702b6">ridft_1d</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, bool <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a78f90e18c925576e2bd4d196a72e201f">is_odd</a>=false)</td></tr>
<tr class="memdesc:a913f2b2a80ba620a225ab364822702b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs an one dimensional inverse DFT on a real input. <a href="#a913f2b2a80ba620a225ab364822702b6">More...</a><br /></td></tr>
<tr class="separator:a913f2b2a80ba620a225ab364822702b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc02bc2a9b06db328e63c6bfbbdb23a8"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:afc02bc2a9b06db328e63c6bfbbdb23a8"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#afc02bc2a9b06db328e63c6bfbbdb23a8">dft_1d</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564">FFTDirection</a> direction)</td></tr>
<tr class="memdesc:afc02bc2a9b06db328e63c6bfbbdb23a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs an one dimensional DFT on a complex input. <a href="#afc02bc2a9b06db328e63c6bfbbdb23a8">More...</a><br /></td></tr>
<tr class="separator:afc02bc2a9b06db328e63c6bfbbdb23a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad12f9453958fc91c32e2ba138bbe85c2"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad12f9453958fc91c32e2ba138bbe85c2"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad12f9453958fc91c32e2ba138bbe85c2">rdft_2d</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="memdesc:ad12f9453958fc91c32e2ba138bbe85c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a two dimensional DFT on a real input. <a href="#ad12f9453958fc91c32e2ba138bbe85c2">More...</a><br /></td></tr>
<tr class="separator:ad12f9453958fc91c32e2ba138bbe85c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a381efef2cd1cc9b5fde49437b91db230"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a381efef2cd1cc9b5fde49437b91db230"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a381efef2cd1cc9b5fde49437b91db230">ridft_2d</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, bool <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a78f90e18c925576e2bd4d196a72e201f">is_odd</a>=false)</td></tr>
<tr class="memdesc:a381efef2cd1cc9b5fde49437b91db230"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a two dimensional inverse DFT on a real input. <a href="#a381efef2cd1cc9b5fde49437b91db230">More...</a><br /></td></tr>
<tr class="separator:a381efef2cd1cc9b5fde49437b91db230"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7677c34292be2590038f7fe6e0a6de7"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:af7677c34292be2590038f7fe6e0a6de7"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af7677c34292be2590038f7fe6e0a6de7">dft_2d</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564">FFTDirection</a> direction)</td></tr>
<tr class="memdesc:af7677c34292be2590038f7fe6e0a6de7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a two dimensional DFT on a complex input. <a href="#af7677c34292be2590038f7fe6e0a6de7">More...</a><br /></td></tr>
<tr class="separator:af7677c34292be2590038f7fe6e0a6de7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9740a0cc13215df4c0a5edccdbe9e11"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ac9740a0cc13215df4c0a5edccdbe9e11"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac9740a0cc13215df4c0a5edccdbe9e11">conv2d_dft</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>)</td></tr>
<tr class="memdesc:ac9740a0cc13215df4c0a5edccdbe9e11"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs and DFT based convolution on a real input. <a href="#ac9740a0cc13215df4c0a5edccdbe9e11">More...</a><br /></td></tr>
<tr class="separator:ac9740a0cc13215df4c0a5edccdbe9e11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bf45a393588a4696b3c828dcffb2581"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0bf45a393588a4696b3c828dcffb2581">rdft_1d</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a0bf45a393588a4696b3c828dcffb2581"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ed62e13b9cf7f6b3eda27029dba2446"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8ed62e13b9cf7f6b3eda27029dba2446">ridft_1d</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, bool <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a78f90e18c925576e2bd4d196a72e201f">is_odd</a>)</td></tr>
<tr class="separator:a8ed62e13b9cf7f6b3eda27029dba2446"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75345ce42cab379d55f2edf1b67ee4c2"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a75345ce42cab379d55f2edf1b67ee4c2">dft_1d</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564">FFTDirection</a> direction)</td></tr>
<tr class="separator:a75345ce42cab379d55f2edf1b67ee4c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ecde15afcabe3298032697a97f633ee"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8ecde15afcabe3298032697a97f633ee">rdft_2d</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a8ecde15afcabe3298032697a97f633ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8285d2e58ae1ee57e5e45c23d35dc30"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae8285d2e58ae1ee57e5e45c23d35dc30">ridft_2d</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, bool <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a78f90e18c925576e2bd4d196a72e201f">is_odd</a>)</td></tr>
<tr class="separator:ae8285d2e58ae1ee57e5e45c23d35dc30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4053ac59fe39737f4c28329b56277d1"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af4053ac59fe39737f4c28329b56277d1">dft_2d</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564">FFTDirection</a> direction)</td></tr>
<tr class="separator:af4053ac59fe39737f4c28329b56277d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74a1621a402a17e2a896efff8c1c74a5"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a74a1621a402a17e2a896efff8c1c74a5">conv2d_dft</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>)</td></tr>
<tr class="separator:a74a1621a402a17e2a896efff8c1c74a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e49a7bdf96ed64920234da737e1bf86"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a2e49a7bdf96ed64920234da737e1bf86"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2e49a7bdf96ed64920234da737e1bf86">dilate</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value)</td></tr>
<tr class="separator:a2e49a7bdf96ed64920234da737e1bf86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b18443e2ca2d82d1e314cc568ab997f"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9b18443e2ca2d82d1e314cc568ab997f">dilate</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a9b18443e2ca2d82d1e314cc568ab997f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03fab65218f4bac85ecc134484ab3b81"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a03fab65218f4bac85ecc134484ab3b81">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;src2, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:a03fab65218f4bac85ecc134484ab3b81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cc0449246a464e6bb09502ba1b1180e"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a7cc0449246a464e6bb09502ba1b1180e">arithmetic_operation</a> (<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a> op, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;src2, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_data_type, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>)</td></tr>
<tr class="separator:a7cc0449246a464e6bb09502ba1b1180e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12e69cba1811ddfd5e8f113a2019ff49"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a12e69cba1811ddfd5e8f113a2019ff49"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a12e69cba1811ddfd5e8f113a2019ff49">elementwise_unary</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936d">ElementWiseUnary</a> op)</td></tr>
<tr class="separator:a12e69cba1811ddfd5e8f113a2019ff49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66fd17630511434727406aa3b82d5dcc"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a66fd17630511434727406aa3b82d5dcc">elementwise_unary</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936d">ElementWiseUnary</a> op)</td></tr>
<tr class="separator:a66fd17630511434727406aa3b82d5dcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d3887ce8f104f8438566716431f1f11"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6d3887ce8f104f8438566716431f1f11">elementwise_unary</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936d">ElementWiseUnary</a> op)</td></tr>
<tr class="separator:a6d3887ce8f104f8438566716431f1f11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadf4c6ca7ce54079a41ecfe2132f0059"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aadf4c6ca7ce54079a41ecfe2132f0059">elementwise_unary</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936d">ElementWiseUnary</a> op)</td></tr>
<tr class="separator:aadf4c6ca7ce54079a41ecfe2132f0059"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55f81ef18f2e332b0a334693ebd28e37"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a55f81ef18f2e332b0a334693ebd28e37"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a55f81ef18f2e332b0a334693ebd28e37">equalize_histogram</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a55f81ef18f2e332b0a334693ebd28e37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a74d12efe92f903e988498e186f14f3"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0a74d12efe92f903e988498e186f14f3">equalize_histogram</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a0a74d12efe92f903e988498e186f14f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e299391211e64c686293e7ef60d3b6c"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a3e299391211e64c686293e7ef60d3b6c"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3e299391211e64c686293e7ef60d3b6c">erode</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value)</td></tr>
<tr class="separator:a3e299391211e64c686293e7ef60d3b6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8afa820728a53d688001bbc32fe1af29"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8afa820728a53d688001bbc32fe1af29">erode</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a8afa820728a53d688001bbc32fe1af29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8fdbdfcbf8a538569a6b7cd468eca939"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a8fdbdfcbf8a538569a6b7cd468eca939"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8fdbdfcbf8a538569a6b7cd468eca939">fast_corners</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float input_thresh, bool suppress_nonmax, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value)</td></tr>
<tr class="separator:a8fdbdfcbf8a538569a6b7cd468eca939"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af72060f4e8f90c4688e01555a35b6ba9"><td class="memItemLeft" align="right" valign="top">template std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af72060f4e8f90c4688e01555a35b6ba9">fast_corners</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, bool suppress_nonmax, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:af72060f4e8f90c4688e01555a35b6ba9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4004cfdf19063051ee8a13c923d0cef"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa4004cfdf19063051ee8a13c923d0cef"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa4004cfdf19063051ee8a13c923d0cef">flatten_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;shape_flatten)</td></tr>
<tr class="separator:aa4004cfdf19063051ee8a13c923d0cef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adae5cd655f70e8d16aa37e2131228a39"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#adae5cd655f70e8d16aa37e2131228a39">flatten_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;shape_flatten)</td></tr>
<tr class="separator:adae5cd655f70e8d16aa37e2131228a39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb52b11c9ad45bb81b2c23f87ca39d7f"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#abb52b11c9ad45bb81b2c23f87ca39d7f">flatten_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;shape_flatten)</td></tr>
<tr class="separator:abb52b11c9ad45bb81b2c23f87ca39d7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c81be98812b8cb462be45d9e3d21464"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6c81be98812b8cb462be45d9e3d21464"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6c81be98812b8cb462be45d9e3d21464">floor_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a6c81be98812b8cb462be45d9e3d21464"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c4d49f01ccc1f08a454e2f7d7d02984"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4c4d49f01ccc1f08a454e2f7d7d02984">floor_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a4c4d49f01ccc1f08a454e2f7d7d02984"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0aa1e471728da9ae3dd19f50fa4ef1b0"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0aa1e471728da9ae3dd19f50fa4ef1b0">floor_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a0aa1e471728da9ae3dd19f50fa4ef1b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19058c3fcd05340e689ac471e83125fb"><td class="memTemplParams" colspan="2">template&lt;typename T , typename TB &gt; </td></tr>
<tr class="memitem:a19058c3fcd05340e689ac471e83125fb"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a19058c3fcd05340e689ac471e83125fb">fully_connected_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TB &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> out_quant_info)</td></tr>
<tr class="separator:a19058c3fcd05340e689ac471e83125fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a578d21684a8be774e23e63cce4a62b40"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a578d21684a8be774e23e63cce4a62b40">fully_connected_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> out_quant_info)</td></tr>
<tr class="separator:a578d21684a8be774e23e63cce4a62b40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5035119f8f96bd22ea52c41abede5b10"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5035119f8f96bd22ea52c41abede5b10">fully_connected_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> out_quant_info)</td></tr>
<tr class="separator:a5035119f8f96bd22ea52c41abede5b10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0dd19ebc258d83f2ceb4dd82ec22f4b4"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0dd19ebc258d83f2ceb4dd82ec22f4b4">fully_connected_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> out_quant_info)</td></tr>
<tr class="separator:a0dd19ebc258d83f2ceb4dd82ec22f4b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac782f6a44d255d7e8b228e66847fb1f1"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ac782f6a44d255d7e8b228e66847fb1f1"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac782f6a44d255d7e8b228e66847fb1f1">fuse_batch_normalization_dwc_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;var, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;w_fused, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;b_fused, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;beta, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;gamma, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)</td></tr>
<tr class="separator:ac782f6a44d255d7e8b228e66847fb1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e29dddee636737f78c86b4fae2739eb"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a3e29dddee636737f78c86b4fae2739eb"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3e29dddee636737f78c86b4fae2739eb">fuse_batch_normalization_conv_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;var, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;w_fused, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;b_fused, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;beta, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;gamma, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)</td></tr>
<tr class="separator:a3e29dddee636737f78c86b4fae2739eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cfe79a04d875885597e4d37df4d634f"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8cfe79a04d875885597e4d37df4d634f">fuse_batch_normalization_dwc_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;var, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;w_fused, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;b_fused, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;beta, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;gamma, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)</td></tr>
<tr class="separator:a8cfe79a04d875885597e4d37df4d634f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeca7e17be27219cf39a476d9e63f45f1"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aeca7e17be27219cf39a476d9e63f45f1">fuse_batch_normalization_dwc_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;var, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;w_fused, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;b_fused, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;beta, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;gamma, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)</td></tr>
<tr class="separator:aeca7e17be27219cf39a476d9e63f45f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa51c8b8a5b6bf9ba82a81ca205f06725"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa51c8b8a5b6bf9ba82a81ca205f06725">fuse_batch_normalization_conv_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;var, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;w_fused, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;b_fused, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;beta, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;gamma, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)</td></tr>
<tr class="separator:aa51c8b8a5b6bf9ba82a81ca205f06725"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afabcd35cc620facb8b136711b97085df"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#afabcd35cc620facb8b136711b97085df">fuse_batch_normalization_conv_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;var, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;w_fused, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;b_fused, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;beta, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;gamma, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)</td></tr>
<tr class="separator:afabcd35cc620facb8b136711b97085df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f80b30bc2860eaccce94e4bf5f088b3"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a8f80b30bc2860eaccce94e4bf5f088b3"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8f80b30bc2860eaccce94e4bf5f088b3">gather</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;indices, uint32_t actual_axis)</td></tr>
<tr class="separator:a8f80b30bc2860eaccce94e4bf5f088b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5eef4dcc5f9cdbcdea67edd255ba51b"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad5eef4dcc5f9cdbcdea67edd255ba51b">gather</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;indices, uint32_t actual_axis)</td></tr>
<tr class="separator:ad5eef4dcc5f9cdbcdea67edd255ba51b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47fe378d33f576c6aca07cfdcddbfc75"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a47fe378d33f576c6aca07cfdcddbfc75">gather</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;indices, uint32_t actual_axis)</td></tr>
<tr class="separator:a47fe378d33f576c6aca07cfdcddbfc75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2a75a353eaba22c2b78981f2b6864f5"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa2a75a353eaba22c2b78981f2b6864f5">gather</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;indices, uint32_t actual_axis)</td></tr>
<tr class="separator:aa2a75a353eaba22c2b78981f2b6864f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad68b47495b45117a1b6a4357465beea9"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad68b47495b45117a1b6a4357465beea9">gather</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;indices, uint32_t actual_axis)</td></tr>
<tr class="separator:ad68b47495b45117a1b6a4357465beea9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08625a89b22993b65e923139bdf3b9e1"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a08625a89b22993b65e923139bdf3b9e1"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a08625a89b22993b65e923139bdf3b9e1">gaussian3x3</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value)</td></tr>
<tr class="separator:a08625a89b22993b65e923139bdf3b9e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bf5cc0e54ac74aee07c3034844a27f8"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0bf5cc0e54ac74aee07c3034844a27f8">gaussian3x3</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a0bf5cc0e54ac74aee07c3034844a27f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae74885d96f07f242e6974979cce5673b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae74885d96f07f242e6974979cce5673b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae74885d96f07f242e6974979cce5673b">gaussian5x5</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value)</td></tr>
<tr class="separator:ae74885d96f07f242e6974979cce5673b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45e01cc48f39327d25187bfc0ab27287"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a45e01cc48f39327d25187bfc0ab27287">gaussian5x5</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a45e01cc48f39327d25187bfc0ab27287"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42c972f3c96f7c91c57a7aaf2068fddf"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a42c972f3c96f7c91c57a7aaf2068fddf"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a42c972f3c96f7c91c57a7aaf2068fddf">gaussian_pyramid_half</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value, size_t num_levels)</td></tr>
<tr class="separator:a42c972f3c96f7c91c57a7aaf2068fddf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31bb861d20e67b3ac6f1b11bd2fa69e3"><td class="memItemLeft" align="right" valign="top">template std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a31bb861d20e67b3ac6f1b11bd2fa69e3">gaussian_pyramid_half</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value, size_t num_levels)</td></tr>
<tr class="separator:a31bb861d20e67b3ac6f1b11bd2fa69e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8bf3ead30905547609084db58ee70de"><td class="memTemplParams" colspan="2">template&lt;typename T , typename std::enable_if&lt; is_floating_point&lt; T &gt;::value, int &gt;::type &gt; </td></tr>
<tr class="memitem:aa8bf3ead30905547609084db58ee70de"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa8bf3ead30905547609084db58ee70de">gemm</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;c, float <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3161c2c93c655dd30953372064ec627b">alpha</a>, float beta)</td></tr>
<tr class="separator:aa8bf3ead30905547609084db58ee70de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc8055ed1ae62ec87a4b389047c1464a"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acc8055ed1ae62ec87a4b389047c1464a">gemm</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;c, float <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3161c2c93c655dd30953372064ec627b">alpha</a>, float beta)</td></tr>
<tr class="separator:acc8055ed1ae62ec87a4b389047c1464a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae62fed24d8b0bf2e0b74d81bbe92df38"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae62fed24d8b0bf2e0b74d81bbe92df38">gemm</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;c, float <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3161c2c93c655dd30953372064ec627b">alpha</a>, float beta)</td></tr>
<tr class="separator:ae62fed24d8b0bf2e0b74d81bbe92df38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c7a185c57e14305617f6d5a414cdaea"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a1c7a185c57e14305617f6d5a414cdaea"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1c7a185c57e14305617f6d5a414cdaea">gemm_interleave_4x4</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;out)</td></tr>
<tr class="separator:a1c7a185c57e14305617f6d5a414cdaea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a590054c13a2fe6eddcb35bbe11129a9d"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a590054c13a2fe6eddcb35bbe11129a9d"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a590054c13a2fe6eddcb35bbe11129a9d">safe_read</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;t, int y, int x)</td></tr>
<tr class="separator:a590054c13a2fe6eddcb35bbe11129a9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10d3d399b4d9f8f031db4cab7cf1d5a6"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a10d3d399b4d9f8f031db4cab7cf1d5a6"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a10d3d399b4d9f8f031db4cab7cf1d5a6">gemm_interleave_blocked</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;out, int int_by, int block, bool transposed)</td></tr>
<tr class="separator:a10d3d399b4d9f8f031db4cab7cf1d5a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f1a4edb3071e8adb00bd748211954f2"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1f1a4edb3071e8adb00bd748211954f2">gemm_interleave_blocked</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;in, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;out, int int_by, int block, bool transposed)</td></tr>
<tr class="separator:a1f1a4edb3071e8adb00bd748211954f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74776be88be65092fe631a3313f46ab5"><td class="memTemplParams" colspan="2">template&lt;typename T_out , typename T_in &gt; </td></tr>
<tr class="memitem:a74776be88be65092fe631a3313f46ab5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T_out &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a74776be88be65092fe631a3313f46ab5">gemmlowp_matrix_multiply_core</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T_in &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T_in &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> shape_c, int32_t a_offset, int32_t b_offset)</td></tr>
<tr class="separator:a74776be88be65092fe631a3313f46ab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af18f21173e19d772347089a2839351b8"><td class="memTemplParams" colspan="2">template&lt;typename T1 , typename T2 &gt; </td></tr>
<tr class="memitem:af18f21173e19d772347089a2839351b8"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af18f21173e19d772347089a2839351b8">gemmlowp</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> shape_c)</td></tr>
<tr class="separator:af18f21173e19d772347089a2839351b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa74f872dcd4daaaa3ef53e8ab628b606"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa74f872dcd4daaaa3ef53e8ab628b606"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa74f872dcd4daaaa3ef53e8ab628b606">gemmlowp_quantize_down_int32_to_uint8_scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, int32_t result_offset, int32_t result_mult_int, int32_t result_shift, int32_t min, int32_t max)</td></tr>
<tr class="separator:aa74f872dcd4daaaa3ef53e8ab628b606"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32a9b5d6bd895eb4a431ed762a6891c1"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a32a9b5d6bd895eb4a431ed762a6891c1"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a32a9b5d6bd895eb4a431ed762a6891c1">gemmlowp_quantize_down_int32_to_uint8_scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, int32_t result_offset, int32_t result_mult_int, int32_t result_shift, int32_t min, int32_t max)</td></tr>
<tr class="separator:a32a9b5d6bd895eb4a431ed762a6891c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06197dfafd5455257cec13e414cce105"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a06197dfafd5455257cec13e414cce105"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a06197dfafd5455257cec13e414cce105">gemmlowp_quantize_down_int32_to_uint8_scale_by_fixedpoint</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, int32_t result_fixedpoint_multiplier, int32_t result_shift, int32_t result_offset_after_shift, int32_t min, int32_t max)</td></tr>
<tr class="separator:a06197dfafd5455257cec13e414cce105"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43a9895cb024f65fd294a76b51a16092"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a43a9895cb024f65fd294a76b51a16092"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a43a9895cb024f65fd294a76b51a16092">gemmlowp_quantize_down_int32_to_uint8_scale_by_fixedpoint</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, int32_t result_fixedpoint_multiplier, int32_t result_shift, int32_t result_offset_after_shift, int32_t min, int32_t max)</td></tr>
<tr class="separator:a43a9895cb024f65fd294a76b51a16092"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a344296b0ad06f8e867f95658d59ecdeb"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a344296b0ad06f8e867f95658d59ecdeb"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a344296b0ad06f8e867f95658d59ecdeb">gemmlowp_quantize_down_int32_to_int16_scale_by_fixedpoint</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, int32_t result_fixedpoint_multiplier, int32_t result_shift, int32_t min, int32_t max)</td></tr>
<tr class="separator:a344296b0ad06f8e867f95658d59ecdeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac64d1c55d1ebc90fe55a46c35682e759"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ac64d1c55d1ebc90fe55a46c35682e759"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac64d1c55d1ebc90fe55a46c35682e759">gemmlowp_quantize_down_int32_to_int16_scale_by_fixedpoint</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, int32_t result_fixedpoint_multiplier, int32_t result_shift, int32_t min, int32_t max)</td></tr>
<tr class="separator:ac64d1c55d1ebc90fe55a46c35682e759"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a888efca762d4f8630e32ed6463c307c2"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a888efca762d4f8630e32ed6463c307c2">gemmlowp_quantize_down_int32_to_uint8_scale_by_fixedpoint</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;a, int32_t result_fixedpoint_multiplier, int32_t result_shift, int32_t result_offset_after_shift, int32_t min, int32_t max)</td></tr>
<tr class="separator:a888efca762d4f8630e32ed6463c307c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a484883f5b7128e47bbb309fe69e2dc9e"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a484883f5b7128e47bbb309fe69e2dc9e">gemmlowp_quantize_down_int32_to_uint8_scale_by_fixedpoint</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, int32_t result_fixedpoint_multiplier, int32_t result_shift, int32_t result_offset_after_shift, int32_t min, int32_t max)</td></tr>
<tr class="separator:a484883f5b7128e47bbb309fe69e2dc9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a010c6a6e3fc97633cbfb906109649043"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a010c6a6e3fc97633cbfb906109649043">gemmlowp_quantize_down_int32_to_int16_scale_by_fixedpoint</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;a, int32_t result_fixedpoint_multiplier, int32_t result_shift, int32_t min, int32_t max)</td></tr>
<tr class="separator:a010c6a6e3fc97633cbfb906109649043"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56fe7cb2ed4faa67052cdb6fcaf6b4a8"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a56fe7cb2ed4faa67052cdb6fcaf6b4a8">gemmlowp_quantize_down_int32_to_int16_scale_by_fixedpoint</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, int32_t result_fixedpoint_multiplier, int32_t result_shift, int32_t min, int32_t max)</td></tr>
<tr class="separator:a56fe7cb2ed4faa67052cdb6fcaf6b4a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0563116df3cccec27da440428c33be03"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0563116df3cccec27da440428c33be03">gemmlowp_quantize_down_int32_to_uint8_scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;a, int32_t result_offset, int32_t result_mult_int, int32_t result_shift, int32_t min, int32_t max)</td></tr>
<tr class="separator:a0563116df3cccec27da440428c33be03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff1df000a6579a92f6b98716d41b339f"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aff1df000a6579a92f6b98716d41b339f">gemmlowp_quantize_down_int32_to_uint8_scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, int32_t result_offset, int32_t result_mult_int, int32_t result_shift, int32_t min, int32_t max)</td></tr>
<tr class="separator:aff1df000a6579a92f6b98716d41b339f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb05c56daf457ea9389411a5308ec15c"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#afb05c56daf457ea9389411a5308ec15c">gemmlowp_matrix_multiply_core</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> shape_c, int32_t a_offset, int32_t b_offset)</td></tr>
<tr class="separator:afb05c56daf457ea9389411a5308ec15c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad373c5f86e5eb3d150f78fe030814b2c"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad373c5f86e5eb3d150f78fe030814b2c">gemmlowp_matrix_multiply_core</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> shape_c, int32_t a_offset, int32_t b_offset)</td></tr>
<tr class="separator:ad373c5f86e5eb3d150f78fe030814b2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae98f7881ffb0ec70363b1e58f3ffff26"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae98f7881ffb0ec70363b1e58f3ffff26">gemmlowp</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> shape_c)</td></tr>
<tr class="separator:ae98f7881ffb0ec70363b1e58f3ffff26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab15d9a14f95a70cefeaccb69a471d461"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab15d9a14f95a70cefeaccb69a471d461">gemmlowp</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> shape_c)</td></tr>
<tr class="separator:ab15d9a14f95a70cefeaccb69a471d461"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37da19bcb7b529afd0af2eb85edbb110"><td class="memTemplParams" colspan="2">template&lt;typename T1 , typename T2 &gt; </td></tr>
<tr class="memitem:a37da19bcb7b529afd0af2eb85edbb110"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a37da19bcb7b529afd0af2eb85edbb110">gemmlowp_matrix_multiply_core</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; &amp;a, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> shape_c, int32_t a_offset, int32_t b_offset)</td></tr>
<tr class="separator:a37da19bcb7b529afd0af2eb85edbb110"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a108287f3fa07031a58de6cd4b62f000b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a108287f3fa07031a58de6cd4b62f000b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a108287f3fa07031a58de6cd4b62f000b">gemmlowp_quantize_down_int32_to_uint8_scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, int32_t result_offset, int32_t result_mult_int, int32_t result_shift)</td></tr>
<tr class="separator:a108287f3fa07031a58de6cd4b62f000b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7da8e015c6426ba7a9d756d3cd12e248"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a7da8e015c6426ba7a9d756d3cd12e248"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a7da8e015c6426ba7a9d756d3cd12e248">gemm_reshape_lhs_matrix</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_g_e_m_m_l_h_s_matrix_info.xhtml">GEMMLHSMatrixInfo</a> &amp;lhs_info)</td></tr>
<tr class="separator:a7da8e015c6426ba7a9d756d3cd12e248"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9af4cb54790f494bf6403a522ee50ee"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae9af4cb54790f494bf6403a522ee50ee">gemm_reshape_lhs_matrix</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_g_e_m_m_l_h_s_matrix_info.xhtml">GEMMLHSMatrixInfo</a> &amp;lhs_info)</td></tr>
<tr class="separator:ae9af4cb54790f494bf6403a522ee50ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0c4372fbbdd64fdcacb7a5ee04f8f4a"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; short &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af0c4372fbbdd64fdcacb7a5ee04f8f4a">gemm_reshape_lhs_matrix</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; short &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_g_e_m_m_l_h_s_matrix_info.xhtml">GEMMLHSMatrixInfo</a> &amp;lhs_info)</td></tr>
<tr class="separator:af0c4372fbbdd64fdcacb7a5ee04f8f4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24b8e6a6c01dc309d0f4e6c7b882c9f0"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a24b8e6a6c01dc309d0f4e6c7b882c9f0">gemm_reshape_lhs_matrix</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; char &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_g_e_m_m_l_h_s_matrix_info.xhtml">GEMMLHSMatrixInfo</a> &amp;lhs_info)</td></tr>
<tr class="separator:a24b8e6a6c01dc309d0f4e6c7b882c9f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af33c441c06448d09c4562780d09f5f6f"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:af33c441c06448d09c4562780d09f5f6f"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af33c441c06448d09c4562780d09f5f6f">gemm_reshape_rhs_matrix</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_g_e_m_m_r_h_s_matrix_info.xhtml">GEMMRHSMatrixInfo</a> &amp;rhs_info)</td></tr>
<tr class="separator:af33c441c06448d09c4562780d09f5f6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4347e8d79fd2976ada851fb08d8cb35c"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4347e8d79fd2976ada851fb08d8cb35c">gemm_reshape_rhs_matrix</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_g_e_m_m_r_h_s_matrix_info.xhtml">GEMMRHSMatrixInfo</a> &amp;rhs_info)</td></tr>
<tr class="separator:a4347e8d79fd2976ada851fb08d8cb35c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02244b4489fc1f1f15c7f62ff65c2855"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; short &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a02244b4489fc1f1f15c7f62ff65c2855">gemm_reshape_rhs_matrix</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; short &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_g_e_m_m_r_h_s_matrix_info.xhtml">GEMMRHSMatrixInfo</a> &amp;rhs_info)</td></tr>
<tr class="separator:a02244b4489fc1f1f15c7f62ff65c2855"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad4b2a5e867463dae62b25f4f3ab2274"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aad4b2a5e867463dae62b25f4f3ab2274">gemm_reshape_rhs_matrix</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; char &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_g_e_m_m_r_h_s_matrix_info.xhtml">GEMMRHSMatrixInfo</a> &amp;rhs_info)</td></tr>
<tr class="separator:aad4b2a5e867463dae62b25f4f3ab2274"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cc178cdce0a90f66bba02b5e985f1ad"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a5cc178cdce0a90f66bba02b5e985f1ad"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5cc178cdce0a90f66bba02b5e985f1ad">gemm_transpose_1xW</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in)</td></tr>
<tr class="separator:a5cc178cdce0a90f66bba02b5e985f1ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc64cfa88bef3958e1603bfca23db47a"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:adc64cfa88bef3958e1603bfca23db47a"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#adc64cfa88bef3958e1603bfca23db47a">harris_corner_detector</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, float min_dist, float sensitivity, int gradient_size, int block_size, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value)</td></tr>
<tr class="separator:adc64cfa88bef3958e1603bfca23db47a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2ac7813f2c360028d700e7feb88afca"><td class="memItemLeft" align="right" valign="top">template std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab2ac7813f2c360028d700e7feb88afca">harris_corner_detector</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, float min_dist, float sensitivity, int gradient_size, int block_size, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:ab2ac7813f2c360028d700e7feb88afca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c37b244d8aec5993e58b2c7f67d936d"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a8c37b244d8aec5993e58b2c7f67d936d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8c37b244d8aec5993e58b2c7f67d936d">histogram</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, size_t num_bins, int32_t <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a87f09c74765be18a99038478f96daf9b">range</a>)</td></tr>
<tr class="separator:a8c37b244d8aec5993e58b2c7f67d936d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bdebe304d72f6d01d0dbf3e3b22ae69"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9bdebe304d72f6d01d0dbf3e3b22ae69">histogram</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, size_t num_bins, int32_t <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>, uint32_t <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a87f09c74765be18a99038478f96daf9b">range</a>)</td></tr>
<tr class="separator:a9bdebe304d72f6d01d0dbf3e3b22ae69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed58e449c2d482b55d61ee6bfd0de984"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , typename V &gt; </td></tr>
<tr class="memitem:aed58e449c2d482b55d61ee6bfd0de984"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aed58e449c2d482b55d61ee6bfd0de984">hog_orientation_binning</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;mag, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a74991bda4fcca3ce5dcf8afdccdbafff">phase</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; V &gt; &amp;hog_space, const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;hog_info)</td></tr>
<tr class="separator:aed58e449c2d482b55d61ee6bfd0de984"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae01f1c200a32d41a056d513760981326"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae01f1c200a32d41a056d513760981326"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae01f1c200a32d41a056d513760981326">hog_block_normalization</a> (<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;desc, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;hog_space, const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;hog_info)</td></tr>
<tr class="separator:ae01f1c200a32d41a056d513760981326"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0803d3eb7f6177d7ff8eb49cf0772ab"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
<tr class="memitem:aa0803d3eb7f6177d7ff8eb49cf0772ab"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa0803d3eb7f6177d7ff8eb49cf0772ab">hog_descriptor</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, U constant_border_value, const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;hog_info)</td></tr>
<tr class="separator:aa0803d3eb7f6177d7ff8eb49cf0772ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9b136833d189cdd3b4b600d086e3df8"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af9b136833d189cdd3b4b600d086e3df8">hog_orientation_binning</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;mag, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a74991bda4fcca3ce5dcf8afdccdbafff">phase</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;hog_space, const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;hog_info)</td></tr>
<tr class="separator:af9b136833d189cdd3b4b600d086e3df8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c596a1343dd6f603067007a9709320c"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3c596a1343dd6f603067007a9709320c">hog_block_normalization</a> (<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;desc, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;hog_space, const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;hog_info)</td></tr>
<tr class="separator:a3c596a1343dd6f603067007a9709320c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abadb8b3a6c895e1a036bd7a2bcd90fae"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#abadb8b3a6c895e1a036bd7a2bcd90fae">hog_descriptor</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value, const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;hog_info)</td></tr>
<tr class="separator:abadb8b3a6c895e1a036bd7a2bcd90fae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a174ee1e2e66053db45c7fb4aa68920e7"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a174ee1e2e66053db45c7fb4aa68920e7"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structarm__compute_1_1_detection_window.xhtml">DetectionWindow</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a174ee1e2e66053db45c7fb4aa68920e7">hog_detector</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const std::vector&lt; T &gt; &amp;descriptor, unsigned int max_num_detection_windows, const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;hog_info, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;detection_window_stride, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, uint16_t idx_class)</td></tr>
<tr class="separator:a174ee1e2e66053db45c7fb4aa68920e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14beb45540f52c683f45bada3f6e9aa7"><td class="memItemLeft" align="right" valign="top">template std::vector&lt; <a class="el" href="structarm__compute_1_1_detection_window.xhtml">DetectionWindow</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a14beb45540f52c683f45bada3f6e9aa7">hog_detector</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const std::vector&lt; float &gt; &amp;descriptor, unsigned int max_num_detection_windows, const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;hog_info, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;detection_window_stride, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, uint16_t idx_class)</td></tr>
<tr class="separator:a14beb45540f52c683f45bada3f6e9aa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a206dcc57b5f0396164931c3e65f52e20"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a206dcc57b5f0396164931c3e65f52e20">detection_windows_non_maxima_suppression</a> (std::vector&lt; <a class="el" href="structarm__compute_1_1_detection_window.xhtml">DetectionWindow</a> &gt; &amp;multi_windows, float min_distance)</td></tr>
<tr class="separator:a206dcc57b5f0396164931c3e65f52e20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a350c5856a7fb88d1cdbd4fb7b4511be3"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a350c5856a7fb88d1cdbd4fb7b4511be3"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structarm__compute_1_1_detection_window.xhtml">DetectionWindow</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a350c5856a7fb88d1cdbd4fb7b4511be3">hog_multi_detection</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value, const std::vector&lt; <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &gt; &amp;models, std::vector&lt; std::vector&lt; float &gt;&gt; descriptors, unsigned int max_num_detection_windows, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, bool <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a60e89e48713565425943913adec65294">non_maxima_suppression</a>, float min_distance)</td></tr>
<tr class="separator:a350c5856a7fb88d1cdbd4fb7b4511be3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd89be5954da617b3031d84c9ebcd81a"><td class="memItemLeft" align="right" valign="top">template std::vector&lt; <a class="el" href="structarm__compute_1_1_detection_window.xhtml">DetectionWindow</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#abd89be5954da617b3031d84c9ebcd81a">hog_multi_detection</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value, const std::vector&lt; <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &gt; &amp;models, std::vector&lt; std::vector&lt; float &gt;&gt; descriptors, unsigned int max_num_detection_windows, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, bool <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a60e89e48713565425943913adec65294">non_maxima_suppression</a>, float min_distance)</td></tr>
<tr class="separator:abd89be5954da617b3031d84c9ebcd81a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad986200da9376a05059064b4e0372445"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad986200da9376a05059064b4e0372445"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad986200da9376a05059064b4e0372445">im2col_nchw</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;kernel_dims, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>, bool <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:ad986200da9376a05059064b4e0372445"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a676e94ff38d81a5794e2bf69008c5137"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a676e94ff38d81a5794e2bf69008c5137"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a676e94ff38d81a5794e2bf69008c5137">im2col_nhwc</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;kernel_dims, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>, bool <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a>)</td></tr>
<tr class="separator:a676e94ff38d81a5794e2bf69008c5137"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77f0a04bc3f800ccd330df1170e76344"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a77f0a04bc3f800ccd330df1170e76344"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a77f0a04bc3f800ccd330df1170e76344">im2col</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;kernel_dims, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>, bool <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:a77f0a04bc3f800ccd330df1170e76344"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53c6c871275a6e678cdc9e6f2d9ee872"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a53c6c871275a6e678cdc9e6f2d9ee872">im2col</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;kernel_dims, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>, bool <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:a53c6c871275a6e678cdc9e6f2d9ee872"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad77dc54e222c3f36e9de88a70b6572af"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad77dc54e222c3f36e9de88a70b6572af">im2col</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;kernel_dims, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>, bool <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:ad77dc54e222c3f36e9de88a70b6572af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6895d72078004becb83ec54725ff384"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad6895d72078004becb83ec54725ff384">im2col</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;kernel_dims, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>, bool <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:ad6895d72078004becb83ec54725ff384"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d4691ec28061cbb6e38600f5f78a9bf"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6d4691ec28061cbb6e38600f5f78a9bf"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6d4691ec28061cbb6e38600f5f78a9bf">integral_image</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a6d4691ec28061cbb6e38600f5f78a9bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a751a624d19add33a7c81b6260386d550"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a751a624d19add33a7c81b6260386d550">integral_image</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a751a624d19add33a7c81b6260386d550"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a238d3ab8cdae100387631d6491204c6b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a238d3ab8cdae100387631d6491204c6b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a238d3ab8cdae100387631d6491204c6b">l2_normalize</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)</td></tr>
<tr class="separator:a238d3ab8cdae100387631d6491204c6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0e1f08a54d6896f4d1e7b5ee7f54852"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af0e1f08a54d6896f4d1e7b5ee7f54852">l2_normalize</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)</td></tr>
<tr class="separator:af0e1f08a54d6896f4d1e7b5ee7f54852"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a194b7346b3a91ac2e895ffc2a71df59f"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a194b7346b3a91ac2e895ffc2a71df59f">l2_normalize</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)</td></tr>
<tr class="separator:a194b7346b3a91ac2e895ffc2a71df59f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9690bfc083c18c7ec979778313b4a31a"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
<tr class="memitem:a9690bfc083c18c7ec979778313b4a31a"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9690bfc083c18c7ec979778313b4a31a">laplacian_pyramid</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, size_t num_levels, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a9690bfc083c18c7ec979778313b4a31a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a003f24c0e07ebd5b89e1f2ada836c56d"><td class="memItemLeft" align="right" valign="top">template std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a003f24c0e07ebd5b89e1f2ada836c56d">laplacian_pyramid</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, size_t num_levels, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a003f24c0e07ebd5b89e1f2ada836c56d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0a9e8fb83e2019bcd3d8ce483a98b7a"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
<tr class="memitem:ab0a9e8fb83e2019bcd3d8ce483a98b7a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab0a9e8fb83e2019bcd3d8ce483a98b7a">laplacian_reconstruct</a> (const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;pyramid, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;low_res, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value)</td></tr>
<tr class="separator:ab0a9e8fb83e2019bcd3d8ce483a98b7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4794e4b738ec7107c503c2b67c63d28c"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4794e4b738ec7107c503c2b67c63d28c">laplacian_reconstruct</a> (const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&gt; &amp;pyramid, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;low_res, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, int16_t constant_border_value)</td></tr>
<tr class="separator:a4794e4b738ec7107c503c2b67c63d28c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2ec089a63eb5f7980a98d7ac1ef8377"><td class="memTemplParams" colspan="2">template&lt;typename T , typename TB &gt; </td></tr>
<tr class="memitem:ac2ec089a63eb5f7980a98d7ac1ef8377"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac2ec089a63eb5f7980a98d7ac1ef8377">locally_connected</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TB &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:ac2ec089a63eb5f7980a98d7ac1ef8377"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86290449cccd9f7ea563247982525a64"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86290449cccd9f7ea563247982525a64">locally_connected</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:a86290449cccd9f7ea563247982525a64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6aa278cb3dd1777e7338c5e573c55550"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6aa278cb3dd1777e7338c5e573c55550"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6aa278cb3dd1777e7338c5e573c55550">magnitude</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;gx, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;gy, <a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8a">MagnitudeType</a> magnitude_type)</td></tr>
<tr class="separator:a6aa278cb3dd1777e7338c5e573c55550"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a995eabbadd759c83f7b7aab6e10e9233"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a995eabbadd759c83f7b7aab6e10e9233">magnitude</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;gx, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;gy, <a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8a">MagnitudeType</a> magnitude_type)</td></tr>
<tr class="separator:a995eabbadd759c83f7b7aab6e10e9233"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff3d2b7e208311d2634462aa53e9fc18"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aff3d2b7e208311d2634462aa53e9fc18">magnitude</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;gx, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;gy, <a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8a">MagnitudeType</a> magnitude_type)</td></tr>
<tr class="separator:aff3d2b7e208311d2634462aa53e9fc18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ecd02d1b87ae5c50785537bf549839c"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4ecd02d1b87ae5c50785537bf549839c">magnitude</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt; &amp;gx, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt; &amp;gy, <a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8a">MagnitudeType</a> magnitude_type)</td></tr>
<tr class="separator:a4ecd02d1b87ae5c50785537bf549839c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcceed1cef9bd62b3429d3f76e577a23"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:afcceed1cef9bd62b3429d3f76e577a23"><td class="memTemplItemLeft" align="right" valign="top">std::pair&lt; float, float &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#afcceed1cef9bd62b3429d3f76e577a23">mean_and_standard_deviation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in)</td></tr>
<tr class="separator:afcceed1cef9bd62b3429d3f76e577a23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4bbe9971a7eab2c7bb6b54dabaf479bf"><td class="memItemLeft" align="right" valign="top">template std::pair&lt; float, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4bbe9971a7eab2c7bb6b54dabaf479bf">mean_and_standard_deviation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;in)</td></tr>
<tr class="separator:a4bbe9971a7eab2c7bb6b54dabaf479bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8fa5489b6395e4cd345ae8a8f79262fe"><td class="memItemLeft" align="right" valign="top">template std::pair&lt; float, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8fa5489b6395e4cd345ae8a8f79262fe">mean_and_standard_deviation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;in)</td></tr>
<tr class="separator:a8fa5489b6395e4cd345ae8a8f79262fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76652eb381d1ad287ff36406afeb0b4b"><td class="memItemLeft" align="right" valign="top">template std::pair&lt; float, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a76652eb381d1ad287ff36406afeb0b4b">mean_and_standard_deviation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;in)</td></tr>
<tr class="separator:a76652eb381d1ad287ff36406afeb0b4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad35074fa5aa39e91e7be93874e2d74e9"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad35074fa5aa39e91e7be93874e2d74e9"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad35074fa5aa39e91e7be93874e2d74e9">mean_std_normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)</td></tr>
<tr class="separator:ad35074fa5aa39e91e7be93874e2d74e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa01e1da4cc3b11788abc05216ca47d4f"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa01e1da4cc3b11788abc05216ca47d4f">mean_std_normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)</td></tr>
<tr class="separator:aa01e1da4cc3b11788abc05216ca47d4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac68ca27cab0460a2faae3a7c506d039e"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac68ca27cab0460a2faae3a7c506d039e">mean_std_normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float <a class="el" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)</td></tr>
<tr class="separator:ac68ca27cab0460a2faae3a7c506d039e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae13ed48f0f93acb42471988aff2315f"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aae13ed48f0f93acb42471988aff2315f"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aae13ed48f0f93acb42471988aff2315f">median3x3</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value)</td></tr>
<tr class="separator:aae13ed48f0f93acb42471988aff2315f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd2e9da442a47eddd47a970da14f5bc0"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acd2e9da442a47eddd47a970da14f5bc0">median3x3</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:acd2e9da442a47eddd47a970da14f5bc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9585c7c2f19c8c051da1d927d3687e70"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a9585c7c2f19c8c051da1d927d3687e70"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9585c7c2f19c8c051da1d927d3687e70">compute_min_max</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, T &amp;min, T &amp;max)</td></tr>
<tr class="separator:a9585c7c2f19c8c051da1d927d3687e70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5e4b8af4086cce7dac5667735daf91a"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ac5e4b8af4086cce7dac5667735daf91a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structarm__compute_1_1_min_max_location_values.xhtml">MinMaxLocationValues</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac5e4b8af4086cce7dac5667735daf91a">min_max_location</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:ac5e4b8af4086cce7dac5667735daf91a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2647e679a5282c102f65c83d08043a7"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="structarm__compute_1_1_min_max_location_values.xhtml">MinMaxLocationValues</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab2647e679a5282c102f65c83d08043a7">min_max_location</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:ab2647e679a5282c102f65c83d08043a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4de1dd61ace6805d93248d25c0b2caa"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="structarm__compute_1_1_min_max_location_values.xhtml">MinMaxLocationValues</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa4de1dd61ace6805d93248d25c0b2caa">min_max_location</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:aa4de1dd61ace6805d93248d25c0b2caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff675bcce573bbd26e6d531b2e073ab8"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="structarm__compute_1_1_min_max_location_values.xhtml">MinMaxLocationValues</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aff675bcce573bbd26e6d531b2e073ab8">min_max_location</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:aff675bcce573bbd26e6d531b2e073ab8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af00274a4d66faf0892f122870f1d9fd9"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:af00274a4d66faf0892f122870f1d9fd9"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af00274a4d66faf0892f122870f1d9fd9">non_linear_filter</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858">NonLinearFilterFunction</a> function, unsigned int mask_size, <a class="el" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02">MatrixPattern</a> pattern, const uint8_t *mask, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:af00274a4d66faf0892f122870f1d9fd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29d57ba8afd317719a954d18599956cd"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a29d57ba8afd317719a954d18599956cd">non_linear_filter</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858">NonLinearFilterFunction</a> function, unsigned int mask_size, <a class="el" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02">MatrixPattern</a> pattern, const uint8_t *mask, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a29d57ba8afd317719a954d18599956cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60e89e48713565425943913adec65294"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a60e89e48713565425943913adec65294"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a60e89e48713565425943913adec65294">non_maxima_suppression</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value)</td></tr>
<tr class="separator:a60e89e48713565425943913adec65294"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f89718e67b6cc5ce13ce5ea3a789a88"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4f89718e67b6cc5ce13ce5ea3a789a88">non_maxima_suppression</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, float constant_border_value)</td></tr>
<tr class="separator:a4f89718e67b6cc5ce13ce5ea3a789a88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a354498d36b78c3c042d34e44d95b0287"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a354498d36b78c3c042d34e44d95b0287">non_maxima_suppression</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a354498d36b78c3c042d34e44d95b0287"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76dd3fc8793c1e670a54fad76c147781"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a76dd3fc8793c1e670a54fad76c147781">non_max_suppression</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;bboxes, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;scores, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt; &amp;indices, unsigned int max_output_size, float score_threshold, float nms_threshold)</td></tr>
<tr class="separator:a76dd3fc8793c1e670a54fad76c147781"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12f5205aa3c3e8056da83444c0a18c29"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a12f5205aa3c3e8056da83444c0a18c29"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a12f5205aa3c3e8056da83444c0a18c29">normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_normalization_layer_info.xhtml">NormalizationLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:a12f5205aa3c3e8056da83444c0a18c29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a451c44627ad6c06f72667812f2a9782d"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a451c44627ad6c06f72667812f2a9782d">normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_normalization_layer_info.xhtml">NormalizationLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:a451c44627ad6c06f72667812f2a9782d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a677c65b33a30875799e387168f59758e"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a677c65b33a30875799e387168f59758e">normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_normalization_layer_info.xhtml">NormalizationLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>)</td></tr>
<tr class="separator:a677c65b33a30875799e387168f59758e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a039062a11bac2e68d7921e057bacf779"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a039062a11bac2e68d7921e057bacf779"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a039062a11bac2e68d7921e057bacf779">normalize_planar_yuv_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;std)</td></tr>
<tr class="separator:a039062a11bac2e68d7921e057bacf779"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27565b2b0910dcc67b2d93d96d842768"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a27565b2b0910dcc67b2d93d96d842768"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a27565b2b0910dcc67b2d93d96d842768">normalize_planar_yuv_layer&lt; uint8_t &gt;</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;std)</td></tr>
<tr class="separator:a27565b2b0910dcc67b2d93d96d842768"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44bd8f0b704304f77875d948cdc49e33"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a44bd8f0b704304f77875d948cdc49e33">normalize_planar_yuv_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;std)</td></tr>
<tr class="separator:a44bd8f0b704304f77875d948cdc49e33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68b5b2b23cdd66a34348456f30f61a6c"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a68b5b2b23cdd66a34348456f30f61a6c">normalize_planar_yuv_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;std)</td></tr>
<tr class="separator:a68b5b2b23cdd66a34348456f30f61a6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6890d0541805e29cc8cb546ac3ed5239"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6890d0541805e29cc8cb546ac3ed5239"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6890d0541805e29cc8cb546ac3ed5239">optical_flow</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;old_input, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;new_input, const <a class="el" href="structarm__compute_1_1_optical_flow_parameters.xhtml">OpticalFlowParameters</a> &amp;params, size_t num_levels, const std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt; &amp;old_points, const std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt; &amp;new_points_estimates, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a6890d0541805e29cc8cb546ac3ed5239"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26f19ae8201512a91fd07520f23427bd"><td class="memItemLeft" align="right" valign="top">template std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a26f19ae8201512a91fd07520f23427bd">optical_flow</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;old_input, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;new_input, const <a class="el" href="structarm__compute_1_1_optical_flow_parameters.xhtml">OpticalFlowParameters</a> &amp;params, size_t num_levels, const std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt; &amp;old_points, const std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt; &amp;new_points_estimates, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a26f19ae8201512a91fd07520f23427bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5901f29f666658b04856010acaeb0b1"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ab5901f29f666658b04856010acaeb0b1"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab5901f29f666658b04856010acaeb0b1">pad_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;paddings, const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a> const_value=<a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>(), const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a> mode=<a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91a8d6b5cada83510220f59e00ce86d4d92">PaddingMode::CONSTANT</a>)</td></tr>
<tr class="memdesc:ab5901f29f666658b04856010acaeb0b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference function to pad an ND tensor. <a href="#ab5901f29f666658b04856010acaeb0b1">More...</a><br /></td></tr>
<tr class="separator:ab5901f29f666658b04856010acaeb0b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c6d10ac572e0e39cc0db38a7189b735"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1c6d10ac572e0e39cc0db38a7189b735">pad_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;paddings, const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a> const_value=<a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>(), const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a> mode)</td></tr>
<tr class="separator:a1c6d10ac572e0e39cc0db38a7189b735"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac61c0f6a22ce0e0a510885846d816a8a"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac61c0f6a22ce0e0a510885846d816a8a">pad_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;paddings, const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a> const_value=<a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>(), const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a> mode)</td></tr>
<tr class="separator:ac61c0f6a22ce0e0a510885846d816a8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69ae4f317cfc7d0072b675531a33ab74"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a69ae4f317cfc7d0072b675531a33ab74">pad_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;paddings, const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a> const_value=<a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>(), const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a> mode)</td></tr>
<tr class="separator:a69ae4f317cfc7d0072b675531a33ab74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8e8ae306295259138783d243ba61fae"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa8e8ae306295259138783d243ba61fae">pad_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;paddings, const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a> const_value=<a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>(), const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a> mode)</td></tr>
<tr class="separator:aa8e8ae306295259138783d243ba61fae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a460474cb174ada8ad1e60774ff0846cd"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a460474cb174ada8ad1e60774ff0846cd">pad_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;paddings, const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a> const_value=<a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>(), const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a> mode)</td></tr>
<tr class="separator:a460474cb174ada8ad1e60774ff0846cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8e373726765a023b352c03745932aa9"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab8e373726765a023b352c03745932aa9">pad_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;paddings, const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a> const_value=<a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>(), const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a> mode)</td></tr>
<tr class="separator:ab8e373726765a023b352c03745932aa9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4eeee531cd0113e10932db991d4221c6"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4eeee531cd0113e10932db991d4221c6">pad_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;paddings, const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a> const_value=<a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>(), const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a> mode)</td></tr>
<tr class="separator:a4eeee531cd0113e10932db991d4221c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb5244bc67431a8ed627e8b2e2d6d460"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:afb5244bc67431a8ed627e8b2e2d6d460"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#afb5244bc67431a8ed627e8b2e2d6d460">permute</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a> perm)</td></tr>
<tr class="separator:afb5244bc67431a8ed627e8b2e2d6d460"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a1560ffa53b6e7ac695e357d8d58bbd"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5a1560ffa53b6e7ac695e357d8d58bbd">permute</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a> perm)</td></tr>
<tr class="separator:a5a1560ffa53b6e7ac695e357d8d58bbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b107aca8287064043bae890e8fa326b"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4b107aca8287064043bae890e8fa326b">permute</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a> perm)</td></tr>
<tr class="separator:a4b107aca8287064043bae890e8fa326b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9658582deedb7a0bc04968bbbb9ec414"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9658582deedb7a0bc04968bbbb9ec414">permute</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a> perm)</td></tr>
<tr class="separator:a9658582deedb7a0bc04968bbbb9ec414"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03e463730fd831157e634c1ec0e95316"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a03e463730fd831157e634c1ec0e95316">permute</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a> perm)</td></tr>
<tr class="separator:a03e463730fd831157e634c1ec0e95316"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c5ed6a7e94da6c172a9ddd508a423c8"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8c5ed6a7e94da6c172a9ddd508a423c8">permute</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a> perm)</td></tr>
<tr class="separator:a8c5ed6a7e94da6c172a9ddd508a423c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b56a65406301c50d2272804e8748f50"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4b56a65406301c50d2272804e8748f50">permute</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a> perm)</td></tr>
<tr class="separator:a4b56a65406301c50d2272804e8748f50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ef6952054605dc92cdd08f7306889af"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0ef6952054605dc92cdd08f7306889af">permute</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a> perm)</td></tr>
<tr class="separator:a0ef6952054605dc92cdd08f7306889af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74991bda4fcca3ce5dcf8afdccdbafff"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a74991bda4fcca3ce5dcf8afdccdbafff"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a74991bda4fcca3ce5dcf8afdccdbafff">phase</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;gx, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;gy, <a class="el" href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72">PhaseType</a> phase_type)</td></tr>
<tr class="separator:a74991bda4fcca3ce5dcf8afdccdbafff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07cef8bbf0ddee4b39e682f3543ad3e4"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a07cef8bbf0ddee4b39e682f3543ad3e4">phase</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;gx, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;gy, <a class="el" href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72">PhaseType</a> phase_type)</td></tr>
<tr class="separator:a07cef8bbf0ddee4b39e682f3543ad3e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2ef542d37d8078c125ffed2bc7a01f0"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa2ef542d37d8078c125ffed2bc7a01f0">phase</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;gx, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;gy, <a class="el" href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72">PhaseType</a> phase_type)</td></tr>
<tr class="separator:aa2ef542d37d8078c125ffed2bc7a01f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40df785bef26dd73b2b0e685828fbd3d"><td class="memTemplParams" colspan="2">template&lt;typename T1 , typename T2 &gt; </td></tr>
<tr class="memitem:a40df785bef26dd73b2b0e685828fbd3d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a40df785bef26dd73b2b0e685828fbd3d">pixel_wise_multiplication</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; &amp;src2, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6d1214c8e51d5c216c257b8c1ce14525">scale</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">rounding_policy</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;qout)</td></tr>
<tr class="separator:a40df785bef26dd73b2b0e685828fbd3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3650f78a89603dc97eaf8c694893cb7"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:af3650f78a89603dc97eaf8c694893cb7"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af3650f78a89603dc97eaf8c694893cb7">pixel_wise_multiplication</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src2, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6d1214c8e51d5c216c257b8c1ce14525">scale</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">rounding_policy</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;qout)</td></tr>
<tr class="separator:af3650f78a89603dc97eaf8c694893cb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad25b73a58f4ea86083a6184ef500f1a4"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ad25b73a58f4ea86083a6184ef500f1a4"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad25b73a58f4ea86083a6184ef500f1a4">pixel_wise_multiplication</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;src2, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6d1214c8e51d5c216c257b8c1ce14525">scale</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">rounding_policy</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;qout)</td></tr>
<tr class="separator:ad25b73a58f4ea86083a6184ef500f1a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d007c8afacba2681bf5545d909ba352"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4d007c8afacba2681bf5545d909ba352">pixel_wise_multiplication</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;src2, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6d1214c8e51d5c216c257b8c1ce14525">scale</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">rounding_policy</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;qout)</td></tr>
<tr class="separator:a4d007c8afacba2681bf5545d909ba352"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2ca90d16f64ee4c422271cae83b020d"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae2ca90d16f64ee4c422271cae83b020d">pixel_wise_multiplication</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src2, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6d1214c8e51d5c216c257b8c1ce14525">scale</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">rounding_policy</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;qout)</td></tr>
<tr class="separator:ae2ca90d16f64ee4c422271cae83b020d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37f0c88b8282108375ca9f94fdf05ba2"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a37f0c88b8282108375ca9f94fdf05ba2">pixel_wise_multiplication</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt; &amp;src2, float <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6d1214c8e51d5c216c257b8c1ce14525">scale</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">rounding_policy</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;qout)</td></tr>
<tr class="separator:a37f0c88b8282108375ca9f94fdf05ba2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa38db3b299b350b91320f4e3a39ee437"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa38db3b299b350b91320f4e3a39ee437"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa38db3b299b350b91320f4e3a39ee437">pooling_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;output_qinfo)</td></tr>
<tr class="separator:aa38db3b299b350b91320f4e3a39ee437"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a917e9b0539263f775435cac95a8836a9"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a917e9b0539263f775435cac95a8836a9"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a917e9b0539263f775435cac95a8836a9">pooling_layer&lt; uint8_t &gt;</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;output_qinfo)</td></tr>
<tr class="separator:a917e9b0539263f775435cac95a8836a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0beab02ef175107dcfd9dc3611d3f2ac"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0beab02ef175107dcfd9dc3611d3f2ac">pooling_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;output_qinfo)</td></tr>
<tr class="separator:a0beab02ef175107dcfd9dc3611d3f2ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ac7877012c2099a41b4d916ddf71505"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5ac7877012c2099a41b4d916ddf71505">pooling_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;output_qinfo)</td></tr>
<tr class="separator:a5ac7877012c2099a41b4d916ddf71505"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae818153eecc4ec9cf48a982e155ed954"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae818153eecc4ec9cf48a982e155ed954"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae818153eecc4ec9cf48a982e155ed954">prior_box_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src2, const <a class="el" href="classarm__compute_1_1_prior_box_layer_info.xhtml">PriorBoxLayerInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:ae818153eecc4ec9cf48a982e155ed954"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c109a38e30fffa792941d8812c03aa2"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5c109a38e30fffa792941d8812c03aa2">prior_box_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src1, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src2, const <a class="el" href="classarm__compute_1_1_prior_box_layer_info.xhtml">PriorBoxLayerInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:a5c109a38e30fffa792941d8812c03aa2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ca6df865d7c7b1ef0863135de905560"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a4ca6df865d7c7b1ef0863135de905560"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4ca6df865d7c7b1ef0863135de905560">quantization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;quantization_info)</td></tr>
<tr class="separator:a4ca6df865d7c7b1ef0863135de905560"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4d272c20d8e0a0602f09fc47e5ce8b2"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae4d272c20d8e0a0602f09fc47e5ce8b2">quantization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;quantization_info)</td></tr>
<tr class="separator:ae4d272c20d8e0a0602f09fc47e5ce8b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e4ff6559d8b4605b79f7de733802ed5"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5e4ff6559d8b4605b79f7de733802ed5">quantization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;quantization_info)</td></tr>
<tr class="separator:a5e4ff6559d8b4605b79f7de733802ed5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87f09c74765be18a99038478f96daf9b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a87f09c74765be18a99038478f96daf9b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a87f09c74765be18a99038478f96daf9b">range</a> (<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, float start, const size_t num_of_elements, float <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a75b73e17c4ebe901e44af3b2b9846ab3">step</a>)</td></tr>
<tr class="separator:a87f09c74765be18a99038478f96daf9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7059348bb7b955422375b8759747abb"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ad7059348bb7b955422375b8759747abb"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad7059348bb7b955422375b8759747abb">range</a> (<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, float start, const size_t num_of_elements, float <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a75b73e17c4ebe901e44af3b2b9846ab3">step</a>)</td></tr>
<tr class="separator:ad7059348bb7b955422375b8759747abb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a212bceee8ca9a28470ed0b9576f8f0da"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a212bceee8ca9a28470ed0b9576f8f0da">range</a> (<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, float start, const size_t num_of_elements, float <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a75b73e17c4ebe901e44af3b2b9846ab3">step</a>)</td></tr>
<tr class="separator:a212bceee8ca9a28470ed0b9576f8f0da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af736e2b03b30fa5c7c98b387d3625f7c"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af736e2b03b30fa5c7c98b387d3625f7c">range</a> (<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, float start, const size_t num_of_elements, float <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a75b73e17c4ebe901e44af3b2b9846ab3">step</a>)</td></tr>
<tr class="separator:af736e2b03b30fa5c7c98b387d3625f7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7addbd608f3a8bc3d6b7bcd8bf31d6c6"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a7addbd608f3a8bc3d6b7bcd8bf31d6c6">range</a> (<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, float start, const size_t num_of_elements, float <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a75b73e17c4ebe901e44af3b2b9846ab3">step</a>)</td></tr>
<tr class="separator:a7addbd608f3a8bc3d6b7bcd8bf31d6c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6683ba7c5a30679bc9d47a6a67cd85ac"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6683ba7c5a30679bc9d47a6a67cd85ac">range</a> (<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, float start, const size_t num_of_elements, float <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a75b73e17c4ebe901e44af3b2b9846ab3">step</a>)</td></tr>
<tr class="separator:a6683ba7c5a30679bc9d47a6a67cd85ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ab673882fe9a507e864e4cf0377ef33"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3ab673882fe9a507e864e4cf0377ef33">range</a> (<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, float start, const size_t num_of_elements, float <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a75b73e17c4ebe901e44af3b2b9846ab3">step</a>)</td></tr>
<tr class="separator:a3ab673882fe9a507e864e4cf0377ef33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea574dd283dd023938212166d4ee8404"><td class="memTemplParams" colspan="2">template&lt;typename T , typename OT &gt; </td></tr>
<tr class="memitem:aea574dd283dd023938212166d4ee8404"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; OT &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aea574dd283dd023938212166d4ee8404">compute_reduction_operation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a> op)</td></tr>
<tr class="separator:aea574dd283dd023938212166d4ee8404"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af60a1dac48760822d607c1063ebbe6a7"><td class="memTemplParams" colspan="2">template&lt;typename T , typename OT &gt; </td></tr>
<tr class="memitem:af60a1dac48760822d607c1063ebbe6a7"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; OT &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af60a1dac48760822d607c1063ebbe6a7">reduction_operation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a> op)</td></tr>
<tr class="separator:af60a1dac48760822d607c1063ebbe6a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab30b1e08a80af30bfd156b37a1abb1cb"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ab30b1e08a80af30bfd156b37a1abb1cb"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab30b1e08a80af30bfd156b37a1abb1cb">reduction_operation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a> op)</td></tr>
<tr class="separator:ab30b1e08a80af30bfd156b37a1abb1cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a932891a0376da4e0e9f241198510579a"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a932891a0376da4e0e9f241198510579a">reduction_operation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a> op)</td></tr>
<tr class="separator:a932891a0376da4e0e9f241198510579a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd88464f51da580f28e4bf4331d7971f"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#abd88464f51da580f28e4bf4331d7971f">reduction_operation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a> op)</td></tr>
<tr class="separator:abd88464f51da580f28e4bf4331d7971f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5d5dccca0cbb8321afb54ca05e26334"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac5d5dccca0cbb8321afb54ca05e26334">reduction_operation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a> op)</td></tr>
<tr class="separator:ac5d5dccca0cbb8321afb54ca05e26334"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed42c1608aca814177de65bc078660c9"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aed42c1608aca814177de65bc078660c9"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aed42c1608aca814177de65bc078660c9">remap</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;map_x, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;map_y, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;valid_mask, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value)</td></tr>
<tr class="separator:aed42c1608aca814177de65bc078660c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae76991329781f552c3a2d66a9dd5af79"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae76991329781f552c3a2d66a9dd5af79">remap</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;map_x, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;map_y, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;valid_mask, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:ae76991329781f552c3a2d66a9dd5af79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1f5beb81386b778b885aff723e6ebac"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae1f5beb81386b778b885aff723e6ebac"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae1f5beb81386b778b885aff723e6ebac">reorg_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int32_t stride)</td></tr>
<tr class="separator:ae1f5beb81386b778b885aff723e6ebac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a686f6c85f504943e52d8c31bf0901cfc"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a686f6c85f504943e52d8c31bf0901cfc">reorg_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int32_t stride)</td></tr>
<tr class="separator:a686f6c85f504943e52d8c31bf0901cfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae45075f9ad201b87cfb3b13ceb238e97"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae45075f9ad201b87cfb3b13ceb238e97">reorg_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int32_t stride)</td></tr>
<tr class="separator:ae45075f9ad201b87cfb3b13ceb238e97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a200c0a6470a0c4163afd69c527d2b12d"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a200c0a6470a0c4163afd69c527d2b12d">reorg_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int32_t stride)</td></tr>
<tr class="separator:a200c0a6470a0c4163afd69c527d2b12d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adeeeba93b83ffdad47f4357c08cfea0e"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:adeeeba93b83ffdad47f4357c08cfea0e"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#adeeeba93b83ffdad47f4357c08cfea0e">reshape_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="memdesc:adeeeba93b83ffdad47f4357c08cfea0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">[ReshapeLayer] <a href="#adeeeba93b83ffdad47f4357c08cfea0e">More...</a><br /></td></tr>
<tr class="separator:adeeeba93b83ffdad47f4357c08cfea0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afea45dc2b397b75108739c4300aa18ad"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#afea45dc2b397b75108739c4300aa18ad">reshape_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:afea45dc2b397b75108739c4300aa18ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a572f373a0f24d9e7d749454280411318"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a572f373a0f24d9e7d749454280411318">reshape_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:a572f373a0f24d9e7d749454280411318"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79a315f543d17f87f44d7b142e1efbbe"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a79a315f543d17f87f44d7b142e1efbbe">reshape_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:a79a315f543d17f87f44d7b142e1efbbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b2ecbb6f4180bb42c65ed575c8fd313"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1b2ecbb6f4180bb42c65ed575c8fd313">reshape_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:a1b2ecbb6f4180bb42c65ed575c8fd313"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42623cecebd86038ac287252a1ead241"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a42623cecebd86038ac287252a1ead241">reshape_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:a42623cecebd86038ac287252a1ead241"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1406fe85a6bec4007f13cc57c4e99767"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1406fe85a6bec4007f13cc57c4e99767">reshape_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:a1406fe85a6bec4007f13cc57c4e99767"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60d98374b4adcd883653831e70b13b4c"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a60d98374b4adcd883653831e70b13b4c">reshape_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:a60d98374b4adcd883653831e70b13b4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3850e0704ba9d6ef260170e87ca1e66"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac3850e0704ba9d6ef260170e87ca1e66">reshape_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>)</td></tr>
<tr class="separator:ac3850e0704ba9d6ef260170e87ca1e66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1936f5feb8c9357acc4555686d4e5cf2"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a1936f5feb8c9357acc4555686d4e5cf2"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1936f5feb8c9357acc4555686d4e5cf2">reverse</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a1936f5feb8c9357acc4555686d4e5cf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a919cf3591c7a0a86389412346be0b295"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a919cf3591c7a0a86389412346be0b295">reverse</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a919cf3591c7a0a86389412346be0b295"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3092826e827607da8aa2799f2a231118"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3092826e827607da8aa2799f2a231118">reverse</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a3092826e827607da8aa2799f2a231118"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b105426832fc39c634bdcaf8d5d9a1b"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8b105426832fc39c634bdcaf8d5d9a1b">reverse</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a8b105426832fc39c634bdcaf8d5d9a1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae10aca11c62e91fcb01059cc7849ada6"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae10aca11c62e91fcb01059cc7849ada6"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae10aca11c62e91fcb01059cc7849ada6">roi_align_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;rois, const <a class="el" href="classarm__compute_1_1_r_o_i_pooling_layer_info.xhtml">ROIPoolingLayerInfo</a> &amp;pool_info)</td></tr>
<tr class="separator:ae10aca11c62e91fcb01059cc7849ada6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade5dbd67630e7e979b7f2c24c1fa1fa3"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ade5dbd67630e7e979b7f2c24c1fa1fa3">roi_align_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;rois, const <a class="el" href="classarm__compute_1_1_r_o_i_pooling_layer_info.xhtml">ROIPoolingLayerInfo</a> &amp;pool_info)</td></tr>
<tr class="separator:ade5dbd67630e7e979b7f2c24c1fa1fa3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a4d037e9f0f69fde36a5ca107aa587a"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4a4d037e9f0f69fde36a5ca107aa587a">roi_align_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;rois, const <a class="el" href="classarm__compute_1_1_r_o_i_pooling_layer_info.xhtml">ROIPoolingLayerInfo</a> &amp;pool_info)</td></tr>
<tr class="separator:a4a4d037e9f0f69fde36a5ca107aa587a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa390c8750cce2de4fd49d7a3d9e6ba5c"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa390c8750cce2de4fd49d7a3d9e6ba5c"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa390c8750cce2de4fd49d7a3d9e6ba5c">scale_core</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, float scale_x, float scale_y, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value, <a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7b">SamplingPolicy</a> sampling_policy, bool ceil_policy_scale)</td></tr>
<tr class="separator:aa390c8750cce2de4fd49d7a3d9e6ba5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d1214c8e51d5c216c257b8c1ce14525"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6d1214c8e51d5c216c257b8c1ce14525"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6d1214c8e51d5c216c257b8c1ce14525">scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float scale_x, float scale_y, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, T constant_border_value, <a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7b">SamplingPolicy</a> sampling_policy, bool ceil_policy_scale)</td></tr>
<tr class="separator:a6d1214c8e51d5c216c257b8c1ce14525"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5d62ae2ebf51dcab81a1b15781faebc"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:ab5d62ae2ebf51dcab81a1b15781faebc"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab5d62ae2ebf51dcab81a1b15781faebc">scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float scale_x, float scale_y, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value, <a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7b">SamplingPolicy</a> sampling_policy, bool ceil_policy_scale)</td></tr>
<tr class="separator:ab5d62ae2ebf51dcab81a1b15781faebc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a507aed1b65b543eae5adafff1f2b8965"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a507aed1b65b543eae5adafff1f2b8965">scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float scale_x, float scale_y, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, int16_t constant_border_value, <a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7b">SamplingPolicy</a> sampling_policy, bool ceil_policy_scale)</td></tr>
<tr class="separator:a507aed1b65b543eae5adafff1f2b8965"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19c2e3dbf2874675782c224032106d80"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a19c2e3dbf2874675782c224032106d80">scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float scale_x, float scale_y, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> constant_border_value, <a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7b">SamplingPolicy</a> sampling_policy, bool ceil_policy_scale)</td></tr>
<tr class="separator:a19c2e3dbf2874675782c224032106d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5ae0844c074ff20b13924b7f145d4e2"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab5ae0844c074ff20b13924b7f145d4e2">scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float scale_x, float scale_y, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, float constant_border_value, <a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7b">SamplingPolicy</a> sampling_policy, bool ceil_policy_scale)</td></tr>
<tr class="separator:ab5ae0844c074ff20b13924b7f145d4e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4578c34605a48d4b85ec0d0e6ab4b530"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
<tr class="memitem:a4578c34605a48d4b85ec0d0e6ab4b530"><td class="memTemplItemLeft" align="right" valign="top">std::pair&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4578c34605a48d4b85ec0d0e6ab4b530">scharr</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value, <a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7">GradientDimension</a> gradient_dimension)</td></tr>
<tr class="separator:a4578c34605a48d4b85ec0d0e6ab4b530"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a206eea7bc9a9c8b98cd4a6e7f6d0a8be"><td class="memItemLeft" align="right" valign="top">template std::pair&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a206eea7bc9a9c8b98cd4a6e7f6d0a8be">scharr</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value, <a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7">GradientDimension</a> gradient_dimension)</td></tr>
<tr class="separator:a206eea7bc9a9c8b98cd4a6e7f6d0a8be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27e22718d532b621774aca14ce8b1101"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a27e22718d532b621774aca14ce8b1101"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a27e22718d532b621774aca14ce8b1101">select</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;c, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;x, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;y)</td></tr>
<tr class="separator:a27e22718d532b621774aca14ce8b1101"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0331e853139eaf23282e0ca0a53b90b8"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0331e853139eaf23282e0ca0a53b90b8">select</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;c, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;x, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;y)</td></tr>
<tr class="separator:a0331e853139eaf23282e0ca0a53b90b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95fd10c561d7b438f46d34441ac4c494"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a95fd10c561d7b438f46d34441ac4c494">select</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;c, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;x, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;y)</td></tr>
<tr class="separator:a95fd10c561d7b438f46d34441ac4c494"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d2d7deaeaac223161f2a13d155b58f7"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6d2d7deaeaac223161f2a13d155b58f7">select</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;c, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;x, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;y)</td></tr>
<tr class="separator:a6d2d7deaeaac223161f2a13d155b58f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a548131b3d37da47a2e9d32111c88dfe1"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a548131b3d37da47a2e9d32111c88dfe1"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">slice</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> starts, <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> ends)</td></tr>
<tr class="separator:a548131b3d37da47a2e9d32111c88dfe1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa29a68ae51222595dbe5069d4e082c24"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa29a68ae51222595dbe5069d4e082c24">slice</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> starts, <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> ends)</td></tr>
<tr class="separator:aa29a68ae51222595dbe5069d4e082c24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69e42a64983665cb7451016d3ca66e34"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a69e42a64983665cb7451016d3ca66e34">slice</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> starts, <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> ends)</td></tr>
<tr class="separator:a69e42a64983665cb7451016d3ca66e34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1cd4d70f0bab74b1aa3cb43b3e3a0be5"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a1cd4d70f0bab74b1aa3cb43b3e3a0be5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1cd4d70f0bab74b1aa3cb43b3e3a0be5">strided_slice</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> starts, <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> ends, <a class="el" href="namespacearm__compute.xhtml#a11916d4148a39a67794050373f54825a">BiStrides</a> strides, int32_t begin_mask, int32_t end_mask, int32_t shrink_axis_mask)</td></tr>
<tr class="separator:a1cd4d70f0bab74b1aa3cb43b3e3a0be5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6afd3ff048b88a08c17e61277bfd10cb"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6afd3ff048b88a08c17e61277bfd10cb">strided_slice</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> starts, <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> ends, <a class="el" href="namespacearm__compute.xhtml#a11916d4148a39a67794050373f54825a">BiStrides</a> strides, int32_t begin_mask, int32_t end_mask, int32_t shrink_axis_mask)</td></tr>
<tr class="separator:a6afd3ff048b88a08c17e61277bfd10cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58bfd4f5ff4a8e1fc0999c6bb5ac5a15"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a58bfd4f5ff4a8e1fc0999c6bb5ac5a15">strided_slice</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> starts, <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> ends, <a class="el" href="namespacearm__compute.xhtml#a11916d4148a39a67794050373f54825a">BiStrides</a> strides, int32_t begin_mask, int32_t end_mask, int32_t shrink_axis_mask)</td></tr>
<tr class="separator:a58bfd4f5ff4a8e1fc0999c6bb5ac5a15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49f4ade021d47be4a54eb343ee658c7c"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
<tr class="memitem:a49f4ade021d47be4a54eb343ee658c7c"><td class="memTemplItemLeft" align="right" valign="top">std::pair&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a49f4ade021d47be4a54eb343ee658c7c">sobel</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value, <a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7">GradientDimension</a> gradient_dimension)</td></tr>
<tr class="separator:a49f4ade021d47be4a54eb343ee658c7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3525a4629519b21f52059c86c9048a80"><td class="memItemLeft" align="right" valign="top">template std::pair&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3525a4629519b21f52059c86c9048a80">sobel</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value, <a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7">GradientDimension</a> gradient_dimension)</td></tr>
<tr class="separator:a3525a4629519b21f52059c86c9048a80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5be8e137e2ace7ccaa059ca741f9fb95"><td class="memTemplParams" colspan="2">template&lt;typename T , typename std::enable_if&lt; is_floating_point&lt; T &gt;::value, int &gt;::type &gt; </td></tr>
<tr class="memitem:a5be8e137e2ace7ccaa059ca741f9fb95"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5be8e137e2ace7ccaa059ca741f9fb95">softmax_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float beta, size_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a5be8e137e2ace7ccaa059ca741f9fb95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8547f81b97085bc5af17ea27ba7c18f0"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8547f81b97085bc5af17ea27ba7c18f0">softmax_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float beta, size_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a8547f81b97085bc5af17ea27ba7c18f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4db13f79d26e9c1466a13ff930d31447"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4db13f79d26e9c1466a13ff930d31447">softmax_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float beta, size_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a4db13f79d26e9c1466a13ff930d31447"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b24305fe605098a988f71fdf15e5ad3"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0b24305fe605098a988f71fdf15e5ad3">softmax_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, float beta, size_t <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a0b24305fe605098a988f71fdf15e5ad3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a542fc60389c966ad25b15a53ac932ec0"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a542fc60389c966ad25b15a53ac932ec0"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a542fc60389c966ad25b15a53ac932ec0">space_to_batch</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;block_shape, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;paddings, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>)</td></tr>
<tr class="separator:a542fc60389c966ad25b15a53ac932ec0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78ba0d6811573e8170a663728680dfcf"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a78ba0d6811573e8170a663728680dfcf">space_to_batch</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;block_shape, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;paddings, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>)</td></tr>
<tr class="separator:a78ba0d6811573e8170a663728680dfcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0349f5a3ee3a5d25bc50818a701e32eb"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0349f5a3ee3a5d25bc50818a701e32eb">space_to_batch</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;block_shape, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;paddings, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>)</td></tr>
<tr class="separator:a0349f5a3ee3a5d25bc50818a701e32eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a422edd0f26551e4ef6eaa4e7bd2e481e"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a422edd0f26551e4ef6eaa4e7bd2e481e">space_to_batch</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;block_shape, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;paddings, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>)</td></tr>
<tr class="separator:a422edd0f26551e4ef6eaa4e7bd2e481e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05e1ae7538add5af2dfd02758c8445b5"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a05e1ae7538add5af2dfd02758c8445b5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a05e1ae7538add5af2dfd02758c8445b5">space_to_depth</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const int block_shape)</td></tr>
<tr class="separator:a05e1ae7538add5af2dfd02758c8445b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50ba28466df871bbf6b38ccdd2817c4e"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a50ba28466df871bbf6b38ccdd2817c4e">space_to_depth</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const int block_shape)</td></tr>
<tr class="separator:a50ba28466df871bbf6b38ccdd2817c4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e94ae75a4a091ee96162879f7860ae0"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a7e94ae75a4a091ee96162879f7860ae0">space_to_depth</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const int block_shape)</td></tr>
<tr class="separator:a7e94ae75a4a091ee96162879f7860ae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad85d74ccebfcf9cb1fe365106b1a8942"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad85d74ccebfcf9cb1fe365106b1a8942"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad85d74ccebfcf9cb1fe365106b1a8942">stack_layer</a> (const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:ad85d74ccebfcf9cb1fe365106b1a8942"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0c66df558c6d72fe52fdbb10a1a56ac"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af0c66df558c6d72fe52fdbb10a1a56ac">stack_layer</a> (const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt;&gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:af0c66df558c6d72fe52fdbb10a1a56ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36ab5c75947ea8e7c35973444255711d"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; short &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a36ab5c75947ea8e7c35973444255711d">stack_layer</a> (const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; short &gt;&gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a36ab5c75947ea8e7c35973444255711d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac682fa5701bdf7949d8b5a26ef187e7b"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ac682fa5701bdf7949d8b5a26ef187e7b">stack_layer</a> (const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; char &gt;&gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a>, unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:ac682fa5701bdf7949d8b5a26ef187e7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a935c4b1c0ddcd108097e6a4a7fd520e8"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a935c4b1c0ddcd108097e6a4a7fd520e8"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a935c4b1c0ddcd108097e6a4a7fd520e8">table_lookup</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const std::map&lt; T, T &gt; &amp;rawlut)</td></tr>
<tr class="separator:a935c4b1c0ddcd108097e6a4a7fd520e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a87ef7fe41b158671d4cf7a511aebec"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3a87ef7fe41b158671d4cf7a511aebec">table_lookup</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const std::map&lt; uint8_t, uint8_t &gt; &amp;rawlut)</td></tr>
<tr class="separator:a3a87ef7fe41b158671d4cf7a511aebec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2860e24e7982ebd58891aae4d0a90ad0"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2860e24e7982ebd58891aae4d0a90ad0">table_lookup</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const std::map&lt; int16_t, int16_t &gt; &amp;rawlut)</td></tr>
<tr class="separator:a2860e24e7982ebd58891aae4d0a90ad0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cae310822a46019ba25a00ddb0f7e62"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6cae310822a46019ba25a00ddb0f7e62"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, T threshold, T false_value, T true_value, <a class="el" href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649">ThresholdType</a> type, T upper)</td></tr>
<tr class="separator:a6cae310822a46019ba25a00ddb0f7e62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a56f5d40af92249b49b8fabc89cfcd3"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8a56f5d40af92249b49b8fabc89cfcd3">threshold</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, uint8_t threshold, uint8_t false_value, uint8_t true_value, <a class="el" href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649">ThresholdType</a> type, uint8_t upper)</td></tr>
<tr class="separator:a8a56f5d40af92249b49b8fabc89cfcd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3744347976f5c2cb8f3ecd016a588454"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a3744347976f5c2cb8f3ecd016a588454"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3744347976f5c2cb8f3ecd016a588454">tile</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;multiples)</td></tr>
<tr class="separator:a3744347976f5c2cb8f3ecd016a588454"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cb59283ffd29ef361fbd3cb3210969a"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9cb59283ffd29ef361fbd3cb3210969a">tile</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;multiples)</td></tr>
<tr class="separator:a9cb59283ffd29ef361fbd3cb3210969a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae596700e94d56a3c0bba0618cc8dfa77"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae596700e94d56a3c0bba0618cc8dfa77">tile</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;multiples)</td></tr>
<tr class="separator:ae596700e94d56a3c0bba0618cc8dfa77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa7eb6a776fe2f70b1a14ab10a2a328f"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aaa7eb6a776fe2f70b1a14ab10a2a328f">tile</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;multiples)</td></tr>
<tr class="separator:aaa7eb6a776fe2f70b1a14ab10a2a328f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f96416023f4be64c4121eeb5ccee762"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9f96416023f4be64c4121eeb5ccee762">tile</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;multiples)</td></tr>
<tr class="separator:a9f96416023f4be64c4121eeb5ccee762"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a814c6cf20944d1f74831d755daebe165"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a814c6cf20944d1f74831d755daebe165">tile</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;multiples)</td></tr>
<tr class="separator:a814c6cf20944d1f74831d755daebe165"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61f2f4b00eae513e610668cc1442ad2d"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a61f2f4b00eae513e610668cc1442ad2d">tile</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;multiples)</td></tr>
<tr class="separator:a61f2f4b00eae513e610668cc1442ad2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c5026785894b871c99266c939e4a4f6"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1c5026785894b871c99266c939e4a4f6">tile</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;multiples)</td></tr>
<tr class="separator:a1c5026785894b871c99266c939e4a4f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adfbf8210332d2d06a04bde1aa6377a52"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#adfbf8210332d2d06a04bde1aa6377a52">tile</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;multiples)</td></tr>
<tr class="separator:adfbf8210332d2d06a04bde1aa6377a52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf9a40691cf4bd2c9af93bc806358a24"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:acf9a40691cf4bd2c9af93bc806358a24"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acf9a40691cf4bd2c9af93bc806358a24">transpose</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:acf9a40691cf4bd2c9af93bc806358a24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a269f65a55705b60a0e42d5d277ff9ee3"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a269f65a55705b60a0e42d5d277ff9ee3">transpose</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a269f65a55705b60a0e42d5d277ff9ee3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0954b58b92e7a6eb0f0d5f9d62fd207a"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0954b58b92e7a6eb0f0d5f9d62fd207a">transpose</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a0954b58b92e7a6eb0f0d5f9d62fd207a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a438af3af37f59f35944cd276469bb0d5"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a438af3af37f59f35944cd276469bb0d5">transpose</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a438af3af37f59f35944cd276469bb0d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5f82318aa0982e38535d512accf3177"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af5f82318aa0982e38535d512accf3177">transpose</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:af5f82318aa0982e38535d512accf3177"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f3ed5e09dcdb43d381a70aba1700bd4"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9f3ed5e09dcdb43d381a70aba1700bd4">transpose</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>)</td></tr>
<tr class="separator:a9f3ed5e09dcdb43d381a70aba1700bd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe272472696bc4aa07058beae42c2706"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:abe272472696bc4aa07058beae42c2706"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#abe272472696bc4aa07058beae42c2706">unstack</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;input_tensor, std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;output_tensors, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:abe272472696bc4aa07058beae42c2706"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6875441960841feccd15a265409b6d7f"><td class="memItemLeft" align="right" valign="top">template std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6875441960841feccd15a265409b6d7f">unstack</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;input_tensor, std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&gt; &amp;output_tensors, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:a6875441960841feccd15a265409b6d7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1aa5278545903400c542ac3e2a8b497"><td class="memItemLeft" align="right" valign="top">template std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad1aa5278545903400c542ac3e2a8b497">unstack</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;input_tensor, std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&gt; &amp;output_tensors, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:ad1aa5278545903400c542ac3e2a8b497"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3cc70aa61afb1c147878c2c9e7646ed"><td class="memItemLeft" align="right" valign="top">template std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab3cc70aa61afb1c147878c2c9e7646ed">unstack</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;input_tensor, std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&gt; &amp;output_tensors, int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</td></tr>
<tr class="separator:ab3cc70aa61afb1c147878c2c9e7646ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1eba3d4a492c440c30fdffe8866bed51"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a1eba3d4a492c440c30fdffe8866bed51"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1eba3d4a492c440c30fdffe8866bed51">upsample_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>)</td></tr>
<tr class="separator:a1eba3d4a492c440c30fdffe8866bed51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86b87d30de70aa352915398b5dee8301"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:a86b87d30de70aa352915398b5dee8301"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86b87d30de70aa352915398b5dee8301">upsample_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>)</td></tr>
<tr class="separator:a86b87d30de70aa352915398b5dee8301"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f909e8f8b7cc9f9c2e81b0ce0f0fe97"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9f909e8f8b7cc9f9c2e81b0ce0f0fe97">upsample_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>)</td></tr>
<tr class="separator:a9f909e8f8b7cc9f9c2e81b0ce0f0fe97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d93cd5068a511c7433c4f8f165b6773"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6d93cd5068a511c7433c4f8f165b6773">upsample_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, const <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>)</td></tr>
<tr class="separator:a6d93cd5068a511c7433c4f8f165b6773"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3064cbee60ab97935e8d1df617f82b5c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3064cbee60ab97935e8d1df617f82b5c">valid_bilinear_policy</a> (float xn, float yn, int width, int height, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>)</td></tr>
<tr class="separator:a3064cbee60ab97935e8d1df617f82b5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97fb6802b7b8641c51fcc29aa03248ed"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a97fb6802b7b8641c51fcc29aa03248ed"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a97fb6802b7b8641c51fcc29aa03248ed">warp_affine</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;valid_mask, const float *matrix, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a97fb6802b7b8641c51fcc29aa03248ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acec59b1e80034018a6a0880bf29a130d"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acec59b1e80034018a6a0880bf29a130d">warp_affine</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;valid_mask, const float *matrix, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:acec59b1e80034018a6a0880bf29a130d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36be7020a6004680d96138fa8c300de7"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a36be7020a6004680d96138fa8c300de7"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a36be7020a6004680d96138fa8c300de7">warp_perspective</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;valid_mask, const float *matrix, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a36be7020a6004680d96138fa8c300de7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29ddb612c916a0cd4c57ec03ceffd9b9"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a29ddb612c916a0cd4c57ec03ceffd9b9">warp_perspective</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;valid_mask, const float *matrix, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, uint8_t constant_border_value)</td></tr>
<tr class="separator:a29ddb612c916a0cd4c57ec03ceffd9b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a2c33b365f0043e15e2db448fa3eb38"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a5a2c33b365f0043e15e2db448fa3eb38"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5a2c33b365f0043e15e2db448fa3eb38">weights_reshape</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:a5a2c33b365f0043e15e2db448fa3eb38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0525545244e5dcca4676622297317241"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0525545244e5dcca4676622297317241">weights_reshape</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:a0525545244e5dcca4676622297317241"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6b1f2785ef5769e8c5a74050defc2e3"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae6b1f2785ef5769e8c5a74050defc2e3">weights_reshape</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:ae6b1f2785ef5769e8c5a74050defc2e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2252b2b9141963b5a7342f157a5ddf5"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af2252b2b9141963b5a7342f157a5ddf5">weights_reshape</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, const unsigned int <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)</td></tr>
<tr class="separator:af2252b2b9141963b5a7342f157a5ddf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09a73d5705389176ff8b7f95946dbc2d"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a09a73d5705389176ff8b7f95946dbc2d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a09a73d5705389176ff8b7f95946dbc2d">winograd_input_transform</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>)</td></tr>
<tr class="separator:a09a73d5705389176ff8b7f95946dbc2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1720f2a51d1415a9c5afbf2a5c2749f"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae1720f2a51d1415a9c5afbf2a5c2749f"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae1720f2a51d1415a9c5afbf2a5c2749f">winograd_filter_transform</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>)</td></tr>
<tr class="separator:ae1720f2a51d1415a9c5afbf2a5c2749f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adacc73fb5c03e7a1273c0c81c8f8dad5"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:adacc73fb5c03e7a1273c0c81c8f8dad5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#adacc73fb5c03e7a1273c0c81c8f8dad5">winograd_output_transform</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;in, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>)</td></tr>
<tr class="separator:adacc73fb5c03e7a1273c0c81c8f8dad5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad75aaeada9a22fadf0ba735bca1adcbc"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad75aaeada9a22fadf0ba735bca1adcbc">winograd_filter_transform</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>)</td></tr>
<tr class="separator:ad75aaeada9a22fadf0ba735bca1adcbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabf9a06c73c2e343234654ad65487cf8"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aabf9a06c73c2e343234654ad65487cf8">winograd_input_transform</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>)</td></tr>
<tr class="separator:aabf9a06c73c2e343234654ad65487cf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f9f87c1fce2adf686c6afb5b4da3ce1"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8f9f87c1fce2adf686c6afb5b4da3ce1">winograd_output_transform</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;in, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>)</td></tr>
<tr class="separator:a8f9f87c1fce2adf686c6afb5b4da3ce1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45caafa00e54ed470a87a918cddd85ea"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a45caafa00e54ed470a87a918cddd85ea">winograd_filter_transform</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>)</td></tr>
<tr class="separator:a45caafa00e54ed470a87a918cddd85ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4f10ed9128a31cdf47c9f81453c4d51"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad4f10ed9128a31cdf47c9f81453c4d51">winograd_input_transform</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;in, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>)</td></tr>
<tr class="separator:ad4f10ed9128a31cdf47c9f81453c4d51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeede3ceb64d85268e08fb5d90ca99e85"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aeede3ceb64d85268e08fb5d90ca99e85">winograd_output_transform</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;in, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>)</td></tr>
<tr class="separator:aeede3ceb64d85268e08fb5d90ca99e85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4827067f15bd8a29f841197d0935c6bf"><td class="memTemplParams" colspan="2">template&lt;typename T , typename std::enable_if&lt; is_floating_point&lt; T &gt;::value, int &gt;::type &gt; </td></tr>
<tr class="memitem:a4827067f15bd8a29f841197d0935c6bf"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4827067f15bd8a29f841197d0935c6bf">yolo_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, int32_t num_classes)</td></tr>
<tr class="separator:a4827067f15bd8a29f841197d0935c6bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa566a8e56ab79a56e7d9001458f09577"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
<tr class="memitem:aa566a8e56ab79a56e7d9001458f09577"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa566a8e56ab79a56e7d9001458f09577">yolo_layer&lt; uint8_t &gt;</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, int32_t num_classes)</td></tr>
<tr class="separator:aa566a8e56ab79a56e7d9001458f09577"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab292f1c20b741cbf21746566412ac902"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab292f1c20b741cbf21746566412ac902">yolo_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, int32_t num_classes)</td></tr>
<tr class="separator:ab292f1c20b741cbf21746566412ac902"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3931061e2eae2c2a5caa8807cee9e517"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3931061e2eae2c2a5caa8807cee9e517">yolo_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, const <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> &amp;<a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, int32_t num_classes)</td></tr>
<tr class="separator:a3931061e2eae2c2a5caa8807cee9e517"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="a23d9f0c01c9e120dfb828ee922b7a8ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a23d9f0c01c9e120dfb828ee922b7a8ae">&#9670;&nbsp;</a></span>ArithmeticOperation</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Arithmetic operation types. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a23d9f0c01c9e120dfb828ee922b7a8aea9eeb52badb613229884838847294b90d"></a>ADD&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a23d9f0c01c9e120dfb828ee922b7a8aea241dd841abade20fcb27b8a9f494e1eb"></a>SUB&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_arithmetic_operations_8h_source.xhtml#l00039">39</a> of file <a class="el" href="_arithmetic_operations_8h_source.xhtml">ArithmeticOperations.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="elementwise__operation_8cl.xhtml#af3b709fb668cf93ca09e2a46a2a031a8">ADD</a>,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="elementwise__operation_8cl.xhtml#aafc2c4f262a0686c07f86c7d2e1d8d14">SUB</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;};</div><div class="ttc" id="elementwise__operation_8cl_xhtml_af3b709fb668cf93ca09e2a46a2a031a8"><div class="ttname"><a href="elementwise__operation_8cl.xhtml#af3b709fb668cf93ca09e2a46a2a031a8">ADD</a></div><div class="ttdeci">#define ADD(x, y)</div><div class="ttdoc">List of all the operations supported by this kernel.</div><div class="ttdef"><b>Definition:</b> <a href="elementwise__operation_8cl_source.xhtml#l00032">elementwise_operation.cl:32</a></div></div>
<div class="ttc" id="elementwise__operation_8cl_xhtml_aafc2c4f262a0686c07f86c7d2e1d8d14"><div class="ttname"><a href="elementwise__operation_8cl.xhtml#aafc2c4f262a0686c07f86c7d2e1d8d14">SUB</a></div><div class="ttdeci">#define SUB(x, y)</div><div class="ttdef"><b>Definition:</b> <a href="elementwise__operation_8cl_source.xhtml#l00033">elementwise_operation.cl:33</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a86a0c8e195c900a895c249662cfaa564"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86a0c8e195c900a895c249662cfaa564">&#9670;&nbsp;</a></span>FFTDirection</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564">FFTDirection</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a86a0c8e195c900a895c249662cfaa564a67d2f6740a8eaebf4d5c6f79be8da481"></a>Forward&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a86a0c8e195c900a895c249662cfaa564a9f87f02f2da8f99c571b2a1c2a96132b"></a>Inverse&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_d_f_t_8h_source.xhtml#l00038">38</a> of file <a class="el" href="_d_f_t_8h_source.xhtml">DFT.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a86a0c8e195c900a895c249662cfaa564a67d2f6740a8eaebf4d5c6f79be8da481">Forward</a>,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a86a0c8e195c900a895c249662cfaa564a9f87f02f2da8f99c571b2a1c2a96132b">Inverse</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;};</div><div class="ttc" id="namespacearm__compute_xhtml_a86a0c8e195c900a895c249662cfaa564a9f87f02f2da8f99c571b2a1c2a96132b"><div class="ttname"><a href="namespacearm__compute.xhtml#a86a0c8e195c900a895c249662cfaa564a9f87f02f2da8f99c571b2a1c2a96132b">arm_compute::FFTDirection::Inverse</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a86a0c8e195c900a895c249662cfaa564a67d2f6740a8eaebf4d5c6f79be8da481"><div class="ttname"><a href="namespacearm__compute.xhtml#a86a0c8e195c900a895c249662cfaa564a67d2f6740a8eaebf4d5c6f79be8da481">arm_compute::FFTDirection::Forward</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5d19c046f7c6ca24d067312183e8871e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d19c046f7c6ca24d067312183e8871e">&#9670;&nbsp;</a></span>WinogradTransformType</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871e">WinogradTransformType</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Winograd transform type. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a5d19c046f7c6ca24d067312183e8871eaa84cc046d48610b05c21fd3670d0c829"></a>INPUT&#160;</td><td class="fielddoc"><p>Winograd input transform. </p>
</td></tr>
<tr><td class="fieldname"><a id="a5d19c046f7c6ca24d067312183e8871eae75ab17a550f46adbbe891b819cf951d"></a>FILTER&#160;</td><td class="fielddoc"><p>Winograd filter transform. </p>
</td></tr>
<tr><td class="fieldname"><a id="a5d19c046f7c6ca24d067312183e8871ea50a87f0d71f7221582dad4bf507a0f34"></a>OUTPUT&#160;</td><td class="fielddoc"><p>Winograd output transform. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="_winograd_8h_source.xhtml#l00040">40</a> of file <a class="el" href="_winograd_8h_source.xhtml">Winograd.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871eaa84cc046d48610b05c21fd3670d0c829">INPUT</a>, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871eae75ab17a550f46adbbe891b819cf951d">FILTER</a>, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871ea50a87f0d71f7221582dad4bf507a0f34">OUTPUT</a> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;};</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a5d19c046f7c6ca24d067312183e8871ea50a87f0d71f7221582dad4bf507a0f34"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871ea50a87f0d71f7221582dad4bf507a0f34">arm_compute::test::validation::reference::WinogradTransformType::OUTPUT</a></div><div class="ttdoc">Winograd output transform.</div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a5d19c046f7c6ca24d067312183e8871eae75ab17a550f46adbbe891b819cf951d"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871eae75ab17a550f46adbbe891b819cf951d">arm_compute::test::validation::reference::WinogradTransformType::FILTER</a></div><div class="ttdoc">Winograd filter transform.</div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a5d19c046f7c6ca24d067312183e8871eaa84cc046d48610b05c21fd3670d0c829"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871eaa84cc046d48610b05c21fd3670d0c829">arm_compute::test::validation::reference::WinogradTransformType::INPUT</a></div><div class="ttdoc">Winograd input transform.</div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a4be63f36f5a22cb9f23c4ad003998c83"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4be63f36f5a22cb9f23c4ad003998c83">&#9670;&nbsp;</a></span>absolute_difference() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; absolute_difference </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dst_data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_absolute_difference_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_absolute_difference_8cpp_source.xhtml">AbsoluteDifference.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; result(src1.shape(), dst_data_type);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">using</span> intermediate_type = <span class="keyword">typename</span> common_promoted_signed_type&lt;T&gt;::intermediate_type;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; src1.num_elements(); ++i)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; intermediate_type val = std::abs(static_cast&lt;intermediate_type&gt;(src1[i]) - static_cast&lt;intermediate_type&gt;(src2[i]));</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; result[i] = saturate_cast&lt;T&gt;(val);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div></div><!-- fragment -->
<p class="reference">References <a class="el" href="_simple_tensor_8h_source.xhtml#l00407">SimpleTensor&lt; T &gt;::num_elements()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="ab072e4246c7e802843a8d65ba4351dd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab072e4246c7e802843a8d65ba4351dd0">&#9670;&nbsp;</a></span>absolute_difference() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::absolute_difference </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dst_data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afb49abe2b0391bf36a561dff9130f07d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb49abe2b0391bf36a561dff9130f07d">&#9670;&nbsp;</a></span>absolute_difference() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::absolute_difference </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dst_data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acbda304aed5292da9c067c4e3fd99b20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acbda304aed5292da9c067c4e3fd99b20">&#9670;&nbsp;</a></span>absolute_difference() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int8_t&gt; arm_compute::test::validation::reference::absolute_difference </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dst_data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a48e7832f8e28c3f7fc0ded12467f8bb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a48e7832f8e28c3f7fc0ded12467f8bb0">&#9670;&nbsp;</a></span>accumulate() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; accumulate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>output_data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_accumulate_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_accumulate_8cpp_source.xhtml">Accumulate.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T2&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a> };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespacearm__compute_1_1test.xhtml#a71326f0909d77386e29b511e1990a11f">library</a>-&gt;fill_tensor_uniform(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, 1, static_cast&lt;T2&gt;(0), static_cast&lt;T2&gt;(std::numeric_limits&lt;T1&gt;::max()));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">using</span> intermediate_type = <span class="keyword">typename</span> common_promoted_signed_type&lt;T1, T2&gt;::intermediate_type;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; intermediate_type val = static_cast&lt;intermediate_type&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]) + static_cast&lt;intermediate_type&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i]);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = saturate_cast&lt;T2&gt;(val);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa30f40707893f8201695a2c20e2d8c7d"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">arm_compute::test::validation::output_data_type</a></div><div class="ttdeci">output_data_type</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00098">AbsoluteDifference.cpp:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a71326f0909d77386e29b511e1990a11f"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a71326f0909d77386e29b511e1990a11f">arm_compute::test::library</a></div><div class="ttdeci">std::unique_ptr&lt; AssetsLibrary &gt; library</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.xhtml#l00075">main.cpp:75</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="main_8cpp_source.xhtml#l00075">arm_compute::test::library</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00098">arm_compute::test::validation::output_data_type</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a5f825c8e50b0cdee9153f49a17e1ecb9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f825c8e50b0cdee9153f49a17e1ecb9">&#9670;&nbsp;</a></span>accumulate() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::accumulate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>output_data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9668e0633026b0281b1d2f01226cabf0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9668e0633026b0281b1d2f01226cabf0">&#9670;&nbsp;</a></span>accumulate_squared() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; accumulate_squared </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>output_data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_accumulate_8cpp_source.xhtml#l00076">76</a> of file <a class="el" href="reference_2_accumulate_8cpp_source.xhtml">Accumulate.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a> &gt; 15, <span class="stringliteral">&quot;Shift in accumulate_squared must be within the range [0, 15]&quot;</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; SimpleTensor&lt;T2&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a> };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespacearm__compute_1_1test.xhtml#a71326f0909d77386e29b511e1990a11f">library</a>-&gt;fill_tensor_uniform(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, 1, static_cast&lt;T2&gt;(0), static_cast&lt;T2&gt;(std::numeric_limits&lt;T1&gt;::max()));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">using</span> intermediate_type = <span class="keyword">typename</span> common_promoted_signed_type&lt;T1, T2&gt;::intermediate_type;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; intermediate_type denom = 1 &lt;&lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; intermediate_type val = static_cast&lt;intermediate_type&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i]) + (static_cast&lt;intermediate_type&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]) * static_cast&lt;intermediate_type&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]) / denom);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = saturate_cast&lt;T2&gt;(val);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a979a54caef6e77ce0259e427136847e8"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">arm_compute::test::validation::shift</a></div><div class="ttdeci">shift</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_depth_convert_layer_8cpp_source.xhtml#l00155">DepthConvertLayer.cpp:155</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa30f40707893f8201695a2c20e2d8c7d"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">arm_compute::test::validation::output_data_type</a></div><div class="ttdeci">output_data_type</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00098">AbsoluteDifference.cpp:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a71326f0909d77386e29b511e1990a11f"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a71326f0909d77386e29b511e1990a11f">arm_compute::test::library</a></div><div class="ttdeci">std::unique_ptr&lt; AssetsLibrary &gt; library</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.xhtml#l00075">main.cpp:75</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a5bbdcf574d3f5e412fa6a1117911e67b"><div class="ttname"><a href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_MSG(cond,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00328">Error.h:328</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00328">ARM_COMPUTE_ERROR_ON_MSG</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="main_8cpp_source.xhtml#l00075">arm_compute::test::library</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00098">arm_compute::test::validation::output_data_type</a>, <a class="el" href="_c_l_2_depth_convert_layer_8cpp_source.xhtml#l00155">arm_compute::test::validation::shift</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a158ea97c295a1672d7a7d09afdf90307"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a158ea97c295a1672d7a7d09afdf90307">&#9670;&nbsp;</a></span>accumulate_squared() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::accumulate_squared </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>output_data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a80107badc51d92c79886955f52c61a1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80107badc51d92c79886955f52c61a1b">&#9670;&nbsp;</a></span>accumulate_weighted() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; accumulate_weighted </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>alpha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>output_data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_accumulate_8cpp_source.xhtml#l00056">56</a> of file <a class="el" href="reference_2_accumulate_8cpp_source.xhtml">Accumulate.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a>(alpha &lt; 0.f || alpha &gt; 1.f, <span class="stringliteral">&quot;Weight (alpha) specified in accumulate_weighted must be within the range [0, 1]&quot;</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; SimpleTensor&lt;T2&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a> };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespacearm__compute_1_1test.xhtml#a71326f0909d77386e29b511e1990a11f">library</a>-&gt;fill_tensor_uniform(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, 1, static_cast&lt;T2&gt;(0), static_cast&lt;T2&gt;(std::numeric_limits&lt;T1&gt;::max()));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">using</span> intermediate_type = <span class="keyword">typename</span> common_promoted_signed_type&lt;T1, T2&gt;::intermediate_type;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">double</span> val = (1. - static_cast&lt;double&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3161c2c93c655dd30953372064ec627b">alpha</a>)) * static_cast&lt;intermediate_type&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i]) + static_cast&lt;double&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3161c2c93c655dd30953372064ec627b">alpha</a>) * static_cast&lt;intermediate_type&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = static_cast&lt;T2&gt;(val);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa30f40707893f8201695a2c20e2d8c7d"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">arm_compute::test::validation::output_data_type</a></div><div class="ttdeci">output_data_type</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00098">AbsoluteDifference.cpp:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a71326f0909d77386e29b511e1990a11f"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a71326f0909d77386e29b511e1990a11f">arm_compute::test::library</a></div><div class="ttdeci">std::unique_ptr&lt; AssetsLibrary &gt; library</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.xhtml#l00075">main.cpp:75</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a3161c2c93c655dd30953372064ec627b"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a3161c2c93c655dd30953372064ec627b">arm_compute::test::validation::alpha</a></div><div class="ttdeci">const float alpha</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_accumulate_8cpp_source.xhtml#l00103">Accumulate.cpp:103</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a5bbdcf574d3f5e412fa6a1117911e67b"><div class="ttname"><a href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_MSG(cond,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00328">Error.h:328</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_n_e_o_n_2_accumulate_8cpp_source.xhtml#l00103">arm_compute::test::validation::alpha</a>, <a class="el" href="_error_8h_source.xhtml#l00328">ARM_COMPUTE_ERROR_ON_MSG</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="main_8cpp_source.xhtml#l00075">arm_compute::test::library</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00098">arm_compute::test::validation::output_data_type</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a96aec9e46985dbfdc79566407d8ad793"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96aec9e46985dbfdc79566407d8ad793">&#9670;&nbsp;</a></span>accumulate_weighted() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::accumulate_weighted </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>alpha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>output_data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7a20c17062ce636db94d101bb3f01a0e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a20c17062ce636db94d101bb3f01a0e">&#9670;&nbsp;</a></span>activate_float()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">T arm_compute::test::validation::reference::activate_float </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationLayerInfo::ActivationFunction</a>&#160;</td>
<td class="paramname"><em>activation</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_activation_layer_8h_source.xhtml#l00039">39</a> of file <a class="el" href="_activation_layer_8h_source.xhtml">ActivationLayer.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; T ret;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">switch</span>(activation)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::ABS:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; ret = std::abs(x);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::LINEAR:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; ret = a * x + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::LOGISTIC:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; ret = static_cast&lt;T&gt;(1) / (static_cast&lt;T&gt;(1) + std::exp(-x));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::RELU:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; ret = std::max&lt;T&gt;(static_cast&lt;T&gt;(0), x);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::BOUNDED_RELU:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; ret = std::min&lt;T&gt;(a, std::max(static_cast&lt;T&gt;(0), x));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; ret = std::min&lt;T&gt;(a, std::max&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, x));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::LEAKY_RELU:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; ret = (x &gt; 0) ? x : a * x;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::SOFT_RELU:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; ret = std::log(static_cast&lt;T&gt;(1) + std::exp(x));</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::SQRT:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; ret = std::sqrt(x);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::SQUARE:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; ret = x * x;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::TANH:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; ret = a * std::tanh(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> * x);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::IDENTITY:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; ret = x;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Unsupported activation function&quot;</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaa7d8a220d2262f9d6c658d549ee12cf2c">ActivationLayerInfo::ABS</a>, <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaacc516ab03b98f1c908ddf6ed4a7c45e9">ActivationLayerInfo::BOUNDED_RELU</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaad8156d3c6735d75d8a1b8dedd0e79c8b">ActivationLayerInfo::IDENTITY</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaac7e80a3de04936f4e423e1b564fdca10">ActivationLayerInfo::LEAKY_RELU</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaaaac544aacc3615aada24897a215f5046">ActivationLayerInfo::LINEAR</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaa72ee60fba0509af07cbbd91398d8db9d">ActivationLayerInfo::LOGISTIC</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaaab1d4411a9e7f5e82002512cddfdc33a">ActivationLayerInfo::LU_BOUNDED_RELU</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaad346bb4679d29be241279f15d7795c1c">ActivationLayerInfo::RELU</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaadcc44a50c791a591c74e00ecdda7c58d">ActivationLayerInfo::SOFT_RELU</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaa36875f2500a09ee35d0bb7eb8c0b91b0">ActivationLayerInfo::SQRT</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaa12dec4e1f7ec620651b2b95c440ffac0">ActivationLayerInfo::SQUARE</a>, and <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaa143c8c6f51b9bb893ce71e38702e3cc1">ActivationLayerInfo::TANH</a>.</p>
</div>
</div>
<a id="a3802a0604503a4f9c4eb7189db69f11d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3802a0604503a4f9c4eb7189db69f11d">&#9670;&nbsp;</a></span>activation_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; activation_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a>&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>oq_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_activation_layer_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="validation_2reference_2_activation_layer_8cpp_source.xhtml">ActivationLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a>(oq_info);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1 };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> T a(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.a());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> T <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.b());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = activate_float&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i], a, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.activation());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a6dc630a6ae9cc063b3924bcea8dee9d6"><div class="ttname"><a href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(...)</div><div class="ttdoc">To avoid unused variables warnings.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00160">Error.h:160</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00160">ARM_COMPUTE_UNUSED</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="validation_2reference_2_batch_normalization_layer_8cpp_source.xhtml#l00040">batch_normalization_layer()</a>.</p>
</div>
</div>
<a id="a313729bff7fa8ec949558abfe6cacb11"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a313729bff7fa8ec949558abfe6cacb11">&#9670;&nbsp;</a></span>activation_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::activation_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a>&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>oq_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad54829d0021829c5e84fca2b21c3c433"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad54829d0021829c5e84fca2b21c3c433">&#9670;&nbsp;</a></span>activation_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::activation_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a>&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>oq_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad988691e7bd192624a4d8544a80340c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad988691e7bd192624a4d8544a80340c1">&#9670;&nbsp;</a></span>activation_layer&lt; int16_t &gt;()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3802a0604503a4f9c4eb7189db69f11d">arm_compute::test::validation::reference::activation_layer</a>&lt; int16_t &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a>&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>oq_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_activation_layer_8cpp_source.xhtml#l00069">69</a> of file <a class="el" href="validation_2reference_2_activation_layer_8cpp_source.xhtml">ActivationLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> QuantizationInfo dst_qinfo = oq_info.empty() ? <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info() : oq_info;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; SimpleTensor&lt;float&gt; src_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a07dd201dc80490616bfe2d3f02c34b88">convert_from_symmetric</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; SimpleTensor&lt;float&gt; dst_tmp = activation_layer&lt;float&gt;(src_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; SimpleTensor&lt;int16_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = convert_to_symmetric&lt;int16_t&gt;(dst_tmp, dst_qinfo);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a07dd201dc80490616bfe2d3f02c34b88"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a07dd201dc80490616bfe2d3f02c34b88">arm_compute::test::validation::convert_from_symmetric</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; convert_from_symmetric(const SimpleTensor&lt; int16_t &gt; &amp;src)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00149">Helpers.cpp:149</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00149">arm_compute::test::validation::convert_from_symmetric()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_quantization_info_8h_source.xhtml#l00126">QuantizationInfo::empty()</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="ad5b06ffc3863187ee11b4410e19425c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad5b06ffc3863187ee11b4410e19425c0">&#9670;&nbsp;</a></span>activation_layer&lt; uint8_t &gt;()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3802a0604503a4f9c4eb7189db69f11d">arm_compute::test::validation::reference::activation_layer</a>&lt; uint8_t &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a>&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>oq_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_activation_layer_8cpp_source.xhtml#l00058">58</a> of file <a class="el" href="validation_2reference_2_activation_layer_8cpp_source.xhtml">ActivationLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> QuantizationInfo dst_qinfo = oq_info.empty() ? <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info() : oq_info;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; SimpleTensor&lt;float&gt; src_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; SimpleTensor&lt;float&gt; dst_tmp = activation_layer&lt;float&gt;(src_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">convert_to_asymmetric</a>(dst_tmp, dst_qinfo);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a291a16e64b05bdf4d08e1240d5bb286a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">arm_compute::test::validation::convert_to_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; convert_to_asymmetric(const SimpleTensor&lt; float &gt; &amp;src, const QuantizationInfo &amp;quantization_info)</div><div class="ttdoc">Convert float simple tensor into quantized using specified quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">Helpers.cpp:123</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab24849be91cfb00a72f7a61a7e00fdb7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">arm_compute::test::validation::convert_from_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; convert_from_asymmetric(const SimpleTensor&lt; uint8_t &gt; &amp;src)</div><div class="ttdoc">Convert quantized simple tensor into float using tensor quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">Helpers.cpp:111</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">arm_compute::test::validation::convert_from_asymmetric()</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">arm_compute::test::validation::convert_to_asymmetric()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_quantization_info_8h_source.xhtml#l00126">QuantizationInfo::empty()</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="ad3ab69a504e69097ee96b458cb26e011"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad3ab69a504e69097ee96b458cb26e011">&#9670;&nbsp;</a></span>arithmetic_division() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; arithmetic_division </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_arithmetic_division_8cpp_source.xhtml#l00076">76</a> of file <a class="el" href="reference_2_arithmetic_division_8cpp_source.xhtml">ArithmeticDivision.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(TensorShape::broadcast_shape(src1.shape(), src2.shape()), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; Coordinates id_src1{};</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; Coordinates id_src2{};</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; Coordinates id_dst{};</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; BroadcastUnroll&lt;Coordinates::num_max_dimensions&gt;::unroll(src1, src2, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, id_src1, id_src2, id_dst);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5f5b6c4337eac9e2e0046ca2304d80dc"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">arm_compute::test::validation::data_type</a></div><div class="ttdeci">data_type</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00135">ArithmeticAddition.cpp:135</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_tensor_shape_8h_source.xhtml#l00210">TensorShape::broadcast_shape()</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00135">arm_compute::test::validation::data_type</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a1729a8530c6b38895574c9a2eebc6f05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1729a8530c6b38895574c9a2eebc6f05">&#9670;&nbsp;</a></span>arithmetic_division() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::arithmetic_division </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae6fc7ed5c0825af21afdcff5b3123ab5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6fc7ed5c0825af21afdcff5b3123ab5">&#9670;&nbsp;</a></span>arithmetic_division() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::arithmetic_division </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>data_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acf9af191573bdcb8e1b0be4b10ba5954"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf9af191573bdcb8e1b0be4b10ba5954">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[1/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arithmetic_operations_8cpp_source.xhtml#l00089">89</a> of file <a class="el" href="_arithmetic_operations_8cpp_source.xhtml">ArithmeticOperations.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; Coordinates id_src1{};</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; Coordinates id_src2{};</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; Coordinates id_dst{};</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; BroadcastUnroll&lt;Coordinates::num_max_dimensions&gt;::unroll(op, src1, src2, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, id_src1, id_src2, id_dst);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d58c32bff63e4c34b3234f884a4da58"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">arm_compute::test::validation::convert_policy</a></div><div class="ttdeci">convert_policy</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">arm_compute::test::validation::convert_policy</a>, and <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>.</p>
<p class="reference">Referenced by <a class="el" href="validation_2reference_2_laplacian_reconstruct_8cpp_source.xhtml#l00040">laplacian_reconstruct()</a>.</p>
</div>
</div>
<a id="aaa61583632c4ba9f979ef7694376f6d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa61583632c4ba9f979ef7694376f6d4">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[2/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arithmetic_operations_8cpp_source.xhtml#l00101">101</a> of file <a class="el" href="_arithmetic_operations_8cpp_source.xhtml">ArithmeticOperations.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;{</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; Coordinates id_src1{};</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; Coordinates id_src2{};</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; Coordinates id_dst{};</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data_type() == DataType::QASYMM8)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; SimpleTensor&lt;float&gt; src1_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(src1);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; SimpleTensor&lt;float&gt; src2_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(src2);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; SimpleTensor&lt;float&gt; dst_tmp(TensorShape::broadcast_shape(src1.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">shape</a>(), src2.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">shape</a>()), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data_type());</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; BroadcastUnroll&lt;Coordinates::num_max_dimensions&gt;::unroll(op, src1_tmp, src2_tmp, dst_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, id_src1, id_src2, id_dst);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">convert_to_asymmetric</a>(dst_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.quantization_info());</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// DataType::U8</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; BroadcastUnroll&lt;Coordinates::num_max_dimensions&gt;::unroll(op, src1, src2, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, id_src1, id_src2, id_dst);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d58c32bff63e4c34b3234f884a4da58"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">arm_compute::test::validation::convert_policy</a></div><div class="ttdeci">convert_policy</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="classarm__compute_1_1test_1_1_simple_tensor_xhtml_aba5871b3e4a65d057ec1c28fce8b00ba"><div class="ttname"><a href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">arm_compute::test::SimpleTensor::shape</a></div><div class="ttdeci">TensorShape shape() const override</div><div class="ttdoc">Shape of the tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor.h:321</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a291a16e64b05bdf4d08e1240d5bb286a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">arm_compute::test::validation::convert_to_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; convert_to_asymmetric(const SimpleTensor&lt; float &gt; &amp;src, const QuantizationInfo &amp;quantization_info)</div><div class="ttdoc">Convert float simple tensor into quantized using specified quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">Helpers.cpp:123</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab24849be91cfb00a72f7a61a7e00fdb7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">arm_compute::test::validation::convert_from_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; convert_from_asymmetric(const SimpleTensor&lt; uint8_t &gt; &amp;src)</div><div class="ttdoc">Convert quantized simple tensor into float using tensor quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">Helpers.cpp:111</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_tensor_shape_8h_source.xhtml#l00210">TensorShape::broadcast_shape()</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">arm_compute::test::validation::convert_from_asymmetric()</a>, <a class="el" href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">arm_compute::test::validation::convert_policy</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">arm_compute::test::validation::convert_to_asymmetric()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6af14462d71aa842202c3e4b272c7ec924">arm_compute::QASYMM8</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a22dc6973039d30ebe25370d5e64717a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22dc6973039d30ebe25370d5e64717a0">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[3/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arithmetic_operations_8cpp_source.xhtml#l00128">128</a> of file <a class="el" href="_arithmetic_operations_8cpp_source.xhtml">ArithmeticOperations.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; Coordinates id_src1{};</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; Coordinates id_src2{};</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; Coordinates id_dst{};</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data_type() == DataType::QSYMM16)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; SimpleTensor&lt;float&gt; src1_tmp = convert_from_symmetric&lt;int16_t&gt;(src1);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; SimpleTensor&lt;float&gt; src2_tmp = convert_from_symmetric&lt;int16_t&gt;(src2);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; SimpleTensor&lt;float&gt; dst_tmp(TensorShape::broadcast_shape(src1.shape(), src2.shape()), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data_type());</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; BroadcastUnroll&lt;Coordinates::num_max_dimensions&gt;::unroll(op, src1_tmp, src2_tmp, dst_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, id_src1, id_src2, id_dst);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = convert_to_symmetric&lt;int16_t&gt;(dst_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.quantization_info());</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// DataType::S16</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; BroadcastUnroll&lt;Coordinates::num_max_dimensions&gt;::unroll(op, src1, src2, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, id_src1, id_src2, id_dst);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d58c32bff63e4c34b3234f884a4da58"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">arm_compute::test::validation::convert_policy</a></div><div class="ttdeci">convert_policy</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_tensor_shape_8h_source.xhtml#l00210">TensorShape::broadcast_shape()</a>, <a class="el" href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">arm_compute::test::validation::convert_policy</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a3ca8a4ea8f992df3b462bc7b24d097c6">arm_compute::QSYMM16</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a5ec33e48961de1cd1e68b0132f674f96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ec33e48961de1cd1e68b0132f674f96">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[4/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5db9557ac53637ea72421b32386f9e40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5db9557ac53637ea72421b32386f9e40">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[5/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aff2a214f6417b4641928bd533da4960c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff2a214f6417b4641928bd533da4960c">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[6/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a41815e938f6643786fe39fad6e362d81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41815e938f6643786fe39fad6e362d81">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[7/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_arithmetic_operations_8cpp_source.xhtml#l00158">158</a> of file <a class="el" href="_arithmetic_operations_8cpp_source.xhtml">ArithmeticOperations.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a>(<a class="code" href="namespacearm__compute.xhtml#a0bee325b210f81bb89fe1f9e15badf9c">is_data_type_quantized</a>(dst_data_type), <span class="stringliteral">&quot;For quantized input data types, the quantized output tensor should be passed directly.&quot;</span>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(TensorShape::broadcast_shape(src1.shape(), src2.shape()), dst_data_type);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; arithmetic_operation&lt;T&gt;(op, src1, src2, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div><div class="ttc" id="namespacearm__compute_xhtml_a0bee325b210f81bb89fe1f9e15badf9c"><div class="ttname"><a href="namespacearm__compute.xhtml#a0bee325b210f81bb89fe1f9e15badf9c">arm_compute::is_data_type_quantized</a></div><div class="ttdeci">bool is_data_type_quantized(DataType dt)</div><div class="ttdoc">Check if a given data type is of quantized type.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_utils_8h_source.xhtml#l01010">Utils.h:1010</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d58c32bff63e4c34b3234f884a4da58"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">arm_compute::test::validation::convert_policy</a></div><div class="ttdeci">convert_policy</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a5bbdcf574d3f5e412fa6a1117911e67b"><div class="ttname"><a href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_MSG(cond,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00328">Error.h:328</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00328">ARM_COMPUTE_ERROR_ON_MSG</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00210">TensorShape::broadcast_shape()</a>, <a class="el" href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">arm_compute::test::validation::convert_policy</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l01010">arm_compute::is_data_type_quantized()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a554906dce7e96493648d8d63de9bf37e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a554906dce7e96493648d8d63de9bf37e">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[8/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a07939197761c818f07b5e3ff8553fa8c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07939197761c818f07b5e3ff8553fa8c">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[9/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2af6bc180bf7d3b3b82a528ee1c1b572"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2af6bc180bf7d3b3b82a528ee1c1b572">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[10/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a89bf6564436779db314a3c36b7d1fa88"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89bf6564436779db314a3c36b7d1fa88">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[11/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a03fab65218f4bac85ecc134484ab3b81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a03fab65218f4bac85ecc134484ab3b81">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[12/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int32_t&gt; arm_compute::test::validation::reference::arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7cc0449246a464e6bb09502ba1b1180e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cc0449246a464e6bb09502ba1b1180e">&#9670;&nbsp;</a></span>arithmetic_operation() <span class="overload">[13/13]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int32_t&gt; arm_compute::test::validation::reference::arithmetic_operation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8ae">ArithmeticOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9b59ab07308c9b51bfb23f6c8bd21021"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b59ab07308c9b51bfb23f6c8bd21021">&#9670;&nbsp;</a></span>batch_normalization_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; batch_normalization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>gamma</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a>&#160;</td>
<td class="paramname"><em>act_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_batch_normalization_layer_8cpp_source.xhtml#l00040">40</a> of file <a class="el" href="validation_2reference_2_batch_normalization_layer_8cpp_source.xhtml">BatchNormalizationLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; SimpleTensor&lt;T&gt; result(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> cols = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0]);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> rows = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1]);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> depth = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2]);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> upper_dims = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size() / (cols * rows * depth);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; upper_dims; ++r)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; depth; ++i)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k &lt; rows; ++k)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> l = 0; l &lt; cols; ++l)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pos = l + k * cols + i * rows * cols + r * cols * rows * depth;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> denominator = sqrt(var[i] + <a class="code" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> numerator = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[pos] - mean[i];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> x_bar = numerator / denominator;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; result[pos] = beta[i] + x_bar * gamma[i];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1f8aca235c095df227e7444f6b237eb1">act_info</a>.enabled())</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; result = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3802a0604503a4f9c4eb7189db69f11d">activation_layer</a>(result, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1f8aca235c095df227e7444f6b237eb1">act_info</a>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a3802a0604503a4f9c4eb7189db69f11d"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3802a0604503a4f9c4eb7189db69f11d">arm_compute::test::validation::reference::activation_layer</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; activation_layer(const SimpleTensor&lt; T &gt; &amp;src, ActivationLayerInfo info, const QuantizationInfo &amp;oq_info)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_activation_layer_8cpp_source.xhtml#l00038">ActivationLayer.cpp:38</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1f8aca235c095df227e7444f6b237eb1"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1f8aca235c095df227e7444f6b237eb1">arm_compute::test::validation::act_info</a></div><div class="ttdeci">act_info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00175">ConvolutionLayer.cpp:175</a></div></div>
<div class="ttc" id="_asymm_helpers_8cpp_xhtml_a552dc3787d7ea1675f3e4e8993501d58"><div class="ttname"><a href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a></div><div class="ttdeci">constexpr float epsilon</div><div class="ttdef"><b>Definition:</b> <a href="_asymm_helpers_8cpp_source.xhtml#l00033">AsymmHelpers.cpp:33</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00175">arm_compute::test::validation::act_info</a>, <a class="el" href="validation_2reference_2_activation_layer_8cpp_source.xhtml#l00038">activation_layer()</a>, <a class="el" href="_asymm_helpers_8cpp_source.xhtml#l00033">epsilon</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="af0c46a385d4a694b228d527433901b92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0c46a385d4a694b228d527433901b92">&#9670;&nbsp;</a></span>batch_normalization_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::batch_normalization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>gamma</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a>&#160;</td>
<td class="paramname"><em>act_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aac19e9350e59de09cc88646b5352f7fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac19e9350e59de09cc88646b5352f7fb">&#9670;&nbsp;</a></span>batch_normalization_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::batch_normalization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>gamma</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a>&#160;</td>
<td class="paramname"><em>act_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa759ea865a99fcd45399d91506056f3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa759ea865a99fcd45399d91506056f3d">&#9670;&nbsp;</a></span>batch_to_space() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; batch_to_space </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>block_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_batch_to_space_layer_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_batch_to_space_layer_8cpp_source.xhtml">BatchToSpaceLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(block_shape[0] &lt;= 0);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(block_shape[1] &lt;= 0);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; SimpleTensor&lt;T&gt; result(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">int</span> in_pos = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> width_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0]);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> height_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1]);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> z_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2]);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> batch_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[3]);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> batch = 0; batch &lt; batch_in; ++batch)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> z = 0; z &lt; z_in; ++z)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = 0; y &lt; height_in; ++y)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = 0; x &lt; width_in; ++x)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> r = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[3] / (block_shape[0] * block_shape[1]);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_x = (block_shape[0] * x + (batch / r) % block_shape[0]);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_y = (block_shape[1] * y + (batch / r) / block_shape[0]);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_pos = out_x + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[0] * out_y + z * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[0] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[1] + (batch % r) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[0] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[1] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[2];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; result[out_pos] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[in_pos];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; ++in_pos;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a71aee17712ae0fcf913df5d651cd5eb3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71aee17712ae0fcf913df5d651cd5eb3">&#9670;&nbsp;</a></span>batch_to_space() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::batch_to_space </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>block_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5795210429190bccc66045566a47edf5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5795210429190bccc66045566a47edf5">&#9670;&nbsp;</a></span>batch_to_space() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::batch_to_space </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>block_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7229d506620fd44c5916716f7bf696b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7229d506620fd44c5916716f7bf696b2">&#9670;&nbsp;</a></span>bitwise_and() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; bitwise_and </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_bitwise_and_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="reference_2_bitwise_and_8cpp_source.xhtml">BitwiseAnd.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(src1.shape(), src1.data_type());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; src1.num_elements(); ++i)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = src1[i] &amp; src2[i];</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00407">SimpleTensor&lt; T &gt;::num_elements()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a55c7ec1e1273f65d37c51ff1d39a5d77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a55c7ec1e1273f65d37c51ff1d39a5d77">&#9670;&nbsp;</a></span>bitwise_and() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::bitwise_and </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af4713d48a2398823bcfd449c2aafef30"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4713d48a2398823bcfd449c2aafef30">&#9670;&nbsp;</a></span>bitwise_not() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; bitwise_not </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_bitwise_not_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="reference_2_bitwise_not_8cpp_source.xhtml">BitwiseNot.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = ~<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i];</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a003581bd71ae054b9b7ff70d975856d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a003581bd71ae054b9b7ff70d975856d8">&#9670;&nbsp;</a></span>bitwise_not() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::bitwise_not </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abe5e573ce60f341bbeebd0498d8e499b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe5e573ce60f341bbeebd0498d8e499b">&#9670;&nbsp;</a></span>bitwise_or() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; bitwise_or </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_bitwise_or_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="reference_2_bitwise_or_8cpp_source.xhtml">BitwiseOr.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(src1.shape(), src1.data_type());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; src1.num_elements(); ++i)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = src1[i] | src2[i];</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00407">SimpleTensor&lt; T &gt;::num_elements()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a89ed2687d967ec8a8ffc24195fbda72e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89ed2687d967ec8a8ffc24195fbda72e">&#9670;&nbsp;</a></span>bitwise_or() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::bitwise_or </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aade8c313bbf87320b8b8f81c5ff5aeac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aade8c313bbf87320b8b8f81c5ff5aeac">&#9670;&nbsp;</a></span>bitwise_xor() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; bitwise_xor </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_bitwise_xor_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="reference_2_bitwise_xor_8cpp_source.xhtml">BitwiseXor.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(src1.shape(), src1.data_type());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; src1.num_elements(); ++i)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = src1[i] ^ src2[i];</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00407">SimpleTensor&lt; T &gt;::num_elements()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="af05c4e8f9356af6f59bb1e7f48b97d4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af05c4e8f9356af6f59bb1e7f48b97d4d">&#9670;&nbsp;</a></span>bitwise_xor() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::bitwise_xor </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acf07b6d2bb97c0f4ab096187a7221718"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf07b6d2bb97c0f4ab096187a7221718">&#9670;&nbsp;</a></span>bounding_box_transform() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; bounding_box_transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>boxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>deltas</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_bounding_box_transform_info.xhtml">BoundingBoxTransformInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_bounding_box_transform_8cpp_source.xhtml#l00040">40</a> of file <a class="el" href="reference_2_bounding_box_transform_8cpp_source.xhtml">BoundingBoxTransform.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> boxes_data_type = deltas.data_type();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; SimpleTensor&lt;T&gt; pred_boxes(deltas.shape(), boxes_data_type);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_classes = deltas.shape()[0] / 4;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_boxes = deltas.shape()[1];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> T *deltas_ptr = deltas.data();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; T *pred_boxes_ptr = pred_boxes.data();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> img_h = floor(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.img_height() / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.scale() + 0.5f);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> img_w = floor(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.img_width() / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.scale() + 0.5f);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> scale_after = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.apply_scale() ? T(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.scale()) : T(1));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> scale_before = T(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.scale());</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(scale_before &lt;= 0);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a> = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.correct_transform_coords() ? T(1.f) : T(0.f));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> box_fields = 4;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> class_fields = 4;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; num_boxes; ++i)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// Extract ROI information</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> start_box = box_fields * i;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> T width = (boxes[start_box + 2] / scale_before) - (boxes[start_box] / scale_before) + T(1.f);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> T height = (boxes[start_box + 3] / scale_before) - (boxes[start_box + 1] / scale_before) + T(1.f);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">const</span> T ctr_x = (boxes[start_box] / scale_before) + T(0.5f) * width;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">const</span> T ctr_y = (boxes[start_box + 1] / scale_before) + T(0.5f) * height;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> j = 0; j &lt; num_classes; ++j)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">// Extract deltas</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> start_delta = i * num_classes * class_fields + class_fields * j;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> T dx = deltas_ptr[start_delta] / T(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.weights()[0]);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> T dy = deltas_ptr[start_delta + 1] / T(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.weights()[1]);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; T dw = deltas_ptr[start_delta + 2] / T(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.weights()[2]);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; T dh = deltas_ptr[start_delta + 3] / T(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.weights()[3]);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// Clip dw and dh</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; dw = std::min(dw, T(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.bbox_xform_clip()));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; dh = std::min(dh, T(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.bbox_xform_clip()));</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">// Determine the predictions</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">const</span> T pred_ctr_x = dx * width + ctr_x;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">const</span> T pred_ctr_y = dy * height + ctr_y;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> T pred_w = T(std::exp(dw)) * width;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">const</span> T pred_h = T(std::exp(dh)) * height;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="comment">// Store the prediction into the output tensor</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; pred_boxes_ptr[start_delta] = scale_after * utility::clamp&lt;T&gt;(pred_ctr_x - T(0.5f) * pred_w, T(0), T(img_w - 1));</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; pred_boxes_ptr[start_delta + 1] = scale_after * utility::clamp&lt;T&gt;(pred_ctr_y - T(0.5f) * pred_h, T(0), T(img_h - 1));</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; pred_boxes_ptr[start_delta + 2] = scale_after * utility::clamp&lt;T&gt;(pred_ctr_x + T(0.5f) * pred_w - <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>, T(0), T(img_w - 1));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; pred_boxes_ptr[start_delta + 3] = scale_after * utility::clamp&lt;T&gt;(pred_ctr_y + T(0.5f) * pred_h - <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>, T(0), T(img_h - 1));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> pred_boxes;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;}</div><div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">helpers.h:328</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00074">Types.h:74</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">offset()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a1508c928b8a97a8381b8d441ad1417c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1508c928b8a97a8381b8d441ad1417c2">&#9670;&nbsp;</a></span>bounding_box_transform() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::bounding_box_transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>boxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>deltas</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_bounding_box_transform_info.xhtml">BoundingBoxTransformInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a137920e5250375eeb4bc273a5d23aba2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a137920e5250375eeb4bc273a5d23aba2">&#9670;&nbsp;</a></span>bounding_box_transform() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::bounding_box_transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>boxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>deltas</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_bounding_box_transform_info.xhtml">BoundingBoxTransformInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa048ec4655f2ebb10b8d1f301f60df69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa048ec4655f2ebb10b8d1f301f60df69">&#9670;&nbsp;</a></span>box3x3() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; box3x3 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_box3x3_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_box3x3_8cpp_source.xhtml">Box3x3.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> std::array&lt;T, 9&gt; filter{ { 1, 1, 1, 1, 1, 1, 1, 1, 1 } };</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a> = 1.f / static_cast&lt;float&gt;(filter.size());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> element_idx = 0; element_idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++element_idx)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> Coordinates <span class="keywordtype">id</span> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), element_idx);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(<span class="keywordtype">id</span>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, TensorShape(3<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 3<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>), filter.data(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d1175c32ed7ea771e8ea46c936ea5c7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">arm_compute::test::validation::apply_2d_spatial_filter</a></div><div class="ttdeci">void apply_2d_spatial_filter(Coordinates coord, const SimpleTensor&lt; T &gt; &amp;src, SimpleTensor&lt; U &gt; &amp;dst, const TensorShape &amp;filter_shape, const V *filter_itr, double scale, BorderMode border_mode, T constant_border_value=T(0))</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00098">Utils.h:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_1_1cast_xhtml_a2ea3d1fc01a3a442900249ca182ffa5e"><div class="ttname"><a href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">arm_compute::utils::cast::U</a></div><div class="ttdeci">U</div><div class="ttdef"><b>Definition:</b> <a href="_saturate_cast_8h_source.xhtml#l00057">SaturateCast.h:57</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00098">arm_compute::test::validation::apply_2d_spatial_filter()</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a2ff0714b006e333c893d87a928d88da6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ff0714b006e333c893d87a928d88da6">&#9670;&nbsp;</a></span>box3x3() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::box3x3 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="_c_l_2_box3x3_8cpp_source.xhtml#l00053">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="aacc7e9df985310966100b88ef3bed59c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aacc7e9df985310966100b88ef3bed59c">&#9670;&nbsp;</a></span>canny_edge_detector() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; canny_edge_detector </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>upper_thresh</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>lower_thresh</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>gradient_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8a">MagnitudeType</a>&#160;</td>
<td class="paramname"><em>norm_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_canny_edge_detector_8cpp_source.xhtml#l00234">234</a> of file <a class="el" href="_canny_edge_detector_8cpp_source.xhtml">CannyEdgeDetector.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span>(gradient_size &lt; 7)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> canny_edge_detector_impl&lt;int16_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, upper_thresh, lower_thresh, gradient_size, norm_type, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> canny_edge_detector_impl&lt;int32_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, upper_thresh, lower_thresh, gradient_size, norm_type, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="ac2885998be053c89fa6bd41cdeda9656"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2885998be053c89fa6bd41cdeda9656">&#9670;&nbsp;</a></span>canny_edge_detector() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::canny_edge_detector </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>upper_thresh</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>lower_thresh</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>gradient_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8a">MagnitudeType</a>&#160;</td>
<td class="paramname"><em>norm_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad2b7a225c81e58726bad28af5f8d84c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2b7a225c81e58726bad28af5f8d84c3">&#9670;&nbsp;</a></span>channel_combine() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt; channel_combine </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>image_planes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a>&#160;</td>
<td class="paramname"><em>format</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_channel_combine_8cpp_source.xhtml#l00091">91</a> of file <a class="el" href="reference_2_channel_combine_8cpp_source.xhtml">ChannelCombine.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; std::vector&lt;SimpleTensor&lt;T&gt;&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = create_image_planes&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>, format);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> plane_idx = 0; plane_idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.size(); ++plane_idx)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; SimpleTensor&lt;T&gt; &amp;dst_tensor = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[plane_idx];</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> element_idx = 0; element_idx &lt; dst_tensor.num_elements(); ++element_idx)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; Coordinates coord = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(dst_tensor.shape(), element_idx);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">switch</span>(format)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// Copy R/G/B or A channel</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> channel_idx = 0; channel_idx &lt; dst_tensor.num_channels(); ++channel_idx)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">const</span> T &amp;src_value = reinterpret_cast&lt;const T *&gt;(image_planes[channel_idx](coord))[0];</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; T &amp;dst_value = reinterpret_cast&lt;T *&gt;(dst_tensor(coord))[channel_idx];</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; dst_value = src_value;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">case</span> Format::YUYV422:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">case</span> Format::UYVY422:</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// Find coordinates of the sub-sampled pixel</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">const</span> Coordinates coord_hori(coord.x() / 2, coord.y());</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> T &amp;src0 = reinterpret_cast&lt;const T *&gt;(image_planes[0](coord))[0];</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">const</span> T &amp;src1 = reinterpret_cast&lt;const T *&gt;(image_planes[1](coord_hori))[0];</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a> = (Format::YUYV422 == format) ? 1 : 0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; T &amp;dst0 = reinterpret_cast&lt;T *&gt;(dst_tensor(coord))[1 - <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>];</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; T &amp;dst1 = reinterpret_cast&lt;T *&gt;(dst_tensor(coord))[0 + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>];</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; dst0 = src0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; dst1 = src1;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; Coordinates coord2 = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(dst_tensor.shape(), ++element_idx);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">const</span> T &amp;src2 = reinterpret_cast&lt;const T *&gt;(image_planes[0](coord2))[0];</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> T &amp;src3 = reinterpret_cast&lt;const T *&gt;(image_planes[2](coord_hori))[0];</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; T &amp;dst2 = reinterpret_cast&lt;T *&gt;(dst_tensor(coord2))[1 - <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>];</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; T &amp;dst3 = reinterpret_cast&lt;T *&gt;(dst_tensor(coord2))[0 + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>];</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; dst2 = src2;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; dst3 = src3;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span>(0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a> == plane_idx)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="comment">// Get and combine Y channel from plane0 of destination multi-image</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; dst_tensor[element_idx] = image_planes[0][element_idx];</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a> = (Format::NV12 == format) ? 0 : 1;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// Get U channel from plane1 and V channel from plane2 of the source</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> T &amp;src_u0 = reinterpret_cast&lt;const T *&gt;(image_planes[1](coord))[0];</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">const</span> T &amp;src_v0 = reinterpret_cast&lt;const T *&gt;(image_planes[2](coord))[0];</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="comment">// Get U and V channel from plane1 of destination multi-image</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; T &amp;dst_u0 = reinterpret_cast&lt;T *&gt;(dst_tensor(coord))[0 + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>];</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; T &amp;dst_v0 = reinterpret_cast&lt;T *&gt;(dst_tensor(coord))[1 - <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>];</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">// Combine channel U and V</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; dst_u0 = src_u0;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; dst_v0 = src_v0;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// Get Y/U/V element</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> T &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a> = reinterpret_cast&lt;const T *&gt;(image_planes[plane_idx](coord))[0];</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; T &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = reinterpret_cast&lt;T *&gt;(dst_tensor(coord))[0];</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="comment">// Copy Y/U/V plane</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Not supported&quot;</span>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a45cde9abb508c62d67c3bb2b9bf566a5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">arm_compute::test::validation::shape</a></div><div class="ttdeci">shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00097">AbsoluteDifference.cpp:97</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a979a54caef6e77ce0259e427136847e8"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">arm_compute::test::validation::shift</a></div><div class="ttdeci">shift</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_depth_convert_layer_8cpp_source.xhtml#l00155">DepthConvertLayer.cpp:155</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_1_1cast_xhtml_a2ea3d1fc01a3a442900249ca182ffa5e"><div class="ttname"><a href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">arm_compute::utils::cast::U</a></div><div class="ttdeci">U</div><div class="ttdef"><b>Definition:</b> <a href="_saturate_cast_8h_source.xhtml#l00057">SaturateCast.h:57</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ab08f0cb36474118c5bbc03b3a172a778">arm_compute::IYUV</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00371">SimpleTensor&lt; T &gt;::num_channels()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00407">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a202f5d8c2c70d31048154d8b8b28e755">arm_compute::NV12</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a8e9f6aa1af7e0abbc7e64521e6ffe1b4">arm_compute::NV21</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a30ff380a3be74628024063a99fba10f0">arm_compute::RGB888</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a165f06116e7b8d9b2481dfc805db4619">arm_compute::RGBA8888</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00097">arm_compute::test::validation::shape</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="_c_l_2_depth_convert_layer_8cpp_source.xhtml#l00155">arm_compute::test::validation::shift</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58af557448a61ad2927194f63442e131dfa">arm_compute::UYVY422</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00086">Dimensions&lt; T &gt;::y()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a11cfa56ee0ddbbc30a2fd189d7475f4c">arm_compute::YUV444</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a481e7a6945eb9f23e87f2de780b2e164">arm_compute::YUYV422</a>.</p>
</div>
</div>
<a id="a15a83291552130a09c9725895fa1f677"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15a83291552130a09c9725895fa1f677">&#9670;&nbsp;</a></span>channel_combine() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::vector&lt;<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; &gt; arm_compute::test::validation::reference::channel_combine </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>image_planes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a>&#160;</td>
<td class="paramname"><em>format</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af0b4ddddba7177964382fe96ab0e611d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0b4ddddba7177964382fe96ab0e611d">&#9670;&nbsp;</a></span>channel_extract() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; channel_extract </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>tensor_planes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a>&#160;</td>
<td class="paramname"><em>format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455a">Channel</a>&#160;</td>
<td class="paramname"><em>channel</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_channel_extract_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_channel_extract_8cpp_source.xhtml">ChannelExtract.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// Find plane and channel index</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> plane_idx = <a class="code" href="namespacearm__compute.xhtml#a4f6fe18760340bcec02d095b7099e923">plane_idx_from_channel</a>(format, channel);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channel_idx = <a class="code" href="namespacearm__compute.xhtml#afab149f8d8b0f6405303ee8056fa77d3">channel_idx_from_format</a>(format, channel);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// Create dst and get src tensor</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a> = tensor_planes[plane_idx];</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute.xhtml#a9d714e1b7d9d7818309138b7d830ebcb">calculate_subsampled_shape</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>, format, channel), Format::U8 };</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// Single planar formats with subsampling require a double horizontal step</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> step_x = ((Format::YUYV422 == format || Format::UYVY422 == format) &amp;&amp; Channel::Y != channel) ? 2 : 1;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().x();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().y();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// Loop over each pixel and extract channel</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = 0; y &lt; height; ++y)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = 0; x &lt; width; ++x)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> Coordinates src_coord{ x * step_x, y };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> Coordinates dst_coord{ x, y };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> *src_pixel = reinterpret_cast&lt;const T *&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>(src_coord));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">auto</span> *dst_pixel = reinterpret_cast&lt;T *&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(dst_coord));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; dst_pixel[0] = src_pixel[channel_idx]; <span class="comment">// NOLINT</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a45cde9abb508c62d67c3bb2b9bf566a5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">arm_compute::test::validation::shape</a></div><div class="ttdeci">shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00097">AbsoluteDifference.cpp:97</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a4f6fe18760340bcec02d095b7099e923"><div class="ttname"><a href="namespacearm__compute.xhtml#a4f6fe18760340bcec02d095b7099e923">arm_compute::plane_idx_from_channel</a></div><div class="ttdeci">int plane_idx_from_channel(Format format, Channel channel)</div><div class="ttdoc">Return the plane index of a given channel given an input format.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_utils_8h_source.xhtml#l00256">Utils.h:256</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a9d714e1b7d9d7818309138b7d830ebcb"><div class="ttname"><a href="namespacearm__compute.xhtml#a9d714e1b7d9d7818309138b7d830ebcb">arm_compute::calculate_subsampled_shape</a></div><div class="ttdeci">TensorShape calculate_subsampled_shape(const TensorShape &amp;shape, Format format, Channel channel=Channel::UNKNOWN)</div><div class="ttdoc">Calculate subsampled shape for a given format and channel.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_utils_8h_source.xhtml#l00684">Utils.h:684</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_afab149f8d8b0f6405303ee8056fa77d3"><div class="ttname"><a href="namespacearm__compute.xhtml#afab149f8d8b0f6405303ee8056fa77d3">arm_compute::channel_idx_from_format</a></div><div class="ttdeci">int channel_idx_from_format(Format format, Channel channel)</div><div class="ttdoc">Return the channel index of a given channel given an input format.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_utils_8h_source.xhtml#l00320">Utils.h:320</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00684">arm_compute::calculate_subsampled_shape()</a>, <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00320">arm_compute::channel_idx_from_format()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00256">arm_compute::plane_idx_from_channel()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00097">arm_compute::test::validation::shape</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">arm_compute::U8</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58af557448a61ad2927194f63442e131dfa">arm_compute::UYVY422</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa57cec4137b614c87cb4e24a3d003a3e0">arm_compute::Y</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a481e7a6945eb9f23e87f2de780b2e164">arm_compute::YUYV422</a>.</p>
</div>
</div>
<a id="a5c1907cbb46b073bd529c6cdb6b3c8b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c1907cbb46b073bd529c6cdb6b3c8b9">&#9670;&nbsp;</a></span>channel_extract() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::channel_extract </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>tensor_planes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a>&#160;</td>
<td class="paramname"><em>format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455a">Channel</a>&#160;</td>
<td class="paramname"><em>channel</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab4e272f3519c88b88d5cdd668a24e822"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4e272f3519c88b88d5cdd668a24e822">&#9670;&nbsp;</a></span>channel_shuffle() <span class="overload">[1/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; channel_shuffle </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_channel_shuffle_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="reference_2_channel_shuffle_8cpp_source.xhtml">ChannelShuffle.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info() };</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> M = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0];</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1];</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_channels = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> batches = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[3];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> MxN = M * N;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> channels_in_group = num_channels / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> T *<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7f95b2fe523116abbad48f4924735324">src_ref</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; T *<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4ec422f21ff26135c1d63dc00729cdbd">dst_ref</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> n = 0; n &lt; batches; ++n)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> g = 0; g &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>; ++g)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// Gather the group g block (of size channels_in_group * MxN) from output channels</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// g + 0 * G, g + 1 * G, g + 2 * G, g + G * (K - 1) etc.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> T *src_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7f95b2fe523116abbad48f4924735324">src_ref</a> + g * channels_in_group * MxN + n * num_channels * MxN;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; T *dst_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4ec422f21ff26135c1d63dc00729cdbd">dst_ref</a> + g * MxN + n * num_channels * MxN;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; channels_in_group; ++i)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">std::copy</a>(src_ptr + i * MxN,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; src_ptr + (i + 1) * MxN,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; dst_ptr + i * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a> * MxN);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_ad9000ce99b9ffcec5722cade36d7e757"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">arm_compute::test::validation::reference::copy</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; copy(const SimpleTensor&lt; T &gt; &amp;src, const TensorShape &amp;output_shape)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_copy_8cpp_source.xhtml#l00037">Copy.cpp:37</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4ec422f21ff26135c1d63dc00729cdbd"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4ec422f21ff26135c1d63dc00729cdbd">arm_compute::test::validation::dst_ref</a></div><div class="ttdeci">auto dst_ref</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00172">DFT.cpp:172</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a2270b3e1d20651d2d8341c858c890830"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">arm_compute::test::validation::num_groups</a></div><div class="ttdeci">const unsigned int num_groups</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">Im2Col.cpp:148</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7f95b2fe523116abbad48f4924735324"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7f95b2fe523116abbad48f4924735324">arm_compute::test::validation::src_ref</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; src_ref</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00187">Im2Col.cpp:187</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="reference_2_copy_8cpp_source.xhtml#l00037">copy()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00172">arm_compute::test::validation::dst_ref</a>, <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">arm_compute::test::validation::num_groups</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00187">arm_compute::test::validation::src_ref</a>.</p>
</div>
</div>
<a id="a88adb35e57a000aebe497281c8cb0475"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88adb35e57a000aebe497281c8cb0475">&#9670;&nbsp;</a></span>channel_shuffle() <span class="overload">[2/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::channel_shuffle </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a205ca70e4eecdf6464747eaff8f855a1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a205ca70e4eecdf6464747eaff8f855a1">&#9670;&nbsp;</a></span>channel_shuffle() <span class="overload">[3/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint16_t&gt; arm_compute::test::validation::reference::channel_shuffle </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2131f5b7b37e97eda38ec49cecc94086"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2131f5b7b37e97eda38ec49cecc94086">&#9670;&nbsp;</a></span>channel_shuffle() <span class="overload">[4/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint32_t&gt; arm_compute::test::validation::reference::channel_shuffle </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a30d68588745ace70b40d9fbeb307cd4a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a30d68588745ace70b40d9fbeb307cd4a">&#9670;&nbsp;</a></span>channel_shuffle() <span class="overload">[5/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::channel_shuffle </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5c1fa253c6637e17d034e43ac52181f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c1fa253c6637e17d034e43ac52181f3">&#9670;&nbsp;</a></span>channel_shuffle() <span class="overload">[6/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::channel_shuffle </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a322ce5510f1325f02993132f5da68525"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a322ce5510f1325f02993132f5da68525">&#9670;&nbsp;</a></span>col2im() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; col2im </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_col2_im_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_col2_im_8cpp_source.xhtml">Col2Im.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1 };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> batches = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>.<a class="code" href="classarm__compute_1_1_tensor_shape.xhtml#a0fdcb923dfd4c74858cc2bc326321efb">total_size</a>() / (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">x</a>() * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#ac4a1050be02b20b3f791b9a483f3abe2">y</a>() * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#abb29a685080e999c2a0cb874d2f7bb5a">z</a>());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> src_width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> src_height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a> == 1)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// Batches are on the 3rd dimension of the input tensor</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">int</span> dst_idx = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> &lt; batches; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> x = 0; x &lt; src_width; ++x)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> y = 0; y &lt; src_height; ++y)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[dst_idx++] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[<a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), Coordinates(x, y, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>))];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">int</span> dst_idx = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> &lt; batches; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> g = 0; g &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>; ++g)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> x = 0; x &lt; src_width; ++x)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> y = 0; y &lt; src_height; ++y)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[dst_idx++] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[<a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), Coordinates(x, y, g, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>))];</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a9be4cb7e6ee20063a4a10bc3abb750b9"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">arm_compute::test::coord2index</a></div><div class="ttdeci">int coord2index(const TensorShape &amp;shape, const Coordinates &amp;coord)</div><div class="ttdoc">Linearise the given coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00480">Utils.h:480</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_aa87f8fc26981b0f3228a78c83b95b802"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">arm_compute::Dimensions::x</a></div><div class="ttdeci">T x() const</div><div class="ttdoc">Alias to access the size of the first dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00081">Dimensions.h:81</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_abb29a685080e999c2a0cb874d2f7bb5a"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#abb29a685080e999c2a0cb874d2f7bb5a">arm_compute::Dimensions::z</a></div><div class="ttdeci">T z() const</div><div class="ttdoc">Alias to access the size of the third dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00091">Dimensions.h:91</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a2270b3e1d20651d2d8341c858c890830"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">arm_compute::test::validation::num_groups</a></div><div class="ttdeci">const unsigned int num_groups</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">Im2Col.cpp:148</a></div></div>
<div class="ttc" id="classarm__compute_1_1_tensor_shape_xhtml_a0fdcb923dfd4c74858cc2bc326321efb"><div class="ttname"><a href="classarm__compute_1_1_tensor_shape.xhtml#a0fdcb923dfd4c74858cc2bc326321efb">arm_compute::TensorShape::total_size</a></div><div class="ttdeci">size_t total_size() const</div><div class="ttdoc">Collapses all dimensions to a single linear total size.</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_shape_8h_source.xhtml#l00171">TensorShape.h:171</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_ac4a1050be02b20b3f791b9a483f3abe2"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#ac4a1050be02b20b3f791b9a483f3abe2">arm_compute::Dimensions::y</a></div><div class="ttdeci">T y() const</div><div class="ttdoc">Alias to access the size of the second dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00086">Dimensions.h:86</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00480">arm_compute::test::coord2index()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">arm_compute::test::validation::num_groups</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00171">TensorShape::total_size()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00086">Dimensions&lt; T &gt;::y()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00091">Dimensions&lt; T &gt;::z()</a>.</p>
</div>
</div>
<a id="a9b681fe3cdd1dc6d31137220dbd0307d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b681fe3cdd1dc6d31137220dbd0307d">&#9670;&nbsp;</a></span>col2im() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::col2im </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae2dc7444c541764b71db241d2f37079a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2dc7444c541764b71db241d2f37079a">&#9670;&nbsp;</a></span>col2im() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::col2im </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a483cdee93e3819f748aac690e0f5f5a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a483cdee93e3819f748aac690e0f5f5a7">&#9670;&nbsp;</a></span>col2im() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::col2im </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a46c0b6c2eccdd522741cf4f1e3ba755b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46c0b6c2eccdd522741cf4f1e3ba755b">&#9670;&nbsp;</a></span>color_convert() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt; color_convert </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>tensor_planes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a>&#160;</td>
<td class="paramname"><em>src_format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a>&#160;</td>
<td class="paramname"><em>dst_format</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_color_convert_8cpp_source.xhtml#l00093">93</a> of file <a class="el" href="validation_2reference_2_color_convert_8cpp_source.xhtml">ColorConvert.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; std::vector&lt;SimpleTensor&lt;T&gt;&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = create_image_planes&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>, dst_format);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">switch</span>(src_format)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">switch</span>(dst_format)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a93cc303c8ae098d264f07d37890412de">colorconvert_helper::detail::colorconvert_rgb_to_rgbx</a>(tensor_planes[0], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[0]);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">case</span> Format::U8:</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="namespacearm__compute.xhtml#aa1d4cf707dec05e3ff1d63d4ce8065ca">colorconvert_helper::detail::colorconvert_rgb_to_u8</a>(tensor_planes[0], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[0]);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a14fd899b732509e245976b9967b8931d">colorconvert_helper::detail::colorconvert_rgb_to_nv12</a>(tensor_planes[0], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a49b7a8e217ba7aad821fdeaab86bad53">colorconvert_helper::detail::colorconvert_rgb_to_iyuv</a>(tensor_planes[0], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespacearm__compute.xhtml#ad304c0b0a72ed3f65c24fa69ab3cd53e">colorconvert_helper::detail::colorconvert_rgb_to_yuv4</a>(tensor_planes[0], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Not Supported&quot;</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">switch</span>(dst_format)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="namespacearm__compute.xhtml#acf7451c0d0f8a4b1cfbb60d7531a43aa">colorconvert_helper::detail::colorconvert_rgbx_to_rgb</a>(tensor_planes[0], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[0]);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a14fd899b732509e245976b9967b8931d">colorconvert_helper::detail::colorconvert_rgb_to_nv12</a>(tensor_planes[0], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a49b7a8e217ba7aad821fdeaab86bad53">colorconvert_helper::detail::colorconvert_rgb_to_iyuv</a>(tensor_planes[0], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespacearm__compute.xhtml#ad304c0b0a72ed3f65c24fa69ab3cd53e">colorconvert_helper::detail::colorconvert_rgb_to_yuv4</a>(tensor_planes[0], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Not Supported&quot;</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">case</span> Format::UYVY422:</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">case</span> Format::YUYV422:</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">switch</span>(dst_format)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a3c22c0d3494660b72b4fc04fec76f92d">colorconvert_helper::detail::colorconvert_yuyv_to_rgb</a>(tensor_planes[0], src_format, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[0]);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a8ee13904a3f5ba84b28cb53d956021d7">colorconvert_helper::detail::colorconvert_yuyv_to_nv12</a>(tensor_planes[0], src_format, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="namespacearm__compute.xhtml#ae43e8f0463c0289169025c3041688d36">colorconvert_helper::detail::colorconvert_yuyv_to_iyuv</a>(tensor_planes[0], src_format, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Not Supported&quot;</span>);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">switch</span>(dst_format)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a6e42fac1baa264b033ac430b63ebd145">colorconvert_helper::detail::colorconvert_iyuv_to_rgb</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>, tensor_planes, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[0]);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Not Supported&quot;</span>);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">switch</span>(dst_format)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="namespacearm__compute.xhtml#ae6a44e412bccc0705a720708b0692218">colorconvert_helper::detail::colorconvert_nv12_to_rgb</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>, src_format, tensor_planes, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[0]);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1colorconvert__helper_1_1detail.xhtml#a31c5dd66341f73cd38ae96d876c9d2a3">colorconvert_helper::detail::colorconvert_nv_to_iyuv</a>(tensor_planes, src_format, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1colorconvert__helper_1_1detail.xhtml#aca7296d0c60571db65670528b8e088c4">colorconvert_helper::detail::colorconvert_nv_to_yuv4</a>(tensor_planes, src_format, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Not Supported&quot;</span>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Not supported&quot;</span>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a45cde9abb508c62d67c3bb2b9bf566a5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">arm_compute::test::validation::shape</a></div><div class="ttdeci">shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00097">AbsoluteDifference.cpp:97</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1colorconvert__helper_1_1detail_xhtml_a31c5dd66341f73cd38ae96d876c9d2a3"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1colorconvert__helper_1_1detail.xhtml#a31c5dd66341f73cd38ae96d876c9d2a3">arm_compute::test::colorconvert_helper::detail::colorconvert_nv_to_iyuv</a></div><div class="ttdeci">void colorconvert_nv_to_iyuv(const std::vector&lt; SimpleTensor&lt; T &gt;&gt; src, const Format src_format, std::vector&lt; SimpleTensor&lt; T &gt;&gt; &amp;dst)</div><div class="ttdef"><b>Definition:</b> <a href="_color_convert_helper_8h_source.xhtml#l00831">ColorConvertHelper.h:831</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ad304c0b0a72ed3f65c24fa69ab3cd53e"><div class="ttname"><a href="namespacearm__compute.xhtml#ad304c0b0a72ed3f65c24fa69ab3cd53e">arm_compute::colorconvert_rgb_to_yuv4</a></div><div class="ttdeci">void colorconvert_rgb_to_yuv4(const void *__restrict input, void *__restrict output, const Window &amp;win)</div><div class="ttdoc">Convert RGB to YUV4.</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_color_convert_helper_8inl_source.xhtml#l01026">NEColorConvertHelper.inl:1026</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_acf7451c0d0f8a4b1cfbb60d7531a43aa"><div class="ttname"><a href="namespacearm__compute.xhtml#acf7451c0d0f8a4b1cfbb60d7531a43aa">arm_compute::colorconvert_rgbx_to_rgb</a></div><div class="ttdeci">void colorconvert_rgbx_to_rgb(const void *input, void *output, const Window &amp;win)</div><div class="ttdoc">Convert RGBX to RGB.</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_color_convert_helper_8inl_source.xhtml#l00410">NEColorConvertHelper.inl:410</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1colorconvert__helper_1_1detail_xhtml_aca7296d0c60571db65670528b8e088c4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1colorconvert__helper_1_1detail.xhtml#aca7296d0c60571db65670528b8e088c4">arm_compute::test::colorconvert_helper::detail::colorconvert_nv_to_yuv4</a></div><div class="ttdeci">void colorconvert_nv_to_yuv4(const std::vector&lt; SimpleTensor&lt; T &gt;&gt; src, const Format src_format, std::vector&lt; SimpleTensor&lt; T &gt;&gt; &amp;dst)</div><div class="ttdef"><b>Definition:</b> <a href="_color_convert_helper_8h_source.xhtml#l00853">ColorConvertHelper.h:853</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_aa1d4cf707dec05e3ff1d63d4ce8065ca"><div class="ttname"><a href="namespacearm__compute.xhtml#aa1d4cf707dec05e3ff1d63d4ce8065ca">arm_compute::colorconvert_rgb_to_u8</a></div><div class="ttdeci">void colorconvert_rgb_to_u8(const void *__restrict input, void *__restrict output, const Window &amp;win)</div><div class="ttdoc">Convert RGB to U8.</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_color_convert_helper_8inl_source.xhtml#l00382">NEColorConvertHelper.inl:382</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a49b7a8e217ba7aad821fdeaab86bad53"><div class="ttname"><a href="namespacearm__compute.xhtml#a49b7a8e217ba7aad821fdeaab86bad53">arm_compute::colorconvert_rgb_to_iyuv</a></div><div class="ttdeci">void colorconvert_rgb_to_iyuv(const void *__restrict input, void *__restrict output, const Window &amp;win)</div><div class="ttdoc">Convert RGB to IYUV.</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_color_convert_helper_8inl_source.xhtml#l00982">NEColorConvertHelper.inl:982</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a93cc303c8ae098d264f07d37890412de"><div class="ttname"><a href="namespacearm__compute.xhtml#a93cc303c8ae098d264f07d37890412de">arm_compute::colorconvert_rgb_to_rgbx</a></div><div class="ttdeci">void colorconvert_rgb_to_rgbx(const void *__restrict input, void *__restrict output, const Window &amp;win)</div><div class="ttdoc">Convert RGB to RGBX.</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_color_convert_helper_8inl_source.xhtml#l00351">NEColorConvertHelper.inl:351</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ae6a44e412bccc0705a720708b0692218"><div class="ttname"><a href="namespacearm__compute.xhtml#ae6a44e412bccc0705a720708b0692218">arm_compute::colorconvert_nv12_to_rgb</a></div><div class="ttdeci">void colorconvert_nv12_to_rgb(const void *__restrict input, void *__restrict output, const Window &amp;win)</div><div class="ttdoc">Convert NV12 to RGB.</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_color_convert_helper_8inl_source.xhtml#l00485">NEColorConvertHelper.inl:485</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a3c22c0d3494660b72b4fc04fec76f92d"><div class="ttname"><a href="namespacearm__compute.xhtml#a3c22c0d3494660b72b4fc04fec76f92d">arm_compute::colorconvert_yuyv_to_rgb</a></div><div class="ttdeci">void colorconvert_yuyv_to_rgb(const void *__restrict input, void *__restrict output, const Window &amp;win)</div><div class="ttdoc">Convert YUYV to RGB.</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_color_convert_helper_8inl_source.xhtml#l00441">NEColorConvertHelper.inl:441</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a14fd899b732509e245976b9967b8931d"><div class="ttname"><a href="namespacearm__compute.xhtml#a14fd899b732509e245976b9967b8931d">arm_compute::colorconvert_rgb_to_nv12</a></div><div class="ttdeci">void colorconvert_rgb_to_nv12(const void *__restrict input, void *__restrict output, const Window &amp;win)</div><div class="ttdoc">Convert RGB to NV12.</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_color_convert_helper_8inl_source.xhtml#l00939">NEColorConvertHelper.inl:939</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ae43e8f0463c0289169025c3041688d36"><div class="ttname"><a href="namespacearm__compute.xhtml#ae43e8f0463c0289169025c3041688d36">arm_compute::colorconvert_yuyv_to_iyuv</a></div><div class="ttdeci">void colorconvert_yuyv_to_iyuv(const void *__restrict input, void *__restrict output, const Window &amp;win)</div><div class="ttdoc">Convert YUYV to IYUV.</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_color_convert_helper_8inl_source.xhtml#l00762">NEColorConvertHelper.inl:762</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a8ee13904a3f5ba84b28cb53d956021d7"><div class="ttname"><a href="namespacearm__compute.xhtml#a8ee13904a3f5ba84b28cb53d956021d7">arm_compute::colorconvert_yuyv_to_nv12</a></div><div class="ttdeci">void colorconvert_yuyv_to_nv12(const void *__restrict input, void *__restrict output, const Window &amp;win)</div><div class="ttdoc">Convert YUYV to NV12.</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_color_convert_helper_8inl_source.xhtml#l00610">NEColorConvertHelper.inl:610</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a6e42fac1baa264b033ac430b63ebd145"><div class="ttname"><a href="namespacearm__compute.xhtml#a6e42fac1baa264b033ac430b63ebd145">arm_compute::colorconvert_iyuv_to_rgb</a></div><div class="ttdeci">void colorconvert_iyuv_to_rgb(const void *__restrict input, void *__restrict output, const Window &amp;win)</div><div class="ttdoc">Convert IYUV to RGB.</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_color_convert_helper_8inl_source.xhtml#l00547">NEColorConvertHelper.inl:547</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00309">arm_compute::test::colorconvert_helper::detail::colorconvert_iyuv_to_rgb()</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00364">arm_compute::test::colorconvert_helper::detail::colorconvert_nv12_to_rgb()</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00831">arm_compute::test::colorconvert_helper::detail::colorconvert_nv_to_iyuv()</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00853">arm_compute::test::colorconvert_helper::detail::colorconvert_nv_to_yuv4()</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00508">arm_compute::test::colorconvert_helper::detail::colorconvert_rgb_to_iyuv()</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00420">arm_compute::test::colorconvert_helper::detail::colorconvert_rgb_to_nv12()</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00197">arm_compute::test::colorconvert_helper::detail::colorconvert_rgb_to_rgbx()</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00226">arm_compute::test::colorconvert_helper::detail::colorconvert_rgb_to_u8()</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00596">arm_compute::test::colorconvert_helper::detail::colorconvert_rgb_to_yuv4()</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00249">arm_compute::test::colorconvert_helper::detail::colorconvert_rgbx_to_rgb()</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00709">arm_compute::test::colorconvert_helper::detail::colorconvert_yuyv_to_iyuv()</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00647">arm_compute::test::colorconvert_helper::detail::colorconvert_yuyv_to_nv12()</a>, <a class="el" href="_color_convert_helper_8h_source.xhtml#l00273">arm_compute::test::colorconvert_helper::detail::colorconvert_yuyv_to_rgb()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ab08f0cb36474118c5bbc03b3a172a778">arm_compute::IYUV</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a202f5d8c2c70d31048154d8b8b28e755">arm_compute::NV12</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a8e9f6aa1af7e0abbc7e64521e6ffe1b4">arm_compute::NV21</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a30ff380a3be74628024063a99fba10f0">arm_compute::RGB888</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a165f06116e7b8d9b2481dfc805db4619">arm_compute::RGBA8888</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00097">arm_compute::test::validation::shape</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">arm_compute::U8</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58af557448a61ad2927194f63442e131dfa">arm_compute::UYVY422</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a11cfa56ee0ddbbc30a2fd189d7475f4c">arm_compute::YUV444</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a481e7a6945eb9f23e87f2de780b2e164">arm_compute::YUYV422</a>.</p>
</div>
</div>
<a id="a43ac449cca4ea65b7520e63bdfa80d73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43ac449cca4ea65b7520e63bdfa80d73">&#9670;&nbsp;</a></span>color_convert() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::vector&lt;<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; &gt; arm_compute::test::validation::reference::color_convert </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>tensor_planes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a>&#160;</td>
<td class="paramname"><em>src_format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a>&#160;</td>
<td class="paramname"><em>dst_format</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7da5947996960e48cf958f1e722829ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7da5947996960e48cf958f1e722829ae">&#9670;&nbsp;</a></span>compare() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; <a class="el" href="structarm__compute_1_1test_1_1validation_1_1compare.xhtml">compare</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_comparisons_8cpp_source.xhtml#l00108">108</a> of file <a class="el" href="reference_2_comparisons_8cpp_source.xhtml">Comparisons.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(TensorShape::broadcast_shape(src1.shape(), src2.shape()), DataType::U8);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; Coordinates id_src1{};</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; Coordinates id_src2{};</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; Coordinates id_dst{};</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; BroadcastUnroll&lt;Coordinates::num_max_dimensions&gt;::unroll(op, src1, src2, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, id_src1, id_src2, id_dst);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_tensor_shape_8h_source.xhtml#l00210">TensorShape::broadcast_shape()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">arm_compute::U8</a>.</p>
</div>
</div>
<a id="afb0925853b5ede7a77715e9c3494a0cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb0925853b5ede7a77715e9c3494a0cc">&#9670;&nbsp;</a></span>compare() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::compare </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_comparisons_8cpp_source.xhtml#l00120">120</a> of file <a class="el" href="reference_2_comparisons_8cpp_source.xhtml">Comparisons.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;{</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(TensorShape::broadcast_shape(src1.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">shape</a>(), src2.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">shape</a>()), DataType::U8);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; Coordinates id_src1{};</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; Coordinates id_src2{};</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; Coordinates id_dst{};</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span>(src1.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#a9a3e72153aeb3ed212e9c3698774e881">data_type</a>() == DataType::QASYMM8)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; SimpleTensor&lt;float&gt; src1_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(src1);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; SimpleTensor&lt;float&gt; src2_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(src2);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; BroadcastUnroll&lt;Coordinates::num_max_dimensions&gt;::unroll(op, src1_tmp, src2_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, id_src1, id_src2, id_dst);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// DataType::U8</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; BroadcastUnroll&lt;Coordinates::num_max_dimensions&gt;::unroll(op, src1, src2, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, id_src1, id_src2, id_dst);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;}</div><div class="ttc" id="classarm__compute_1_1test_1_1_simple_tensor_xhtml_a9a3e72153aeb3ed212e9c3698774e881"><div class="ttname"><a href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#a9a3e72153aeb3ed212e9c3698774e881">arm_compute::test::SimpleTensor::data_type</a></div><div class="ttdeci">DataType data_type() const override</div><div class="ttdoc">Data type of the tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor.h:358</a></div></div>
<div class="ttc" id="classarm__compute_1_1test_1_1_simple_tensor_xhtml_aba5871b3e4a65d057ec1c28fce8b00ba"><div class="ttname"><a href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">arm_compute::test::SimpleTensor::shape</a></div><div class="ttdeci">TensorShape shape() const override</div><div class="ttdoc">Shape of the tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor.h:321</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab24849be91cfb00a72f7a61a7e00fdb7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">arm_compute::test::validation::convert_from_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; convert_from_asymmetric(const SimpleTensor&lt; uint8_t &gt; &amp;src)</div><div class="ttdoc">Convert quantized simple tensor into float using tensor quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">Helpers.cpp:111</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_tensor_shape_8h_source.xhtml#l00210">TensorShape::broadcast_shape()</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">arm_compute::test::validation::convert_from_asymmetric()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6af14462d71aa842202c3e4b272c7ec924">arm_compute::QASYMM8</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">arm_compute::U8</a>.</p>
</div>
</div>
<a id="ad1c2f04c530bae0379463c1414305a89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1c2f04c530bae0379463c1414305a89">&#9670;&nbsp;</a></span>compare() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::compare </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad9bfac7b9e4c2ff4299e279ae829791f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9bfac7b9e4c2ff4299e279ae829791f">&#9670;&nbsp;</a></span>compare() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::compare </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="_c_l_2_comparisons_8cpp_source.xhtml#l00090">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="ab38cb5a1d32cbb556fea427595caf1d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab38cb5a1d32cbb556fea427595caf1d5">&#9670;&nbsp;</a></span>compute_all_anchors() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; compute_all_anchors </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>anchors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_compute_anchors_info.xhtml">ComputeAnchorsInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_compute_all_anchors_8cpp_source.xhtml#l00040">40</a> of file <a class="el" href="_compute_all_anchors_8cpp_source.xhtml">ComputeAllAnchors.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_anchors = anchors.shape()[1];</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> width = int(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.feat_width());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> height = int(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.feat_height());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> stride = 1. / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.spatial_scale();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; SimpleTensor&lt;T&gt; all_anchors(TensorShape(4, width * height * num_anchors), anchors.data_type());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> T *anchors_ptr = anchors.data();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; T *all_anchors_ptr = all_anchors.data();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// Iterate over the input grid and anchors</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = 0; y &lt; height; y++)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = 0; x &lt; width; x++)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> a = 0; a &lt; num_anchors; a++)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> T shift_x = T(x) * T(stride);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> T shift_y = T(y) * T(stride);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> anchor_id = a + x * num_anchors + y * width * num_anchors;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// x1</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; all_anchors_ptr[anchor_id * 4] = anchors_ptr[4 * a] + shift_x;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// y1</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; all_anchors_ptr[anchor_id * 4 + 1] = anchors_ptr[4 * a + 1] + shift_y;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">// x2</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; all_anchors_ptr[anchor_id * 4 + 2] = anchors_ptr[4 * a + 2] + shift_x;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// y2</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; all_anchors_ptr[anchor_id * 4 + 3] = anchors_ptr[4 * a + 3] + shift_y;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> all_anchors;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="ad1d470be6666beb908f5aa645ae34f88"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1d470be6666beb908f5aa645ae34f88">&#9670;&nbsp;</a></span>compute_all_anchors() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::compute_all_anchors </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>anchors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_compute_anchors_info.xhtml">ComputeAnchorsInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2fa94aee6e1195a0e54a39eeec965a24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2fa94aee6e1195a0e54a39eeec965a24">&#9670;&nbsp;</a></span>compute_all_anchors() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::compute_all_anchors </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>anchors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_compute_anchors_info.xhtml">ComputeAnchorsInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9585c7c2f19c8c051da1d927d3687e70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9585c7c2f19c8c051da1d927d3687e70">&#9670;&nbsp;</a></span>compute_min_max()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void arm_compute::test::validation::reference::compute_min_max </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T &amp;&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T &amp;&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_min_max_location_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="validation_2reference_2_min_max_location_8cpp_source.xhtml">MinMaxLocation.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// Set min and max to first pixel</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; min = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[0];</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; max = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[0];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements() == 0);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Look for min and max values</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &lt; min)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; min = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &gt; max)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; max = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="aea574dd283dd023938212166d4ee8404"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea574dd283dd023938212166d4ee8404">&#9670;&nbsp;</a></span>compute_reduction_operation()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;OT&gt; arm_compute::test::validation::reference::compute_reduction_operation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a>&#160;</td>
<td class="paramname"><em>op</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_reduction_operation_8cpp_source.xhtml#l00178">178</a> of file <a class="el" href="reference_2_reduction_operation_8cpp_source.xhtml">ReductionOperation.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> is_arg_min_max = (op == ReductionOperation::ARG_IDX_MIN || op == ReductionOperation::ARG_IDX_MAX);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a> = is_arg_min_max ? DataType::U32 : <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; SimpleTensor&lt;OT&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a>, 1, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info() };</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> src_width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> src_height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> src_depth = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().z();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> src_batch = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[3];</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> reduce_elems = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>];</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> upper_dims = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size_upper(1);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> du = 0; du &lt; upper_dims; ++du)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keyword">const</span> T *src_row_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data() + du * reduce_elems;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[du] = is_arg_min_max ?</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; reduce_operation_arg_min_max&lt;T, OT&gt;(src_row_ptr, reduce_elems, op, 1) :</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; reduce_operation&lt;T, OT&gt;(src_row_ptr, reduce_elems, op, 1);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> upper_dims = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size_upper(2);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> du = 0; du &lt; upper_dims; ++du)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = 0; x &lt; src_width; ++x)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> in_offset = du * src_height * src_width + x;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_offset = du * src_width + x;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keyword">const</span> T *src_row_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data() + in_offset;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[out_offset] = is_arg_min_max ?</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; reduce_operation_arg_min_max&lt;T, OT&gt;(src_row_ptr, reduce_elems, op, src_width) :</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; reduce_operation&lt;T, OT&gt;(src_row_ptr, reduce_elems, op, src_width);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> upper_dims = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size_upper(3);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> du = 0; du &lt; upper_dims; ++du)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = 0; x &lt; src_width; ++x)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y = 0; y &lt; src_height; ++y)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> in_offset = du * src_depth * src_height * src_width + y * src_width + x;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_offset = du * src_width * src_height + y * src_width + x;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keyword">const</span> T *src_row_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data() + in_offset;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[out_offset] = is_arg_min_max ?</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; reduce_operation_arg_min_max&lt;T, OT&gt;(src_row_ptr, reduce_elems, op, src_width * src_height) :</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; reduce_operation&lt;T, OT&gt;(src_row_ptr, reduce_elems, op, src_width * src_height);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> upper_dims = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size_upper(4);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> du = 0; du &lt; upper_dims; ++du)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> z = 0; z &lt; src_depth; ++z)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y = 0; y &lt; src_height; ++y)</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = 0; x &lt; src_width; ++x)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> in_offset = du * src_batch * src_depth * src_height * src_width + z * src_width * src_height + y * src_width + x;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_offset = du * src_depth * src_height * src_width + z * src_width * src_height + y * src_width + x;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">const</span> T *src_row_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data() + in_offset;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[out_offset] = is_arg_min_max ?</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; reduce_operation_arg_min_max&lt;T, OT&gt;(src_row_ptr, reduce_elems, op, src_width * src_height * src_depth) :</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; reduce_operation&lt;T, OT&gt;(src_row_ptr, reduce_elems, op, src_width * src_height * src_depth);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Unsupported reduction axis&quot;</span>);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa30f40707893f8201695a2c20e2d8c7d"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">arm_compute::test::validation::output_data_type</a></div><div class="ttdeci">output_data_type</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00098">AbsoluteDifference.cpp:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_accc088009d44c521706aa98d6387ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">arm_compute::test::validation::axis</a></div><div class="ttdeci">axis</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">StackLayer.cpp:226</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00074">Types.h:74</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45ba654fed6e9b6c154d04bcaa439e32d0d5">arm_compute::ARG_IDX_MAX</a>, <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45ba39102811589b9a0d7a6aa8721663b4d1">arm_compute::ARG_IDX_MIN</a>, <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">arm_compute::test::validation::axis</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00098">arm_compute::test::validation::output_data_type</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">arm_compute::U32</a>.</p>
</div>
</div>
<a id="a0f143a9ff97f00632d212b3b7c96aad0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f143a9ff97f00632d212b3b7c96aad0">&#9670;&nbsp;</a></span>concatenate_layer() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; concatenate_layer </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_concatenate_layer_8cpp_source.xhtml#l00104">104</a> of file <a class="el" href="_concatenate_layer_8cpp_source.xhtml">ConcatenateLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">case</span> Window::DimX:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> widthconcatenate_layer(srcs, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">case</span> Window::DimY:</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;t : srcs)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; t = reference::permute&lt;T&gt;(t, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = reference::permute&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> reference::permute&lt;T&gt;(widthconcatenate_layer(srcs, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>), <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">case</span> Window::DimZ:</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;t : srcs)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; t = reference::permute&lt;T&gt;(t, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = reference::permute&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> reference::permute&lt;T&gt;(widthconcatenate_layer(srcs, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>), <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;t : srcs)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; t = reference::permute&lt;T&gt;(t, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(3<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = reference::permute&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(3<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">auto</span> ret = reference::permute&lt;T&gt;(widthconcatenate_layer(srcs, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>), <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(3<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Not supported&quot;</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a33e65be485104e2e9e69fca551d6f492"><div class="ttname"><a href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">arm_compute::PermutationVector</a></div><div class="ttdeci">Strides PermutationVector</div><div class="ttdoc">Permutation vector.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00047">Types.h:47</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_1_1cast_xhtml_a2ea3d1fc01a3a442900249ca182ffa5e"><div class="ttname"><a href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">arm_compute::utils::cast::U</a></div><div class="ttdeci">U</div><div class="ttdef"><b>Definition:</b> <a href="_saturate_cast_8h_source.xhtml#l00057">SaturateCast.h:57</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_accc088009d44c521706aa98d6387ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">arm_compute::test::validation::axis</a></div><div class="ttdeci">axis</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">StackLayer.cpp:226</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">arm_compute::test::validation::axis</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00047">Window::DimZ</a>, and <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>.</p>
</div>
</div>
<a id="a1a64bde72f5f3d28ce8cbb2d9890e68b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a64bde72f5f3d28ce8cbb2d9890e68b">&#9670;&nbsp;</a></span>concatenate_layer() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::concatenate_layer </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1cc96a336f30616241fc7f2b6850cff9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1cc96a336f30616241fc7f2b6850cff9">&#9670;&nbsp;</a></span>concatenate_layer() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::concatenate_layer </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af3b21bf3cc9d4b7c077805a3c99adfb1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3b21bf3cc9d4b7c077805a3c99adfb1">&#9670;&nbsp;</a></span>concatenate_layer() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::concatenate_layer </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac9740a0cc13215df4c0a5edccdbe9e11"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac9740a0cc13215df4c0a5edccdbe9e11">&#9670;&nbsp;</a></span>conv2d_dft() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; conv2d_dft </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>w</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>conv_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs and DFT based convolution on a real input. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source tensor. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">w</td><td>Weights tensor. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">conv_info</td><td>Convolution related metadata.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The output tensor. </dd></dl>
<p class="definition">Definition at line <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00374">374</a> of file <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml">DFT.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;{</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="comment">// Pad input to full padding</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> padding_in = { { 0, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape()[0] - 1 }, { 0, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape()[1] - 1 } };</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">auto</span> padded_src = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab5901f29f666658b04856010acaeb0b1">pad_layer</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, padding_in);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="comment">// Flip weights</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; std::vector&lt;uint32_t&gt; axis_v = { 0, 1 };</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; SimpleTensor&lt;uint32_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>{ TensorShape(2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>), DataType::U32 };</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">std::copy</a>(axis_v.begin(), axis_v.begin() + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>.shape().x(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>.data());</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keyword">auto</span> flipped_w = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1936f5feb8c9357acc4555686d4e5cf2">reverse</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="comment">// Pad weights to have the same size as input</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> paddings_w = { { 0, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0] - 1 }, { 0, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1] - 1 } };</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keyword">auto</span> padded_w = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab5901f29f666658b04856010acaeb0b1">pad_layer</a>(flipped_w, paddings_w);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="comment">// Transform input and weights to frequency domain</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">auto</span> Fsrc = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8ecde15afcabe3298032697a97f633ee">rdft_2d</a>(padded_src);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">auto</span> Fw = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8ecde15afcabe3298032697a97f633ee">rdft_2d</a>(padded_w);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="comment">// Perform dot product</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keyword">auto</span> Fdst = complex_mul_and_reduce(Fsrc, Fw);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="comment">// Transform output back to frequency domain</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keyword">auto</span> conv_res = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae8285d2e58ae1ee57e5e45c23d35dc30">ridft_2d</a>(Fdst);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="comment">// Slice output</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start_left = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape().x() - <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_left() - 1;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start_top = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape().y() - <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_top() - 1;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> end_right = conv_res.shape().x() - (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape().x() - <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_right() - 1);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> end_botton = conv_res.shape().y() - (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape().y() - <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_bottom() - 1);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">slice</a>(conv_res, Coordinates(start_left, start_top), Coordinates(end_right, end_botton));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_ab5901f29f666658b04856010acaeb0b1"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab5901f29f666658b04856010acaeb0b1">arm_compute::test::validation::reference::pad_layer</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; pad_layer(const SimpleTensor&lt; T &gt; &amp;src, const PaddingList &amp;paddings, const PixelValue const_value, const PaddingMode mode)</div><div class="ttdoc">Reference function to pad an ND tensor.</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_pad_layer_8cpp_source.xhtml#l00039">PadLayer.cpp:39</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a1936f5feb8c9357acc4555686d4e5cf2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1936f5feb8c9357acc4555686d4e5cf2">arm_compute::test::validation::reference::reverse</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; reverse(const SimpleTensor&lt; T &gt; &amp;src, const SimpleTensor&lt; uint32_t &gt; &amp;axis)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_reverse_8cpp_source.xhtml#l00038">Reverse.cpp:38</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1a367830ae09bf6138df822888ec1d71"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">arm_compute::test::validation::w</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; w</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">DFT.cpp:156</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ac1a1b012674e0f1de071a611391828ad"><div class="ttname"><a href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">arm_compute::PaddingList</a></div><div class="ttdeci">std::vector&lt; PaddingInfo &gt; PaddingList</div><div class="ttdoc">List of padding information.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00445">Types.h:445</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a00525ff582f16038a1d3819aa44a23a3"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">arm_compute::test::validation::conv_info</a></div><div class="ttdeci">conv_info</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_winograd_8cpp_source.xhtml#l00599">Winograd.cpp:599</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_ad9000ce99b9ffcec5722cade36d7e757"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">arm_compute::test::validation::reference::copy</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; copy(const SimpleTensor&lt; T &gt; &amp;src, const TensorShape &amp;output_shape)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_copy_8cpp_source.xhtml#l00037">Copy.cpp:37</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_1_1cast_xhtml_a2ea3d1fc01a3a442900249ca182ffa5e"><div class="ttname"><a href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">arm_compute::utils::cast::U</a></div><div class="ttdeci">U</div><div class="ttdef"><b>Definition:</b> <a href="_saturate_cast_8h_source.xhtml#l00057">SaturateCast.h:57</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_ae8285d2e58ae1ee57e5e45c23d35dc30"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae8285d2e58ae1ee57e5e45c23d35dc30">arm_compute::test::validation::reference::ridft_2d</a></div><div class="ttdeci">template SimpleTensor&lt; float &gt; ridft_2d(const SimpleTensor&lt; float &gt; &amp;src, bool is_odd)</div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_accc088009d44c521706aa98d6387ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">arm_compute::test::validation::axis</a></div><div class="ttdeci">axis</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">StackLayer.cpp:226</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a8ecde15afcabe3298032697a97f633ee"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8ecde15afcabe3298032697a97f633ee">arm_compute::test::validation::reference::rdft_2d</a></div><div class="ttdeci">template SimpleTensor&lt; float &gt; rdft_2d(const SimpleTensor&lt; float &gt; &amp;src)</div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a548131b3d37da47a2e9d32111c88dfe1"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">arm_compute::test::validation::reference::slice</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; slice(const SimpleTensor&lt; T &gt; &amp;src, Coordinates starts, Coordinates ends)</div><div class="ttdef"><b>Definition:</b> <a href="_slice_operations_8cpp_source.xhtml#l00038">SliceOperations.cpp:38</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">arm_compute::test::validation::axis</a>, <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00599">arm_compute::test::validation::conv_info</a>, <a class="el" href="reference_2_copy_8cpp_source.xhtml#l00037">copy()</a>, <a class="el" href="reference_2_pad_layer_8cpp_source.xhtml#l00039">pad_layer()</a>, <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00320">rdft_2d()</a>, <a class="el" href="reference_2_reverse_8cpp_source.xhtml#l00038">reverse()</a>, <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00332">ridft_2d()</a>, <a class="el" href="_slice_operations_8cpp_source.xhtml#l00038">slice()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">arm_compute::U32</a>, and <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">arm_compute::test::validation::w</a>.</p>
</div>
</div>
<a id="a74a1621a402a17e2a896efff8c1c74a5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74a1621a402a17e2a896efff8c1c74a5">&#9670;&nbsp;</a></span>conv2d_dft() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::conv2d_dft </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>w</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>conv_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6e2c47772be91252ef78e8c7fe67ef12"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e2c47772be91252ef78e8c7fe67ef12">&#9670;&nbsp;</a></span>convert_fully_connected_weights() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; convert_fully_connected_weights </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>original_input_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
<td class="paramname"><em>training_data_layout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_convert_fully_connected_weights_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="reference_2_convert_fully_connected_weights_8cpp_source.xhtml">ConvertFullyConnectedWeights.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> original_input_data_layout = (training_data_layout == DataLayout::NCHW) ? DataLayout::NHWC : DataLayout::NCHW;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_idx = <a class="code" href="namespacearm__compute.xhtml#a46e938020a3ac8c926d0590b7fe957db">get_data_layout_dimension_index</a>(original_input_data_layout, DataLayoutDimension::WIDTH);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_idx = <a class="code" href="namespacearm__compute.xhtml#a46e938020a3ac8c926d0590b7fe957db">get_data_layout_dimension_index</a>(original_input_data_layout, DataLayoutDimension::HEIGHT);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> channel_idx = <a class="code" href="namespacearm__compute.xhtml#a46e938020a3ac8c926d0590b7fe957db">get_data_layout_dimension_index</a>(original_input_data_layout, DataLayoutDimension::CHANNEL);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> is_nchw_to_nhwc = training_data_layout == DataLayout::NCHW;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_elems_per_input_plane = original_input_shape[width_idx] * original_input_shape[height_idx];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_channels = original_input_shape[channel_idx];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> factor_1 = is_nchw_to_nhwc ? num_elems_per_input_plane : num_channels;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> factor_2 = is_nchw_to_nhwc ? num_channels : num_elems_per_input_plane;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> Coordinates coords_in = <a class="code" href="namespacearm__compute.xhtml#ad34f2150f1c9f8a3ecb7298162124e5d">index2coords</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), i);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> Coordinates coords_out(coords_in.x(), coords_in.y() % factor_1 * factor_2 + coords_in.y() / factor_1);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[<a class="code" href="namespacearm__compute.xhtml#ad95e1c14c3007ca18950bf8f4c5a5c93">coords2index</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape(), coords_out)] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;}</div><div class="ttc" id="namespacearm__compute_xhtml_ad34f2150f1c9f8a3ecb7298162124e5d"><div class="ttname"><a href="namespacearm__compute.xhtml#ad34f2150f1c9f8a3ecb7298162124e5d">arm_compute::index2coords</a></div><div class="ttdeci">Coordinates index2coords(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00289">Helpers.inl:289</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ad95e1c14c3007ca18950bf8f4c5a5c93"><div class="ttname"><a href="namespacearm__compute.xhtml#ad95e1c14c3007ca18950bf8f4c5a5c93">arm_compute::coords2index</a></div><div class="ttdeci">int coords2index(const TensorShape &amp;shape, const Coordinates &amp;coord)</div><div class="ttdoc">Convert n-dimensional coordinates into a linear index.</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00308">Helpers.inl:308</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a46e938020a3ac8c926d0590b7fe957db"><div class="ttname"><a href="namespacearm__compute.xhtml#a46e938020a3ac8c926d0590b7fe957db">arm_compute::get_data_layout_dimension_index</a></div><div class="ttdeci">size_t get_data_layout_dimension_index(const DataLayout data_layout, const DataLayoutDimension data_layout_dimension)</div><div class="ttdoc">Get the index of the given dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00326">Helpers.inl:326</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">arm_compute::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdoc">[DataLayout enum definition]</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00114">Types.h:114</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="namespacearm__compute.xhtml#a74ce3f7420453d3446218ff3b7453e02af52e9c50a060add65a035429b2a22229">arm_compute::CHANNEL</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00308">arm_compute::coords2index()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00326">arm_compute::get_data_layout_dimension_index()</a>, <a class="el" href="namespacearm__compute.xhtml#a74ce3f7420453d3446218ff3b7453e02ad770ba3ce18fa409965dfdf5e7c348e6">arm_compute::HEIGHT</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00289">arm_compute::index2coords()</a>, <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">arm_compute::NCHW</a>, <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">arm_compute::NHWC</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="namespacearm__compute.xhtml#a74ce3f7420453d3446218ff3b7453e02a49da85b69bc6285eeee286ca49fa7195">arm_compute::WIDTH</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00086">Dimensions&lt; T &gt;::y()</a>.</p>
</div>
</div>
<a id="af26eb814a56ed238d734b476a08a36ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af26eb814a56ed238d734b476a08a36ec">&#9670;&nbsp;</a></span>convert_fully_connected_weights() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::convert_fully_connected_weights </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>original_input_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
<td class="paramname"><em>training_data_layout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad72a6f02d381cf4fb42ef050f4de0793"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad72a6f02d381cf4fb42ef050f4de0793">&#9670;&nbsp;</a></span>convert_fully_connected_weights() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::convert_fully_connected_weights </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>original_input_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
<td class="paramname"><em>training_data_layout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af731f5f25a5302adac2184118e6fc094"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af731f5f25a5302adac2184118e6fc094">&#9670;&nbsp;</a></span>convert_fully_connected_weights() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::convert_fully_connected_weights </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>original_input_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
<td class="paramname"><em>training_data_layout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a01a7620e1490bfee842dd8ab9bd0ea4c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01a7620e1490bfee842dd8ab9bd0ea4c">&#9670;&nbsp;</a></span>convolution()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; convolution </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>output_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int16_t *&#160;</td>
<td class="paramname"><em>conv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>scale</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int&#160;</td>
<td class="paramname"><em>width</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int&#160;</td>
<td class="paramname"><em>height</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_convolution_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="validation_2reference_2_convolution_8cpp_source.xhtml">Convolution.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a> == 0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a> &gt;= std::numeric_limits&lt;int32_t&gt;::max());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ac1783f94b5942a7c78100c398e192569">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; SimpleTensor&lt;int32_t&gt; <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ac1783f94b5942a7c78100c398e192569">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">output_data_type</a>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> element_idx = 0; element_idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ac1783f94b5942a7c78100c398e192569">src</a>.num_elements(); ++element_idx)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> Coordinates <span class="keywordtype">id</span> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ac1783f94b5942a7c78100c398e192569">src</a>.shape(), element_idx);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(<span class="keywordtype">id</span>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ac1783f94b5942a7c78100c398e192569">src</a>, <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>, TensorShape(width, height), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a53eb4ea4aa2d9cf0eb82098af40dc105">conv</a>, 1, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = saturate_cast&lt;T&gt;(tensor_elem_at&lt;int32_t&gt;(<a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>, <span class="keywordtype">id</span>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value) / static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d1175c32ed7ea771e8ea46c936ea5c7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">arm_compute::test::validation::apply_2d_spatial_filter</a></div><div class="ttdeci">void apply_2d_spatial_filter(Coordinates coord, const SimpleTensor&lt; T &gt; &amp;src, SimpleTensor&lt; U &gt; &amp;dst, const TensorShape &amp;filter_shape, const V *filter_itr, double scale, BorderMode border_mode, T constant_border_value=T(0))</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00098">Utils.h:98</a></div></div>
<div class="ttc" id="reduction__operation_8cl_xhtml_ab0df00f5333da51860deb93deb44a782"><div class="ttname"><a href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a></div><div class="ttdeci">DATA_TYPE sum(__global const DATA_TYPE *input)</div><div class="ttdoc">Calculate sum of a vector.</div><div class="ttdef"><b>Definition:</b> <a href="reduction__operation_8cl_source.xhtml#l00065">reduction_operation.cl:65</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a53eb4ea4aa2d9cf0eb82098af40dc105"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a53eb4ea4aa2d9cf0eb82098af40dc105">arm_compute::test::validation::conv</a></div><div class="ttdeci">std::vector&lt; int16_t &gt; conv(filter_height *filter_width)</div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa30f40707893f8201695a2c20e2d8c7d"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa30f40707893f8201695a2c20e2d8c7d">arm_compute::test::validation::output_data_type</a></div><div class="ttdeci">output_data_type</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00098">AbsoluteDifference.cpp:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ac1783f94b5942a7c78100c398e192569"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ac1783f94b5942a7c78100c398e192569">arm_compute::test::validation::src</a></div><div class="ttdeci">convolution configure &amp; src(), 0, border_mode</div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00098">arm_compute::test::validation::apply_2d_spatial_filter()</a>, <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00125">arm_compute::test::validation::conv</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00098">arm_compute::test::validation::output_data_type</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="reduction__operation_8cl_source.xhtml#l00065">sum()</a>.</p>
</div>
</div>
<a id="a1ceb764c20eb3c26b13e49315d835eb5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ceb764c20eb3c26b13e49315d835eb5">&#9670;&nbsp;</a></span>convolution_layer() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; convolution_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TB &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>dilation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a>&#160;</td>
<td class="paramname"><em>out_quant_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_convolution_layer_8cpp_source.xhtml#l00113">113</a> of file <a class="el" href="validation_2reference_2_convolution_layer_8cpp_source.xhtml">ConvolutionLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// if no explicit quantization has been set you the same as src</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span>(out_quant_info == QuantizationInfo())</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; out_quant_info = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1, out_quant_info };</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_layout() == DataLayout::NHWC)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; SimpleTensor&lt;T&gt; src_nchw = reference::permute&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; SimpleTensor&lt;T&gt; weights_nchw = reference::permute&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; SimpleTensor&lt;T&gt; dst_nchw = reference::permute&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> reference::permute&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#abafcbe337f50c1a434ee3287b78cafc4">convolution_layer_nchw</a>(src_nchw, weights_nchw, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, dst_nchw, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>), <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#abafcbe337f50c1a434ee3287b78cafc4">convolution_layer_nchw</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad3fd4136244e42ad89b01c02b904336d"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">arm_compute::test::validation::dilation</a></div><div class="ttdeci">dilation</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a33e65be485104e2e9e69fca551d6f492"><div class="ttname"><a href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">arm_compute::PermutationVector</a></div><div class="ttdeci">Strides PermutationVector</div><div class="ttdoc">Permutation vector.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00047">Types.h:47</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_abafcbe337f50c1a434ee3287b78cafc4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#abafcbe337f50c1a434ee3287b78cafc4">arm_compute::test::validation::reference::convolution_layer_nchw</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; convolution_layer_nchw(const SimpleTensor&lt; T &gt; &amp;src, const SimpleTensor&lt; T &gt; &amp;weights, const SimpleTensor&lt; TB &gt; &amp;bias, SimpleTensor&lt; T &gt; &amp;dst, const PadStrideInfo &amp;info, const Size2D &amp;dilation, unsigned int num_groups)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_convolution_layer_8cpp_source.xhtml#l00049">ConvolutionLayer.cpp:49</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a2270b3e1d20651d2d8341c858c890830"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">arm_compute::test::validation::num_groups</a></div><div class="ttdeci">const unsigned int num_groups</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">Im2Col.cpp:148</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_1_1cast_xhtml_a2ea3d1fc01a3a442900249ca182ffa5e"><div class="ttname"><a href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">arm_compute::utils::cast::U</a></div><div class="ttdeci">U</div><div class="ttdef"><b>Definition:</b> <a href="_saturate_cast_8h_source.xhtml#l00057">SaturateCast.h:57</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a3a77be8aebd8e00522b32061d46ccdbd"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">arm_compute::test::validation::bias</a></div><div class="ttdeci">CLTensor bias</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">ConvolutionLayer.cpp:181</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a64a08a9fec5aeee8650e7182b6d171d0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">arm_compute::test::validation::weights</a></div><div class="ttdeci">CLTensor weights</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">ConvolutionLayer.cpp:180</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">arm_compute::test::validation::bias</a>, <a class="el" href="validation_2reference_2_convolution_layer_8cpp_source.xhtml#l00049">convolution_layer_nchw()</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::dilation</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">arm_compute::NHWC</a>, <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">arm_compute::test::validation::num_groups</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">arm_compute::test::validation::weights</a>.</p>
<p class="reference">Referenced by <a class="el" href="reference_2_deconvolution_layer_8cpp_source.xhtml#l00037">deconvolution_layer()</a>, and <a class="el" href="validation_2reference_2_depthwise_separable_convolution_layer_8cpp_source.xhtml#l00043">depthwise_separable_convolution_layer()</a>.</p>
</div>
</div>
<a id="a78ccc6d044d618d26b388abc9596e42c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78ccc6d044d618d26b388abc9596e42c">&#9670;&nbsp;</a></span>convolution_layer() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::convolution_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>dilation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a>&#160;</td>
<td class="paramname"><em>out_quant_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7c12846c0fd41539509e08e5f83ef8b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c12846c0fd41539509e08e5f83ef8b4">&#9670;&nbsp;</a></span>convolution_layer() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::convolution_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>dilation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a>&#160;</td>
<td class="paramname"><em>out_quant_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae2e210bbbd2cd4e742395526405bf8af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2e210bbbd2cd4e742395526405bf8af">&#9670;&nbsp;</a></span>convolution_layer() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::convolution_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>dilation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a>&#160;</td>
<td class="paramname"><em>out_quant_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abafcbe337f50c1a434ee3287b78cafc4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abafcbe337f50c1a434ee3287b78cafc4">&#9670;&nbsp;</a></span>convolution_layer_nchw()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;T&gt; arm_compute::test::validation::reference::convolution_layer_nchw </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TB &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>dilation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_convolution_layer_8cpp_source.xhtml#l00049">49</a> of file <a class="el" href="validation_2reference_2_convolution_layer_8cpp_source.xhtml">ConvolutionLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>((<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2] / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>) != <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape()[2]);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_in = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_in = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth_in = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().z();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_out = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().x();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_out = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().y();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth_out = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().z();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_weights = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().x();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_weights = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().y();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth_weights = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().z();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_left = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pad_left();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_top = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pad_top();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride_xi = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.stride().first;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride_yi = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.stride().second;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">auto</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a070db4c72c3c16c9618af176f5fdf7bc">output_wh</a> = <a class="code" href="namespacearm__compute.xhtml#abbe3399a66c35c3c353030cd0a84c936">scaled_dimensions</a>(width_in, height_in, width_weights, height_weights, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start_xi = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>.x() * (width_weights - 1) + 1) / 2 - pad_left;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start_yi = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>.y() * (height_weights - 1) + 1) / 2 - pad_top;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> end_xi = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a070db4c72c3c16c9618af176f5fdf7bc">output_wh</a>.first * stride_xi;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> end_yi = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a070db4c72c3c16c9618af176f5fdf7bc">output_wh</a>.second * stride_yi;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batches = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size() / (width_in * height_in * depth_in);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; num_batches; ++r)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> yi = start_yi; yi &lt; start_yi + end_yi; yi += stride_yi)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> xi = start_xi; xi &lt; start_xi + end_xi; xi += stride_xi)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> group = 0; group &lt; static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>); ++group)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ofm = 0; ofm &lt; static_cast&lt;int&gt;(depth_out / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>); ++ofm)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// Compute input and output offsets</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_in = r * width_in * height_in * depth_in + (group * (depth_in / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>) * width_in * height_in);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xo = (xi - start_xi) / stride_xi;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yo = (yi - start_yi) / stride_yi;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_out = xo + yo * width_out + ((ofm + group * (depth_out / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)) * width_out * height_out) + (r * width_out * height_out * depth_out);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_w = (ofm + group * (depth_out / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>)) * width_weights * height_weights * depth_weights;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_b = (ofm + group * (depth_out / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="_asserts_8h.xhtml#a83bf33add9b97f6897b7b3db2766dd27">ARM_COMPUTE_ASSERT</a>(xo &lt; width_out);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="_asserts_8h.xhtml#a83bf33add9b97f6897b7b3db2766dd27">ARM_COMPUTE_ASSERT</a>(yo &lt; height_out);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">// Compute 3D convolution</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1convolution__3d_1_1detail.xhtml#a74dc80546816db5f19029d6819a8bfee">convolution_3d::detail::convolution3d</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; offset_in, offset_w, offset_b, offset_out,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; xi, yi,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; width_in, height_in, (depth_in / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>),</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; width_weights, height_weights, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>.x(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>.y());</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a070db4c72c3c16c9618af176f5fdf7bc"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a070db4c72c3c16c9618af176f5fdf7bc">arm_compute::test::validation::output_wh</a></div><div class="ttdeci">const auto output_wh</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00163">DFT.cpp:163</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad3fd4136244e42ad89b01c02b904336d"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">arm_compute::test::validation::dilation</a></div><div class="ttdeci">dilation</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_abbe3399a66c35c3c353030cd0a84c936"><div class="ttname"><a href="namespacearm__compute.xhtml#abbe3399a66c35c3c353030cd0a84c936">arm_compute::scaled_dimensions</a></div><div class="ttdeci">std::pair&lt; unsigned int, unsigned int &gt; scaled_dimensions(unsigned int width, unsigned int height, unsigned int kernel_width, unsigned int kernel_height, const PadStrideInfo &amp;pad_stride_info, const Size2D &amp;dilation=Size2D(1U, 1U))</div><div class="ttdoc">Returns expected width and height of output scaled tensor depending on dimensions rounding mode.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_utils_8cpp_source.xhtml#l00387">Utils.cpp:387</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a2270b3e1d20651d2d8341c858c890830"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">arm_compute::test::validation::num_groups</a></div><div class="ttdeci">const unsigned int num_groups</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">Im2Col.cpp:148</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a3a77be8aebd8e00522b32061d46ccdbd"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">arm_compute::test::validation::bias</a></div><div class="ttdeci">CLTensor bias</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">ConvolutionLayer.cpp:181</a></div></div>
<div class="ttc" id="_asserts_8h_xhtml_a83bf33add9b97f6897b7b3db2766dd27"><div class="ttname"><a href="_asserts_8h.xhtml#a83bf33add9b97f6897b7b3db2766dd27">ARM_COMPUTE_ASSERT</a></div><div class="ttdeci">#define ARM_COMPUTE_ASSERT(X)</div><div class="ttdef"><b>Definition:</b> <a href="_asserts_8h_source.xhtml#l00110">Asserts.h:110</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a64a08a9fec5aeee8650e7182b6d171d0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">arm_compute::test::validation::weights</a></div><div class="ttdeci">CLTensor weights</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">ConvolutionLayer.cpp:180</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1convolution__3d_1_1detail_xhtml_a74dc80546816db5f19029d6819a8bfee"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1convolution__3d_1_1detail.xhtml#a74dc80546816db5f19029d6819a8bfee">arm_compute::test::convolution_3d::detail::convolution3d</a></div><div class="ttdeci">void convolution3d(const SimpleTensor&lt; T &gt; &amp;in, const SimpleTensor&lt; T &gt; &amp;weights, const SimpleTensor&lt; TB &gt; &amp;bias, SimpleTensor&lt; T &gt; &amp;out, int i_offset, int w_offset, int b_offset, int o_offset, int xi, int yi, int width_in, int height_in, int depth_in, int width_weights, int height_weights, int dilation_x=1, int dilation_y=1)</div><div class="ttdef"><b>Definition:</b> <a href="_convolution3d_8h_source.xhtml#l00046">Convolution3d.h:46</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_asserts_8h_source.xhtml#l00110">ARM_COMPUTE_ASSERT</a>, <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">arm_compute::test::validation::bias</a>, <a class="el" href="_convolution3d_8h_source.xhtml#l00046">arm_compute::test::convolution_3d::detail::convolution3d()</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::dilation</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">arm_compute::test::validation::num_groups</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00163">arm_compute::test::validation::output_wh</a>, <a class="el" href="src_2core_2_utils_8cpp_source.xhtml#l00387">arm_compute::scaled_dimensions()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">arm_compute::test::validation::weights</a>.</p>
<p class="reference">Referenced by <a class="el" href="validation_2reference_2_convolution_layer_8cpp_source.xhtml#l00113">convolution_layer()</a>.</p>
</div>
</div>
<a id="ad9000ce99b9ffcec5722cade36d7e757"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9000ce99b9ffcec5722cade36d7e757">&#9670;&nbsp;</a></span>copy() <span class="overload">[1/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; copy </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_copy_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="reference_2_copy_8cpp_source.xhtml">Copy.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="_validate_8h.xhtml#ad9fd47433ba6091668c207e21dd6385f">ARM_COMPUTE_ERROR_ON_MISMATCHING_DIMENSIONS</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::copy_n(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="_validate_8h_xhtml_ad9fd47433ba6091668c207e21dd6385f"><div class="ttname"><a href="_validate_8h.xhtml#ad9fd47433ba6091668c207e21dd6385f">ARM_COMPUTE_ERROR_ON_MISMATCHING_DIMENSIONS</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_MISMATCHING_DIMENSIONS(...)</div><div class="ttdef"><b>Definition:</b> <a href="_validate_8h_source.xhtml#l00286">Validate.h:286</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_validate_8h_source.xhtml#l00286">ARM_COMPUTE_ERROR_ON_MISMATCHING_DIMENSIONS</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="reference_2_channel_shuffle_8cpp_source.xhtml#l00039">channel_shuffle()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00138">Dimensions&lt; size_t &gt;::collapse()</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00160">TensorShape::collapsed_from()</a>, <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00374">conv2d_dft()</a>, <a class="el" href="validation_2reference_2_depth_concatenate_layer_8cpp_source.xhtml#l00037">depthconcatenate_layer()</a>, <a class="el" href="validation_2reference_2_flatten_layer_8cpp_source.xhtml#l00035">flatten_layer()</a>, <a class="el" href="reference_2_g_e_m_m_reshape_l_h_s_matrix_8cpp_source.xhtml#l00043">gemm_reshape_lhs_matrix()</a>, <a class="el" href="reference_2_g_e_m_m_reshape_r_h_s_matrix_8cpp_source.xhtml#l00043">gemm_reshape_rhs_matrix()</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00207">arm_compute::test::validation::get_tile()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00175">Dimensions&lt; size_t &gt;::remove()</a>, and <a class="el" href="_tensor_shape_8h_source.xhtml#l00110">TensorShape::remove_dimension()</a>.</p>
</div>
</div>
<a id="a3596a3a6614b401bcdb60720c19e6b3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3596a3a6614b401bcdb60720c19e6b3e">&#9670;&nbsp;</a></span>copy() <span class="overload">[2/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::copy </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac796f1c782a45a03865323daf9d01a96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac796f1c782a45a03865323daf9d01a96">&#9670;&nbsp;</a></span>copy() <span class="overload">[3/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int8_t&gt; arm_compute::test::validation::reference::copy </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab9e2e92c4a125ee94af9df17b01b5e33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9e2e92c4a125ee94af9df17b01b5e33">&#9670;&nbsp;</a></span>copy() <span class="overload">[4/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint16_t&gt; arm_compute::test::validation::reference::copy </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="adea115d1cd3a84fa4620dad6b42744cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adea115d1cd3a84fa4620dad6b42744cf">&#9670;&nbsp;</a></span>copy() <span class="overload">[5/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::copy </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acaec6cbbf203170d63e1f15b859317f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acaec6cbbf203170d63e1f15b859317f2">&#9670;&nbsp;</a></span>copy() <span class="overload">[6/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint32_t&gt; arm_compute::test::validation::reference::copy </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab7bae8d334e5dd7e6b9c51cd4b224d06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7bae8d334e5dd7e6b9c51cd4b224d06">&#9670;&nbsp;</a></span>copy() <span class="overload">[7/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int32_t&gt; arm_compute::test::validation::reference::copy </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af01286b52d60b087950f3b010a7b5bfc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af01286b52d60b087950f3b010a7b5bfc">&#9670;&nbsp;</a></span>copy() <span class="overload">[8/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::copy </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a93fa89f152a11f0b7b479eddc833f44b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93fa89f152a11f0b7b479eddc833f44b">&#9670;&nbsp;</a></span>copy() <span class="overload">[9/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::copy </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6375d6e6efadf8ae7237d6490e8015af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6375d6e6efadf8ae7237d6490e8015af">&#9670;&nbsp;</a></span>crop_and_resize() <span class="overload">[1/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; crop_and_resize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>boxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td>
<td class="paramname"><em>box_ind</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a>&#160;</td>
<td class="paramname"><em>crop_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>method</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>extrapolation_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_crop_resize_8cpp_source.xhtml#l00160">160</a> of file <a class="el" href="reference_2_crop_resize_8cpp_source.xhtml">CropResize.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;{</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().num_dimensions() &gt; 4);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_layout() != DataLayout::NHWC);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">const</span> TensorShape out_shape(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0], crop_size.<a class="code" href="struct_coordinates2_d.xhtml#a6150e0515f7202e2fb518f7206ed97dc">x</a>, crop_size.<a class="code" href="struct_coordinates2_d.xhtml#a0a2f84ed7838f07779ae24c5a9086d33">y</a>, boxes.shape()[1]);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; SimpleTensor&lt;float&gt; out{ out_shape, DataType::F32, 1, QuantizationInfo(), DataLayout::NHWC };</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> TensorShape scaled_image_shape(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0], crop_size.<a class="code" href="struct_coordinates2_d.xhtml#a6150e0515f7202e2fb518f7206ed97dc">x</a>, crop_size.<a class="code" href="struct_coordinates2_d.xhtml#a0a2f84ed7838f07779ae24c5a9086d33">y</a>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">for</span>(uint32_t i = 0; i &lt; boxes.shape()[1]; ++i)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; Coordinates start = Coordinates(std::floor((*reinterpret_cast&lt;const float *&gt;(boxes(Coordinates(1, i)))) * (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1] - 1) + 0.5f),</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; std::floor((*reinterpret_cast&lt;const float *&gt;(boxes(Coordinates(0, i)))) * (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2] - 1) + 0.5f));</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; Coordinates end = Coordinates(std::floor((*reinterpret_cast&lt;const float *&gt;(boxes(Coordinates(3, i)))) * (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1] - 1) + 0.5f),</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; std::floor((*reinterpret_cast&lt;const float *&gt;(boxes(Coordinates(2, i)))) * (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2] - 1) + 0.5f));</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; SimpleTensor&lt;float&gt; cropped = crop_image(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, start, end, box_ind[i], extrapolation_value);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; SimpleTensor&lt;float&gt; scaled = scale_image(cropped, scaled_image_shape, method, extrapolation_value);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; std::copy_n(reinterpret_cast&lt;float *&gt;(scaled.data()), scaled.num_elements(), reinterpret_cast&lt;float *&gt;(out(Coordinates(0, 0, 0, i))));</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="struct_coordinates2_d_xhtml_a6150e0515f7202e2fb518f7206ed97dc"><div class="ttname"><a href="struct_coordinates2_d.xhtml#a6150e0515f7202e2fb518f7206ed97dc">Coordinates2D::x</a></div><div class="ttdeci">int x</div><div class="ttdoc">The x coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00030">types.h:30</a></div></div>
<div class="ttc" id="struct_coordinates2_d_xhtml_a0a2f84ed7838f07779ae24c5a9086d33"><div class="ttname"><a href="struct_coordinates2_d.xhtml#a0a2f84ed7838f07779ae24c5a9086d33">Coordinates2D::y</a></div><div class="ttdeci">int y</div><div class="ttdoc">The y coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00031">types.h:31</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::F32</a>, <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">arm_compute::NHWC</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00407">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00429">Coordinates2D::x</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00430">Coordinates2D::y</a>.</p>
</div>
</div>
<a id="a529e0e59bce5fdaec98664d396158140"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a529e0e59bce5fdaec98664d396158140">&#9670;&nbsp;</a></span>crop_and_resize() <span class="overload">[2/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::crop_and_resize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>boxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td>
<td class="paramname"><em>box_ind</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a>&#160;</td>
<td class="paramname"><em>crop_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>method</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>extrapolation_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a02d39c7466f00362ee4c56e15bb24fea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02d39c7466f00362ee4c56e15bb24fea">&#9670;&nbsp;</a></span>crop_and_resize() <span class="overload">[3/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::crop_and_resize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>boxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td>
<td class="paramname"><em>box_ind</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a>&#160;</td>
<td class="paramname"><em>crop_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>method</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>extrapolation_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aeb90cfcf3bb4cb8af801e2d94df218a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeb90cfcf3bb4cb8af801e2d94df218a0">&#9670;&nbsp;</a></span>crop_and_resize() <span class="overload">[4/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::crop_and_resize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>boxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td>
<td class="paramname"><em>box_ind</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a>&#160;</td>
<td class="paramname"><em>crop_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>method</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>extrapolation_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1d090ef82b33a5becb3aa37d62af1003"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d090ef82b33a5becb3aa37d62af1003">&#9670;&nbsp;</a></span>crop_and_resize() <span class="overload">[5/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::crop_and_resize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>boxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td>
<td class="paramname"><em>box_ind</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a>&#160;</td>
<td class="paramname"><em>crop_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>method</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>extrapolation_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa455781ebdf8cbbfe9d06ce0ba7bc4bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa455781ebdf8cbbfe9d06ce0ba7bc4bf">&#9670;&nbsp;</a></span>crop_and_resize() <span class="overload">[6/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::crop_and_resize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>boxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td>
<td class="paramname"><em>box_ind</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a>&#160;</td>
<td class="paramname"><em>crop_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>method</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>extrapolation_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8698a00dbaa753456be2fcf40ec320e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8698a00dbaa753456be2fcf40ec320e1">&#9670;&nbsp;</a></span>crop_and_resize() <span class="overload">[7/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::crop_and_resize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>boxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt;&#160;</td>
<td class="paramname"><em>box_ind</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a>&#160;</td>
<td class="paramname"><em>crop_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>method</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>extrapolation_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a12bc62165f6277d6196148ce46260d1a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12bc62165f6277d6196148ce46260d1a">&#9670;&nbsp;</a></span>deconvolution_layer() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; deconvolution_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TB &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deconvolution reference implementation. </p>
<p>src Input tensor. 3 lower dimensions represent a single input, and an optional 4th dimension for batch of inputs. Data types supported: F32. weights The 4d weights with dimensions [width, height, OFM, IFM]. Data type supported: Same as <code>input</code>. bias Optional, ignored if NULL. The biases have one dimension. Data type supported: Same as <code>input</code>. output_shape Output tensor shape. The output has the same number of dimensions as the <code>input</code>. info Contains padding and policies to be used in the deconvolution, this is decribed in <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a>. a The number of zeros added to right and top edges of the input. </p>
<p class="definition">Definition at line <a class="el" href="reference_2_deconvolution_layer_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="reference_2_deconvolution_layer_8cpp_source.xhtml">DeconvolutionLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride_x = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.stride().first;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride_y = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.stride().second;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> weights_width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().x();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> weights_height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().y();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> weights_upper_dims = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().total_size() / (weights_width * weights_height);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// Find the upsampled dimensions</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> out_x = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x() - 1) * stride_x + 1;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> out_y = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y() - 1) * stride_y + 1;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// Find the padding needed for the convolution with stride 1 in order to match output shape</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> padx = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>.x() - (out_x - weights_width + 1);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pady = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>.y() - (out_y - weights_height + 1);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; out_x += padx;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; out_y += pady;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; TensorShape scaled_shape = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; scaled_shape.set(0, out_x);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; scaled_shape.set(1, out_y);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; SimpleTensor&lt;T&gt; scaled{ scaled_shape, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info() };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_in = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_in = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_scaled = scaled.shape().x();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_scaled = scaled.shape().y();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_2d_slices = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size() / (width_in * height_in);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pad().first &gt; (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().x() - 1));</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type() == DataType::QASYMM8)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> uint8_t quantized_zero = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info().uniform().offset;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; std::fill_n(scaled.data(), scaled.num_elements(), quantized_zero);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; std::fill_n(scaled.data(), scaled.num_elements(), T(0));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// Flip weights by 180 degrees</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; SimpleTensor&lt;T&gt; weights_flipped{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.data_type(), 1, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.quantization_info() };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ud = 0; ud &lt; weights_upper_dims; ++ud)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a> = ud * weights_width * weights_height;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = 0; y &lt; weights_height; ++y)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = 0; x &lt; weights_width; ++x)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; weights_flipped[<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a> + (weights_height - 1 - y) * weights_width + (weights_width - 1 - x)] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>[<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a> + y * weights_width + x];</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">slice</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">slice</a> &lt; num_2d_slices; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">slice</a>)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_slice_in = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">slice</a> * width_in * height_in;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_slice_out = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">slice</a> * width_scaled * height_scaled;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start_x = padx / 2;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start_y = pady / 2;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> end_y = height_scaled - pady / 2;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> end_x = width_scaled - padx / 2;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> yi = start_y, in_y = 0; yi &lt; end_y; yi += stride_y, in_y++)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> xi = start_x, in_x = 0; xi &lt; end_x; xi += stride_x, in_x++)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">const</span> T *in = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data() + offset_slice_in + in_y * width_in + in_x;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; T *out = scaled.data() + offset_slice_out + xi + yi * width_scaled;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; *out = *in;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> PadStrideInfo <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>(1, 1, 0, 0, 0, 0, DimensionRoundingType::CEIL);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1ceb764c20eb3c26b13e49315d835eb5">convolution_layer</a>(scaled, weights_flipped, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;}</div><div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">helpers.h:328</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a00525ff582f16038a1d3819aa44a23a3"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">arm_compute::test::validation::conv_info</a></div><div class="ttdeci">conv_info</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_winograd_8cpp_source.xhtml#l00599">Winograd.cpp:599</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a3a77be8aebd8e00522b32061d46ccdbd"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">arm_compute::test::validation::bias</a></div><div class="ttdeci">CLTensor bias</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">ConvolutionLayer.cpp:181</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a64a08a9fec5aeee8650e7182b6d171d0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">arm_compute::test::validation::weights</a></div><div class="ttdeci">CLTensor weights</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">ConvolutionLayer.cpp:180</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a548131b3d37da47a2e9d32111c88dfe1"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">arm_compute::test::validation::reference::slice</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; slice(const SimpleTensor&lt; T &gt; &amp;src, Coordinates starts, Coordinates ends)</div><div class="ttdef"><b>Definition:</b> <a href="_slice_operations_8cpp_source.xhtml#l00038">SliceOperations.cpp:38</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a1ceb764c20eb3c26b13e49315d835eb5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1ceb764c20eb3c26b13e49315d835eb5">arm_compute::test::validation::reference::convolution_layer</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; convolution_layer(const SimpleTensor&lt; T &gt; &amp;src, const SimpleTensor&lt; T &gt; &amp;weights, const SimpleTensor&lt; TB &gt; &amp;bias, const TensorShape &amp;output_shape, const PadStrideInfo &amp;info, const Size2D &amp;dilation, unsigned int num_groups, QuantizationInfo out_quant_info)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_convolution_layer_8cpp_source.xhtml#l00113">ConvolutionLayer.cpp:113</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">arm_compute::test::validation::bias</a>, <a class="el" href="namespacearm__compute.xhtml#a1fece1bd804e64f39f602d1c3969849aa5bdce8e6d9dc3efbbd31e90a8a181dff">arm_compute::CEIL</a>, <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00599">arm_compute::test::validation::conv_info</a>, <a class="el" href="validation_2reference_2_convolution_layer_8cpp_source.xhtml#l00113">convolution_layer()</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">offset()</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6af14462d71aa842202c3e4b272c7ec924">arm_compute::QASYMM8</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00078">TensorShape::set()</a>, <a class="el" href="_slice_operations_8cpp_source.xhtml#l00038">slice()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">arm_compute::test::validation::weights</a>.</p>
</div>
</div>
<a id="af7af6f74771afcdb9fee7b948afc4af6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7af6f74771afcdb9fee7b948afc4af6">&#9670;&nbsp;</a></span>deconvolution_layer() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::deconvolution_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a402696fc0412e9052f1d30d6331dfdef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a402696fc0412e9052f1d30d6331dfdef">&#9670;&nbsp;</a></span>deconvolution_layer() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::deconvolution_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0d2ea6a35e80f768e55935e819912505"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d2ea6a35e80f768e55935e819912505">&#9670;&nbsp;</a></span>deconvolution_layer() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::deconvolution_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a742cdbdf3c1db76c9a189f1bcd745579"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a742cdbdf3c1db76c9a189f1bcd745579">&#9670;&nbsp;</a></span>depth_convert() <span class="overload">[1/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; depth_convert </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_depth_convert_layer_8cpp_source.xhtml#l00042">42</a> of file <a class="el" href="reference_2_depth_convert_layer_8cpp_source.xhtml">DepthConvertLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; SimpleTensor&lt;T2&gt; result(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), dt_out);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// Up-casting</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute.xhtml#a34b06c0cd94808a77b697e79880b84b0">element_size_from_data_type</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type()) &lt; <a class="code" href="namespacearm__compute.xhtml#a34b06c0cd94808a77b697e79880b84b0">element_size_from_data_type</a>(dt_out))</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; result[i] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &lt;&lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Down-casting</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; T1 val = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &gt;&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">shift</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; result[i] = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a> == ConvertPolicy::SATURATE) ? utils::cast::saturate_cast&lt;T2&gt;(val) : static_cast&lt;T2&gt;(val);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a979a54caef6e77ce0259e427136847e8"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a979a54caef6e77ce0259e427136847e8">arm_compute::test::validation::shift</a></div><div class="ttdeci">shift</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_depth_convert_layer_8cpp_source.xhtml#l00155">DepthConvertLayer.cpp:155</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad986b73e9d5f47a623a9b6d773c25e34"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">arm_compute::test::validation::policy</a></div><div class="ttdeci">policy</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">ArithmeticAddition.cpp:136</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a34b06c0cd94808a77b697e79880b84b0"><div class="ttname"><a href="namespacearm__compute.xhtml#a34b06c0cd94808a77b697e79880b84b0">arm_compute::element_size_from_data_type</a></div><div class="ttdeci">size_t element_size_from_data_type(DataType dt)</div><div class="ttdoc">The size in bytes of the data type.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_utils_8h_source.xhtml#l00184">Utils.h:184</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00184">arm_compute::element_size_from_data_type()</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">arm_compute::test::validation::policy</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fa4729d95f983955f0d93a30179deb2b86">arm_compute::SATURATE</a>, <a class="el" href="_c_l_2_depth_convert_layer_8cpp_source.xhtml#l00155">arm_compute::test::validation::shift</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a97ffa19c49dbe0b8d0e47b0ab15c51dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97ffa19c49dbe0b8d0e47b0ab15c51dd">&#9670;&nbsp;</a></span>depth_convert() <span class="overload">[2/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; depth_convert </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acad5a5cf179151895a976da050f213f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acad5a5cf179151895a976da050f213f4">&#9670;&nbsp;</a></span>depth_convert() <span class="overload">[3/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; depth_convert </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae8d5666de9f1ea545436d8dd3dac7b8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8d5666de9f1ea545436d8dd3dac7b8a">&#9670;&nbsp;</a></span>depth_convert() <span class="overload">[4/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; depth_convert </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a968f4da89a68d28ad39d8e39d8d19f93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a968f4da89a68d28ad39d8e39d8d19f93">&#9670;&nbsp;</a></span>depth_convert() <span class="overload">[5/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; depth_convert </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6b297a6ebf043fe0f8b2ad99a3d12062"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b297a6ebf043fe0f8b2ad99a3d12062">&#9670;&nbsp;</a></span>depth_convert() <span class="overload">[6/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; depth_convert </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2790b7ea17fe89ea8befa5a0c657f4ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2790b7ea17fe89ea8befa5a0c657f4ae">&#9670;&nbsp;</a></span>depth_convert() <span class="overload">[7/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; depth_convert </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac0a3b5445ea9e2835f0c0321a0afe9b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac0a3b5445ea9e2835f0c0321a0afe9b1">&#9670;&nbsp;</a></span>depth_convert() <span class="overload">[8/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; depth_convert </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4f6b2f51f5c49ae3d358f65246581656"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f6b2f51f5c49ae3d358f65246581656">&#9670;&nbsp;</a></span>depth_convert() <span class="overload">[9/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; depth_convert </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac5ebcd0b7af3ed4028f686bf7a4ab814"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5ebcd0b7af3ed4028f686bf7a4ab814">&#9670;&nbsp;</a></span>depth_to_space() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; depth_to_space </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>block_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_depth_to_space_layer_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_depth_to_space_layer_8cpp_source.xhtml">DepthToSpaceLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(block_shape &lt;= 0);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; SimpleTensor&lt;T&gt; result(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">int</span> in_pos = 0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> width_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0]);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> height_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1]);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> channel_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2]);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> batch_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[3]);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> r = channel_in / (block_shape * block_shape);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> &lt; batch_in; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> z = 0; z &lt; channel_in; ++z)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = 0; y &lt; height_in; ++y)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = 0; x &lt; width_in; ++x)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_x = (block_shape * x + (z / r) % block_shape);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_y = (block_shape * y + (z / r) / block_shape);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_pos = out_x + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[0] * out_y + (z % r) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[0] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[1] + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[0] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[1] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[2];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; result[out_pos] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[in_pos];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; ++in_pos;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="ac911b1992900602137e790cc89ddc8ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac911b1992900602137e790cc89ddc8ac">&#9670;&nbsp;</a></span>depth_to_space() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::depth_to_space </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>block_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab36b4f1c7136e731b56bcea1ba1f6674"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab36b4f1c7136e731b56bcea1ba1f6674">&#9670;&nbsp;</a></span>depth_to_space() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::depth_to_space </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>block_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4e15b670980db455ad07397b2c34b610"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e15b670980db455ad07397b2c34b610">&#9670;&nbsp;</a></span>depthconcatenate_layer() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; depthconcatenate_layer </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_depth_concatenate_layer_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="validation_2reference_2_depth_concatenate_layer_8cpp_source.xhtml">DepthConcatenateLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::vector&lt;TensorShape&gt; shapes;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; shapes.reserve(srcs.size());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a> : srcs)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; shapes.emplace_back(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">int</span> depth_offset = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_out = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().x();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_out = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().y();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth_out = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().z();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="depthwise__convolution_8cl.xhtml#a128f47cb6aacde29e07fde2c4b9f5dd2">out_stride_z</a> = width_out * height_out;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> batches = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().total_size_upper(3);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">auto</span> have_different_quantization_info = [&amp;](<span class="keyword">const</span> SimpleTensor&lt;T&gt; &amp;tensor)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> tensor.quantization_info() != <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.quantization_info();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span>(srcs[0].<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a>() == DataType::QASYMM8 &amp;&amp; std::any_of(srcs.cbegin(), srcs.cend(), have_different_quantization_info))</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> &lt; batches; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// input tensors can have smaller width and height than the output, so for each output&#39;s slice we need to requantize 0 (as this is the value</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// used in NEFillBorderKernel by NEDepthConcatenateLayer) using the corresponding quantization info for that particular slice/input tensor.</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">slice</a> = 0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a> : srcs)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">auto</span> ptr_slice = static_cast&lt;T *&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(Coordinates(0, 0, <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">slice</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)));</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> num_elems_in_slice((<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.num_elements() / depth_out) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().z());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> UniformQuantizationInfo iq_info = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info().uniform();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> UniformQuantizationInfo oq_info = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.quantization_info().uniform();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; std::transform(ptr_slice, ptr_slice + num_elems_in_slice, ptr_slice, [&amp;](T)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#a25591070cf041aff512719050c39e5ee">quantize_qasymm8</a>(<a class="code" href="namespacearm__compute.xhtml#a34725aa0412e6cc99193ceb6c8a8e439">dequantize_qasymm8</a>(0, iq_info), oq_info);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; });</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">slice</a> += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().z();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; std::fill_n(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.num_elements(), 0);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a> : srcs)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(depth_offset &gt;= depth_out);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(batches != static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size_upper(3)));</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().z();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> x_diff = (width_out - width) / 2;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> y_diff = (height_out - height) / 2;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">const</span> T *src_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> &lt; batches; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> offset_to_first_element = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> * <a class="code" href="depthwise__convolution_8cl.xhtml#a128f47cb6aacde29e07fde2c4b9f5dd2">out_stride_z</a> * depth_out + depth_offset * <a class="code" href="depthwise__convolution_8cl.xhtml#a128f47cb6aacde29e07fde2c4b9f5dd2">out_stride_z</a> + y_diff * width_out + x_diff;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> d = 0; d &lt; depth; ++d)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; height; ++r)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type() == DataType::QASYMM8 &amp;&amp; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info() != <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.quantization_info())</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> UniformQuantizationInfo iq_info = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info().uniform();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">const</span> UniformQuantizationInfo oq_info = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.quantization_info().uniform();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; std::transform(src_ptr, src_ptr + width, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data() + offset_to_first_element + d * <a class="code" href="depthwise__convolution_8cl.xhtml#a128f47cb6aacde29e07fde2c4b9f5dd2">out_stride_z</a> + r * width_out, [&amp;](T t)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> dequantized_input = <a class="code" href="namespacearm__compute.xhtml#a34725aa0412e6cc99193ceb6c8a8e439">dequantize_qasymm8</a>(t, iq_info);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#a25591070cf041aff512719050c39e5ee">quantize_qasymm8</a>(dequantized_input, oq_info);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; });</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; src_ptr += width;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">std::copy</a>(src_ptr, src_ptr + width, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data() + offset_to_first_element + d * <a class="code" href="depthwise__convolution_8cl.xhtml#a128f47cb6aacde29e07fde2c4b9f5dd2">out_stride_z</a> + r * width_out);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; src_ptr += width;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; depth_offset += depth;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a34725aa0412e6cc99193ceb6c8a8e439"><div class="ttname"><a href="namespacearm__compute.xhtml#a34725aa0412e6cc99193ceb6c8a8e439">arm_compute::dequantize_qasymm8</a></div><div class="ttdeci">float dequantize_qasymm8(uint8_t value, const UniformQuantizationInfo &amp;qinfo)</div><div class="ttdoc">Dequantize a value given a asymmetric quantization scheme.</div><div class="ttdef"><b>Definition:</b> <a href="_quantization_info_8h_source.xhtml#l00248">QuantizationInfo.h:248</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_ad9000ce99b9ffcec5722cade36d7e757"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">arm_compute::test::validation::reference::copy</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; copy(const SimpleTensor&lt; T &gt; &amp;src, const TensorShape &amp;output_shape)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_copy_8cpp_source.xhtml#l00037">Copy.cpp:37</a></div></div>
<div class="ttc" id="depthwise__convolution_8cl_xhtml_a128f47cb6aacde29e07fde2c4b9f5dd2"><div class="ttname"><a href="depthwise__convolution_8cl.xhtml#a128f47cb6aacde29e07fde2c4b9f5dd2">out_stride_z</a></div><div class="ttdeci">#define out_stride_z</div><div class="ttdef"><b>Definition:</b> <a href="depthwise__convolution_8cl_source.xhtml#l00799">depthwise_convolution.cl:799</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5f5b6c4337eac9e2e0046ca2304d80dc"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">arm_compute::test::validation::data_type</a></div><div class="ttdeci">data_type</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00135">ArithmeticAddition.cpp:135</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a548131b3d37da47a2e9d32111c88dfe1"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a548131b3d37da47a2e9d32111c88dfe1">arm_compute::test::validation::reference::slice</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; slice(const SimpleTensor&lt; T &gt; &amp;src, Coordinates starts, Coordinates ends)</div><div class="ttdef"><b>Definition:</b> <a href="_slice_operations_8cpp_source.xhtml#l00038">SliceOperations.cpp:38</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a25591070cf041aff512719050c39e5ee"><div class="ttname"><a href="namespacearm__compute.xhtml#a25591070cf041aff512719050c39e5ee">arm_compute::quantize_qasymm8</a></div><div class="ttdeci">uint8_t quantize_qasymm8(float value, const UniformQuantizationInfo &amp;qinfo, RoundingPolicy rounding_policy=RoundingPolicy::TO_NEAREST_UP)</div><div class="ttdoc">Quantize a value given a asymmetric quantization scheme.</div><div class="ttdef"><b>Definition:</b> <a href="_quantization_info_8h_source.xhtml#l00204">QuantizationInfo.h:204</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="reference_2_copy_8cpp_source.xhtml#l00037">copy()</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00135">arm_compute::test::validation::data_type</a>, <a class="el" href="_quantization_info_8h_source.xhtml#l00248">arm_compute::dequantize_qasymm8()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="depthwise__convolution_8cl_source.xhtml#l00799">out_stride_z</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6af14462d71aa842202c3e4b272c7ec924">arm_compute::QASYMM8</a>, <a class="el" href="_quantization_info_8h_source.xhtml#l00204">arm_compute::quantize_qasymm8()</a>, <a class="el" href="_slice_operations_8cpp_source.xhtml#l00038">slice()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="ae87f24b80ddc830b9911fcba89004686"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae87f24b80ddc830b9911fcba89004686">&#9670;&nbsp;</a></span>depthconcatenate_layer() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::depthconcatenate_layer </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab620d10e96dbaf31989ff11b490deef9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab620d10e96dbaf31989ff11b490deef9">&#9670;&nbsp;</a></span>depthconcatenate_layer() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::depthconcatenate_layer </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a822ab49e0fc97c2687bb92c079ebf1f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a822ab49e0fc97c2687bb92c079ebf1f1">&#9670;&nbsp;</a></span>depthconcatenate_layer() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::depthconcatenate_layer </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af411a55d9c9aeba5c5e579613f362988"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af411a55d9c9aeba5c5e579613f362988">&#9670;&nbsp;</a></span>depthwise_convolution() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; depthwise_convolution </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TB &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth_multiplier</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>dilation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>out_quant_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Perform a depthwise convolution. </p>
<ul>
<li>Three dimensions tensors</li>
<li>Third dimention is number of channels</li>
<li>Depths of input tensor and filter are equals</li>
<li>Padding, stride and output shape "match" </li>
</ul>
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_depthwise_convolution_layer_8cpp_source.xhtml#l00052">52</a> of file <a class="el" href="validation_2reference_2_depthwise_convolution_layer_8cpp_source.xhtml">DepthwiseConvolutionLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a>(out_quant_info);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1 };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a23a07c975b13e0133e838d850dcf30c5">filter_width</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().x();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab9960ce2e784cfff275d273c1810797f">filter_height</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().y();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> filter_plane = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a23a07c975b13e0133e838d850dcf30c5">filter_width</a> * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab9960ce2e784cfff275d273c1810797f">filter_height</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> input_width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> input_height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> input_depth = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().z();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batches = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size() / (input_width * input_height * input_depth);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_left = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_left();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_top = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_top();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_right = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_right();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_bottom = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_bottom();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> patch_width = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a23a07c975b13e0133e838d850dcf30c5">filter_width</a> + (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>.x() - 1) * (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a23a07c975b13e0133e838d850dcf30c5">filter_width</a> - 1));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> patch_height = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab9960ce2e784cfff275d273c1810797f">filter_height</a> + (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>.y() - 1) * (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab9960ce2e784cfff275d273c1810797f">filter_height</a> - 1));</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> patch_half_width_floor = patch_width / 2;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> patch_half_height_floor = patch_height / 2;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> patch_half_width_ceil = static_cast&lt;int&gt;(std::ceil(patch_width / 2));</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> patch_half_height_ceil = static_cast&lt;int&gt;(std::ceil(patch_height / 2));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> minimum_x = -pad_left + patch_half_width_floor;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> minimum_y = -pad_top + patch_half_height_floor;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> maximum_x = input_width + pad_left + pad_right - static_cast&lt;int&gt;(patch_width);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> maximum_y = input_height + pad_top + pad_bottom - static_cast&lt;int&gt;(patch_height);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">const</span> T border_value(0);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">int</span> out_pos = 0;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; num_batches; ++r)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> z = 0; z &lt; input_depth; ++z)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m = 0; m &lt; depth_multiplier; ++m)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_z = z * depth_multiplier + m;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = minimum_y; y &lt;= minimum_y + maximum_y; y += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.stride().second)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = minimum_x; x &lt;= minimum_x + maximum_x; x += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.stride().first)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; Coordinates coords(static_cast&lt;int&gt;(x), static_cast&lt;int&gt;(y), static_cast&lt;int&gt;(z), static_cast&lt;int&gt;(r));</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">size_t</span> filter_offset = filter_plane * out_z;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; T val(0);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = y - patch_half_height_floor; j &lt; y + patch_half_height_ceil; j += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>.y())</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = x - patch_half_width_floor; i &lt; x + patch_half_width_ceil; i += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>.x())</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; coords.set(0, i);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; coords.set(1, j);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; val += *(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.data() + filter_offset) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, coords, BorderMode::CONSTANT, border_value);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; ++filter_offset;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[out_pos++] = saturate_cast&lt;T&gt;(val + *static_cast&lt;const TB *&gt;(biases(Coordinates(out_z))));</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad3fd4136244e42ad89b01c02b904336d"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">arm_compute::test::validation::dilation</a></div><div class="ttdeci">dilation</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a00525ff582f16038a1d3819aa44a23a3"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">arm_compute::test::validation::conv_info</a></div><div class="ttdeci">conv_info</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_winograd_8cpp_source.xhtml#l00599">Winograd.cpp:599</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a6dc630a6ae9cc063b3924bcea8dee9d6"><div class="ttname"><a href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(...)</div><div class="ttdoc">To avoid unused variables warnings.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00160">Error.h:160</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a23a07c975b13e0133e838d850dcf30c5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a23a07c975b13e0133e838d850dcf30c5">arm_compute::test::validation::filter_width</a></div><div class="ttdeci">filter_width</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00324">Convolution.cpp:324</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a64a08a9fec5aeee8650e7182b6d171d0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">arm_compute::test::validation::weights</a></div><div class="ttdeci">CLTensor weights</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">ConvolutionLayer.cpp:180</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab9960ce2e784cfff275d273c1810797f"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab9960ce2e784cfff275d273c1810797f">arm_compute::test::validation::filter_height</a></div><div class="ttdeci">filter_height</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00325">Convolution.cpp:325</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00160">ARM_COMPUTE_UNUSED</a>, <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91a8d6b5cada83510220f59e00ce86d4d92">arm_compute::CONSTANT</a>, <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00599">arm_compute::test::validation::conv_info</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::dilation</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00325">arm_compute::test::validation::filter_height</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00324">arm_compute::test::validation::filter_width</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00074">Dimensions&lt; T &gt;::set()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, and <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">arm_compute::test::validation::weights</a>.</p>
<p class="reference">Referenced by <a class="el" href="validation_2reference_2_depthwise_separable_convolution_layer_8cpp_source.xhtml#l00043">depthwise_separable_convolution_layer()</a>.</p>
</div>
</div>
<a id="aec5c617012397c568660626f052fd23b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec5c617012397c568660626f052fd23b">&#9670;&nbsp;</a></span>depthwise_convolution() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::depthwise_convolution </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth_multiplier</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>dilation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>out_quant_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_depthwise_convolution_layer_8cpp_source.xhtml#l00128">128</a> of file <a class="el" href="validation_2reference_2_depthwise_convolution_layer_8cpp_source.xhtml">DepthwiseConvolutionLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;{</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// if no explicit quantization has been set you the same as src</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">const</span> QuantizationInfo &amp;dst_qinfo = out_quant_info.uniform().empty() ? <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info() : out_quant_info;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1, dst_qinfo };</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> input_offset = -<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info().uniform().offset;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> input_scale = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info().uniform().scale;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> weights_offset = -<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.quantization_info().uniform().offset;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> weights_scale = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.quantization_info().uniform().scale;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> output_offset = dst_qinfo.uniform().offset;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> output_scale = dst_qinfo.uniform().scale;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordtype">int</span> output_multiplier = 0;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">int</span> output_shift = 0;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> multiplier = input_scale * weights_scale / output_scale;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="namespacearm__compute_1_1quantization.xhtml#a22032f9cf47deae265eafb65ff55b594">arm_compute::quantization::calculate_quantized_multiplier_less_than_one</a>(multiplier, &amp;output_multiplier, &amp;output_shift);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a23a07c975b13e0133e838d850dcf30c5">filter_width</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().x();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab9960ce2e784cfff275d273c1810797f">filter_height</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().y();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> filter_plane = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a23a07c975b13e0133e838d850dcf30c5">filter_width</a> * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab9960ce2e784cfff275d273c1810797f">filter_height</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> input_width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> input_height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> input_depth = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().z();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batches = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size() / (input_width * input_height * input_depth);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_left = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_left();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_top = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_top();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_right = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_right();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_bottom = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_bottom();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> patch_width = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a23a07c975b13e0133e838d850dcf30c5">filter_width</a> + (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>.x() - 1) * (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a23a07c975b13e0133e838d850dcf30c5">filter_width</a> - 1));</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> patch_height = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab9960ce2e784cfff275d273c1810797f">filter_height</a> + (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>.y() - 1) * (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab9960ce2e784cfff275d273c1810797f">filter_height</a> - 1));</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> patch_half_width_floor = patch_width / 2;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> patch_half_height_floor = patch_height / 2;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> patch_half_width_ceil = static_cast&lt;int&gt;(std::ceil(patch_width / 2));</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> patch_half_height_ceil = static_cast&lt;int&gt;(std::ceil(patch_height / 2));</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> minimum_x = -pad_left + patch_half_width_floor;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> minimum_y = -pad_top + patch_half_height_floor;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> maximum_x = input_width + pad_left + pad_right - static_cast&lt;int&gt;(patch_width);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> maximum_y = input_height + pad_top + pad_bottom - static_cast&lt;int&gt;(patch_height);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordtype">int</span> out_pos = 0;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; num_batches; ++r)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> z = 0; z &lt; input_depth; ++z)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m = 0; m &lt; depth_multiplier; ++m)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_z = z * depth_multiplier + m;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">const</span> int32_t bias_val = *static_cast&lt;const int32_t *&gt;(biases(Coordinates(out_z)));</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = minimum_y; y &lt;= minimum_y + maximum_y; y += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.stride().second)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = minimum_x; x &lt;= minimum_x + maximum_x; x += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.stride().first)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; Coordinates coords(x, y, z, r);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordtype">int</span> filter_offset = filter_plane * out_z;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; int32_t val = 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = y - patch_half_height_floor; j &lt; y + patch_half_height_ceil; j += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>.y())</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = x - patch_half_width_floor; i &lt; x + patch_half_width_ceil; i += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">dilation</a>.x())</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; coords.set(0, i);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; coords.set(1, j);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> in_val = tensor_elem_at&lt;uint8_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, coords, BorderMode::CONSTANT, -input_offset);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">const</span> uint8_t w_val = *(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.data() + filter_offset);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; val += (in_val + input_offset) * (w_val + weights_offset);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; ++filter_offset;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; val += bias_val;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; val = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5bab95cbeb5c6bf05049df7afd32d823">asymm_rounding_divide_by_pow2</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aea27abcd3d58d627282320dfdd213596">asymm_int_mult</a>(val, output_multiplier), output_shift);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; val += output_offset;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; val = std::max&lt;int32_t&gt;(val, 0);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; val = std::min&lt;int32_t&gt;(val, 255);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="comment">// Store the result</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[out_pos++] = val;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5bab95cbeb5c6bf05049df7afd32d823"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5bab95cbeb5c6bf05049df7afd32d823">arm_compute::test::validation::asymm_rounding_divide_by_pow2</a></div><div class="ttdeci">int32_t asymm_rounding_divide_by_pow2(int32_t x, int exponent)</div><div class="ttdoc">Rounded to nearest division by a power-of-two.</div><div class="ttdef"><b>Definition:</b> <a href="_utils_quantized_asymm_8h_source.xhtml#l00036">UtilsQuantizedAsymm.h:36</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1quantization_xhtml_a22032f9cf47deae265eafb65ff55b594"><div class="ttname"><a href="namespacearm__compute_1_1quantization.xhtml#a22032f9cf47deae265eafb65ff55b594">arm_compute::quantization::calculate_quantized_multiplier_less_than_one</a></div><div class="ttdeci">arm_compute::Status calculate_quantized_multiplier_less_than_one(float multiplier, int *quant_multiplier, int *right_shift)</div><div class="ttdoc">Calculate quantized representation of multiplier with value less than one.</div><div class="ttdef"><b>Definition:</b> <a href="_asymm_helpers_8cpp_source.xhtml#l00035">AsymmHelpers.cpp:35</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad3fd4136244e42ad89b01c02b904336d"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad3fd4136244e42ad89b01c02b904336d">arm_compute::test::validation::dilation</a></div><div class="ttdeci">dilation</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a00525ff582f16038a1d3819aa44a23a3"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">arm_compute::test::validation::conv_info</a></div><div class="ttdeci">conv_info</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_winograd_8cpp_source.xhtml#l00599">Winograd.cpp:599</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aea27abcd3d58d627282320dfdd213596"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aea27abcd3d58d627282320dfdd213596">arm_compute::test::validation::asymm_int_mult</a></div><div class="ttdeci">int32_t asymm_int_mult(int32_t a, int32_t b)</div><div class="ttdoc">Multiplication of two integers.</div><div class="ttdef"><b>Definition:</b> <a href="_utils_quantized_asymm_8h_source.xhtml#l00044">UtilsQuantizedAsymm.h:44</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a23a07c975b13e0133e838d850dcf30c5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a23a07c975b13e0133e838d850dcf30c5">arm_compute::test::validation::filter_width</a></div><div class="ttdeci">filter_width</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00324">Convolution.cpp:324</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a64a08a9fec5aeee8650e7182b6d171d0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">arm_compute::test::validation::weights</a></div><div class="ttdeci">CLTensor weights</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">ConvolutionLayer.cpp:180</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab9960ce2e784cfff275d273c1810797f"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab9960ce2e784cfff275d273c1810797f">arm_compute::test::validation::filter_height</a></div><div class="ttdeci">filter_height</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00325">Convolution.cpp:325</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_utils_quantized_asymm_8h_source.xhtml#l00044">arm_compute::test::validation::asymm_int_mult()</a>, <a class="el" href="_utils_quantized_asymm_8h_source.xhtml#l00036">arm_compute::test::validation::asymm_rounding_divide_by_pow2()</a>, <a class="el" href="_asymm_helpers_8cpp_source.xhtml#l00035">arm_compute::quantization::calculate_quantized_multiplier_less_than_one()</a>, <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91a8d6b5cada83510220f59e00ce86d4d92">arm_compute::CONSTANT</a>, <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00599">arm_compute::test::validation::conv_info</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::dilation</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="_quantization_info_8h_source.xhtml#l00056">UniformQuantizationInfo::empty()</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00325">arm_compute::test::validation::filter_height</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00324">arm_compute::test::validation::filter_width</a>, <a class="el" href="_quantization_info_8h_source.xhtml#l00062">UniformQuantizationInfo::offset</a>, <a class="el" href="_quantization_info_8h_source.xhtml#l00061">UniformQuantizationInfo::scale</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00074">Dimensions&lt; T &gt;::set()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="_quantization_info_8h_source.xhtml#l00134">QuantizationInfo::uniform()</a>, and <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">arm_compute::test::validation::weights</a>.</p>
</div>
</div>
<a id="ad9f4779124f1665e05a60ce576cba865"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9f4779124f1665e05a60ce576cba865">&#9670;&nbsp;</a></span>depthwise_convolution() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::depthwise_convolution </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth_multiplier</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>dilation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>out_quant_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad76902f9b0ac13716a64d22ecb8e34bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad76902f9b0ac13716a64d22ecb8e34bf">&#9670;&nbsp;</a></span>depthwise_convolution() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::depthwise_convolution </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth_multiplier</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>dilation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>out_quant_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a71dcbc5f08da9ae1a8981746d7a62322"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71dcbc5f08da9ae1a8981746d7a62322">&#9670;&nbsp;</a></span>depthwise_separable_convolution_layer() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; depthwise_separable_convolution_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>depthwise_weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>depthwise_biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>depthwise_out_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>pointwise_weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>pointwise_biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>depthwise_conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>pointwise_conv_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_depthwise_separable_convolution_layer_8cpp_source.xhtml#l00043">43</a> of file <a class="el" href="validation_2reference_2_depthwise_separable_convolution_layer_8cpp_source.xhtml">DepthwiseSeparableConvolutionLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; SimpleTensor&lt;T&gt; depthwise_out = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af411a55d9c9aeba5c5e579613f362988">depthwise_convolution</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, depthwise_weights, depthwise_biases, depthwise_out_shape, depthwise_conv_info, 1);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1ceb764c20eb3c26b13e49315d835eb5">convolution_layer</a>(depthwise_out, pointwise_weights, pointwise_biases, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, pointwise_conv_info);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_af411a55d9c9aeba5c5e579613f362988"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af411a55d9c9aeba5c5e579613f362988">arm_compute::test::validation::reference::depthwise_convolution</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; depthwise_convolution(const SimpleTensor&lt; T &gt; &amp;src, const SimpleTensor&lt; T &gt; &amp;weights, const SimpleTensor&lt; TB &gt; &amp;biases, const TensorShape &amp;dst_shape, const PadStrideInfo &amp;conv_info, unsigned int depth_multiplier, const Size2D &amp;dilation, const QuantizationInfo &amp;out_quant_info)</div><div class="ttdoc">Perform a depthwise convolution.</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_depthwise_convolution_layer_8cpp_source.xhtml#l00052">DepthwiseConvolutionLayer.cpp:52</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a1ceb764c20eb3c26b13e49315d835eb5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1ceb764c20eb3c26b13e49315d835eb5">arm_compute::test::validation::reference::convolution_layer</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; convolution_layer(const SimpleTensor&lt; T &gt; &amp;src, const SimpleTensor&lt; T &gt; &amp;weights, const SimpleTensor&lt; TB &gt; &amp;bias, const TensorShape &amp;output_shape, const PadStrideInfo &amp;info, const Size2D &amp;dilation, unsigned int num_groups, QuantizationInfo out_quant_info)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_convolution_layer_8cpp_source.xhtml#l00113">ConvolutionLayer.cpp:113</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2reference_2_convolution_layer_8cpp_source.xhtml#l00113">convolution_layer()</a>, <a class="el" href="validation_2reference_2_depthwise_convolution_layer_8cpp_source.xhtml#l00052">depthwise_convolution()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a0c7524d5bce923f96be77f49e1da3913"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c7524d5bce923f96be77f49e1da3913">&#9670;&nbsp;</a></span>depthwise_separable_convolution_layer() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::depthwise_separable_convolution_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>depthwise_weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>depthwise_biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>depthwise_out_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>pointwise_weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>pointwise_biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>depthwise_conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>pointwise_conv_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abd43030e06efec1c26997107b7bd184d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd43030e06efec1c26997107b7bd184d">&#9670;&nbsp;</a></span>dequantization_layer() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TOut &gt; dequantization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TIn &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_dequantization_layer_8cpp_source.xhtml#l00100">100</a> of file <a class="el" href="validation_2reference_2_dequantization_layer_8cpp_source.xhtml">DequantizationLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_layout() == DataLayout::NHWC &amp;&amp; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type() == DataType::QSYMM8_PER_CHANNEL)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; SimpleTensor&lt;TIn&gt; src_nchw = reference::permute&lt;TIn&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> reference::permute&lt;TOut&gt;(dequantization_layer_nchw&lt;TOut&gt;(src_nchw), <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(2<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> dequantization_layer_nchw&lt;TOut&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div><div class="ttc" id="namespacearm__compute_xhtml_a33e65be485104e2e9e69fca551d6f492"><div class="ttname"><a href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">arm_compute::PermutationVector</a></div><div class="ttdeci">Strides PermutationVector</div><div class="ttdoc">Permutation vector.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00047">Types.h:47</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_1_1cast_xhtml_a2ea3d1fc01a3a442900249ca182ffa5e"><div class="ttname"><a href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">arm_compute::utils::cast::U</a></div><div class="ttdeci">U</div><div class="ttdef"><b>Definition:</b> <a href="_saturate_cast_8h_source.xhtml#l00057">SaturateCast.h:57</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">arm_compute::NHWC</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34f500e941c4df30b870126ec868ebd5">arm_compute::QSYMM8_PER_CHANNEL</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a9b5c98302ac3ac376c23302a1f3beef2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b5c98302ac3ac376c23302a1f3beef2">&#9670;&nbsp;</a></span>dequantization_layer() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; dequantization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abede2427030c71627ea72c8eaee16fff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abede2427030c71627ea72c8eaee16fff">&#9670;&nbsp;</a></span>dequantization_layer() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; dequantization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afb55c366bbc0df5025d95b736ac14ff4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb55c366bbc0df5025d95b736ac14ff4">&#9670;&nbsp;</a></span>dequantization_layer() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; dequantization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aeae8f44225b61c5a6b05fdfcd82ae3d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeae8f44225b61c5a6b05fdfcd82ae3d1">&#9670;&nbsp;</a></span>derivative() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::pair&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt; derivative </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7">GradientDimension</a>&#160;</td>
<td class="paramname"><em>gradient_dimension</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_derivative_8cpp_source.xhtml#l00055">55</a> of file <a class="el" href="reference_2_derivative_8cpp_source.xhtml">Derivative.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a> = 3;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; SimpleTensor&lt;T&gt; dst_x(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), data_type&lt;T&gt;::value, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels());</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; SimpleTensor&lt;T&gt; dst_y(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), data_type&lt;T&gt;::value, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels());</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; ValidRegion <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">shape_to_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::UNDEFINED, BorderSize(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a> / 2));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; Coordinates coord = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), i);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">is_in_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a>, coord))</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">switch</span>(gradient_dimension)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> GradientDimension::GRAD_X:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, dst_x, TensorShape{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a> }, derivative_3_x.data(), 1.f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; constant_border_value);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">case</span> GradientDimension::GRAD_Y:</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, dst_y, TensorShape{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a> }, derivative_3_y.data(), 1.f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; constant_border_value);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">case</span> GradientDimension::GRAD_XY:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, dst_x, TensorShape{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a> }, derivative_3_x.data(), 1.f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; constant_border_value);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, dst_y, TensorShape{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a> }, derivative_3_y.data(), 1.f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; constant_border_value);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Gradient dimension not supported&quot;</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> std::make_pair(dst_x, dst_y);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d1175c32ed7ea771e8ea46c936ea5c7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">arm_compute::test::validation::apply_2d_spatial_filter</a></div><div class="ttdeci">void apply_2d_spatial_filter(Coordinates coord, const SimpleTensor&lt; T &gt; &amp;src, SimpleTensor&lt; U &gt; &amp;dst, const TensorShape &amp;filter_shape, const V *filter_itr, double scale, BorderMode border_mode, T constant_border_value=T(0))</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00098">Utils.h:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a2237230a1357685ba2472c2d6fca17fa"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">arm_compute::test::validation::filter_size</a></div><div class="ttdeci">filter_size</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00119">Convolution.cpp:119</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a856b55fc20ddcbdbeb84c35ae27bedac"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">arm_compute::test::is_in_valid_region</a></div><div class="ttdeci">bool is_in_valid_region(const ValidRegion &amp;valid_region, Coordinates coord)</div><div class="ttdoc">Check if a coordinate is within a valid region.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00498">Utils.h:498</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7819bcbbf45c2e7c1396a137dce54422"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">arm_compute::test::validation::valid_region</a></div><div class="ttdeci">const ValidRegion valid_region</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00109">AbsoluteDifference.cpp:109</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a8103df0e6c416f55f40106aa49072b42"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">arm_compute::test::shape_to_valid_region</a></div><div class="ttdeci">ValidRegion shape_to_valid_region(const TensorShape &amp;a_shape, bool border_undefined=false, BorderSize border_size=BorderSize(0))</div><div class="ttdoc">Create a valid region based on tensor shape, border mode and border size.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00221">Utils.h:221</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00119">arm_compute::test::validation::filter_size</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="ac5079d3fc0f7cf5f8dfb40b882cea1af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5079d3fc0f7cf5f8dfb40b882cea1af">&#9670;&nbsp;</a></span>derivative() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::pair&lt;<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt;, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; &gt; arm_compute::test::validation::reference::derivative </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7">GradientDimension</a>&#160;</td>
<td class="paramname"><em>gradient_dimension</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a206dcc57b5f0396164931c3e65f52e20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a206dcc57b5f0396164931c3e65f52e20">&#9670;&nbsp;</a></span>detection_windows_non_maxima_suppression()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void arm_compute::test::validation::reference::detection_windows_non_maxima_suppression </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="structarm__compute_1_1_detection_window.xhtml">DetectionWindow</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>multi_windows</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>min_distance</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml#l00060">60</a> of file <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml">HOGMultiDetection.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_candidates = multi_windows.size();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">size_t</span> num_detections = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">// Sort by idx_class first and by score second</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; std::sort(multi_windows.begin(), multi_windows.end(), [](<span class="keyword">const</span> <a class="code" href="struct_detection_window.xhtml">DetectionWindow</a> &amp; lhs, <span class="keyword">const</span> <a class="code" href="struct_detection_window.xhtml">DetectionWindow</a> &amp; rhs)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(lhs.<a class="code" href="struct_detection_window.xhtml#ad4f986571659dd822695ca58dda00e49">idx_class</a> &lt; rhs.idx_class)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span>(rhs.idx_class &lt; lhs.<a class="code" href="struct_detection_window.xhtml#ad4f986571659dd822695ca58dda00e49">idx_class</a>)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// idx_classes are equal so compare by score</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span>(lhs.<a class="code" href="struct_detection_window.xhtml#a8c5cd9b525ee73a24b1d9d8e34982d1c">score</a> &gt; rhs.score)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span>(rhs.score &gt; lhs.<a class="code" href="struct_detection_window.xhtml#a8c5cd9b525ee73a24b1d9d8e34982d1c">score</a>)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; });</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> min_distance_pow2 = min_distance * min_distance;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// Euclidean distance</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; num_candidates; ++i)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span>(0.0f != multi_windows.at(i).score)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="struct_detection_window.xhtml">DetectionWindow</a> cur;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; cur.<a class="code" href="struct_detection_window.xhtml#a0815db32ce16586f5e90a633735df930">x</a> = multi_windows.at(i).x;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; cur.<a class="code" href="struct_detection_window.xhtml#a45b45124e843a937c3e256edbce64eea">y</a> = multi_windows.at(i).y;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; cur.<a class="code" href="struct_detection_window.xhtml#a67fe5ca4d6c3f95bf649ef48fe3d221b">width</a> = multi_windows.at(i).width;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; cur.<a class="code" href="struct_detection_window.xhtml#aa0fb54e3dbe6f7446157eb3f3c1f77f3">height</a> = multi_windows.at(i).height;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; cur.<a class="code" href="struct_detection_window.xhtml#ad4f986571659dd822695ca58dda00e49">idx_class</a> = multi_windows.at(i).idx_class;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; cur.<a class="code" href="struct_detection_window.xhtml#a8c5cd9b525ee73a24b1d9d8e34982d1c">score</a> = multi_windows.at(i).score;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="comment">// Store window</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; multi_windows.at(num_detections) = cur;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; ++num_detections;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> xc = cur.<a class="code" href="struct_detection_window.xhtml#a0815db32ce16586f5e90a633735df930">x</a> + cur.<a class="code" href="struct_detection_window.xhtml#a67fe5ca4d6c3f95bf649ef48fe3d221b">width</a> * 0.5f;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> yc = cur.<a class="code" href="struct_detection_window.xhtml#a45b45124e843a937c3e256edbce64eea">y</a> + cur.<a class="code" href="struct_detection_window.xhtml#aa0fb54e3dbe6f7446157eb3f3c1f77f3">height</a> * 0.5f;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> k = i + 1; k &lt; (num_candidates) &amp;&amp; (cur.<a class="code" href="struct_detection_window.xhtml#ad4f986571659dd822695ca58dda00e49">idx_class</a> == multi_windows.at(k).idx_class); ++k)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> xn = multi_windows.at(k).x + multi_windows.at(k).width * 0.5f;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> yn = multi_windows.at(k).y + multi_windows.at(k).height * 0.5f;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> dx = std::fabs(xn - xc);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> dy = std::fabs(yn - yc);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span>(dx &lt; min_distance &amp;&amp; dy &lt; min_distance)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> d = dx * dx + dy * dy;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span>(d &lt; min_distance_pow2)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="comment">// Invalidate detection window</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; multi_windows.at(k).score = 0.0f;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; multi_windows.resize(num_detections);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;}</div><div class="ttc" id="struct_detection_window_xhtml"><div class="ttname"><a href="struct_detection_window.xhtml">DetectionWindow</a></div><div class="ttdoc">Detection window struct.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00047">types.h:47</a></div></div>
<div class="ttc" id="struct_detection_window_xhtml_ad4f986571659dd822695ca58dda00e49"><div class="ttname"><a href="struct_detection_window.xhtml#ad4f986571659dd822695ca58dda00e49">DetectionWindow::idx_class</a></div><div class="ttdeci">ushort idx_class</div><div class="ttdoc">Index of the class.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00053">types.h:53</a></div></div>
<div class="ttc" id="struct_detection_window_xhtml_a45b45124e843a937c3e256edbce64eea"><div class="ttname"><a href="struct_detection_window.xhtml#a45b45124e843a937c3e256edbce64eea">DetectionWindow::y</a></div><div class="ttdeci">ushort y</div><div class="ttdoc">Top-left y coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00050">types.h:50</a></div></div>
<div class="ttc" id="struct_detection_window_xhtml_a8c5cd9b525ee73a24b1d9d8e34982d1c"><div class="ttname"><a href="struct_detection_window.xhtml#a8c5cd9b525ee73a24b1d9d8e34982d1c">DetectionWindow::score</a></div><div class="ttdeci">float score</div><div class="ttdoc">Confidence value for the detection window.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00054">types.h:54</a></div></div>
<div class="ttc" id="struct_detection_window_xhtml_aa0fb54e3dbe6f7446157eb3f3c1f77f3"><div class="ttname"><a href="struct_detection_window.xhtml#aa0fb54e3dbe6f7446157eb3f3c1f77f3">DetectionWindow::height</a></div><div class="ttdeci">ushort height</div><div class="ttdoc">Height of the detection window.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00052">types.h:52</a></div></div>
<div class="ttc" id="struct_detection_window_xhtml_a0815db32ce16586f5e90a633735df930"><div class="ttname"><a href="struct_detection_window.xhtml#a0815db32ce16586f5e90a633735df930">DetectionWindow::x</a></div><div class="ttdeci">ushort x</div><div class="ttdoc">Top-left x coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00049">types.h:49</a></div></div>
<div class="ttc" id="struct_detection_window_xhtml_a67fe5ca4d6c3f95bf649ef48fe3d221b"><div class="ttname"><a href="struct_detection_window.xhtml#a67fe5ca4d6c3f95bf649ef48fe3d221b">DetectionWindow::width</a></div><div class="ttdeci">ushort width</div><div class="ttdoc">Width of the detection window.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00051">types.h:51</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00549">DetectionWindow::height</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00550">DetectionWindow::idx_class</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00551">DetectionWindow::score</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00548">DetectionWindow::width</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00546">DetectionWindow::x</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00547">DetectionWindow::y</a>.</p>
<p class="reference">Referenced by <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml#l00138">hog_multi_detection()</a>.</p>
</div>
</div>
<a id="afc02bc2a9b06db328e63c6bfbbdb23a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc02bc2a9b06db328e63c6bfbbdb23a8">&#9670;&nbsp;</a></span>dft_1d() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; dft_1d </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564">FFTDirection</a>&#160;</td>
<td class="paramname"><em>direction</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs an one dimensional DFT on a complex input. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source tensor. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">direction</td><td>Direction of the DFT.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Complex output of same length as input. </dd></dl>
<p class="definition">Definition at line <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00308">308</a> of file <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml">DFT.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;{</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keyword">auto</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = dft_1d_core(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, direction);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span>(direction == FFTDirection::Inverse)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">const</span> T scaling_factor = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape()[0];</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, scaling_factor);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564a9f87f02f2da8f99c571b2a1c2a96132b">Inverse</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00095">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="a75345ce42cab379d55f2edf1b67ee4c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75345ce42cab379d55f2edf1b67ee4c2">&#9670;&nbsp;</a></span>dft_1d() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::dft_1d </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564">FFTDirection</a>&#160;</td>
<td class="paramname"><em>direction</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af7677c34292be2590038f7fe6e0a6de7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7677c34292be2590038f7fe6e0a6de7">&#9670;&nbsp;</a></span>dft_2d() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; dft_2d </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564">FFTDirection</a>&#160;</td>
<td class="paramname"><em>direction</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a two dimensional DFT on a complex input. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source tensor. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">direction</td><td>Direction of the DFT.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Complex output of same length as input. </dd></dl>
<p class="definition">Definition at line <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00348">348</a> of file <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml">DFT.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;{</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels() != 2);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span>(direction == FFTDirection::Forward)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keyword">auto</span> first_pass = dft_1d_core(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, direction);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keyword">auto</span> transposed = <a class="code" href="namespacearm__compute.xhtml#a21c3e11887f3acf9284ca763372c7da0">permute</a>(first_pass, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">auto</span> second_pass = dft_1d_core(transposed, direction);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#a21c3e11887f3acf9284ca763372c7da0">permute</a>(second_pass, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keyword">auto</span> transposed = <a class="code" href="namespacearm__compute.xhtml#a21c3e11887f3acf9284ca763372c7da0">permute</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keyword">auto</span> first_pass = dft_1d_core(transposed, direction);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keyword">auto</span> transposed_2 = <a class="code" href="namespacearm__compute.xhtml#a21c3e11887f3acf9284ca763372c7da0">permute</a>(first_pass, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keyword">auto</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = dft_1d_core(transposed_2, direction);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">const</span> T scaling_factor = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape()[0] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape()[1];</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, scaling_factor);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;}</div><div class="ttc" id="namespacearm__compute_xhtml_a33e65be485104e2e9e69fca551d6f492"><div class="ttname"><a href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">arm_compute::PermutationVector</a></div><div class="ttdeci">Strides PermutationVector</div><div class="ttdoc">Permutation vector.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00047">Types.h:47</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a21c3e11887f3acf9284ca763372c7da0"><div class="ttname"><a href="namespacearm__compute.xhtml#a21c3e11887f3acf9284ca763372c7da0">arm_compute::permute</a></div><div class="ttdeci">void permute(Dimensions&lt; T &gt; &amp;dimensions, const PermutationVector &amp;perm)</div><div class="ttdoc">Permutes given Dimensions according to a permutation vector.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00570">Helpers.h:570</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_1_1cast_xhtml_a2ea3d1fc01a3a442900249ca182ffa5e"><div class="ttname"><a href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">arm_compute::utils::cast::U</a></div><div class="ttdeci">U</div><div class="ttdef"><b>Definition:</b> <a href="_saturate_cast_8h_source.xhtml#l00057">SaturateCast.h:57</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564a67d2f6740a8eaebf4d5c6f79be8da481">Forward</a>, <a class="el" href="reference_2_permute_8cpp_source.xhtml#l00038">permute()</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00131">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="af4053ac59fe39737f4c28329b56277d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4053ac59fe39737f4c28329b56277d1">&#9670;&nbsp;</a></span>dft_2d() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::dft_2d </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564">FFTDirection</a>&#160;</td>
<td class="paramname"><em>direction</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2e49a7bdf96ed64920234da737e1bf86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e49a7bdf96ed64920234da737e1bf86">&#9670;&nbsp;</a></span>dilate() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; dilate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_dilate_8cpp_source.xhtml#l00041">41</a> of file <a class="el" href="reference_2_dilate_8cpp_source.xhtml">Dilate.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> -1 x +1</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> -1 [tl][tc][tr] -1</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> y [ml][xy][mr] y</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> +1 [bl][bc][br] +1</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> -1 x +1</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> dilate:</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> dst(x, y) = max[ src(x&#39;, y&#39;) for x-1&lt;=x&#39;&lt;=x+1, y-1&lt;=y&#39;&lt;=y+1 ] = max({tl, tc, tr, ml, xy, mr, bl, bc, br})</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; Coordinates coord = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), i);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> x = coord.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">x</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> y = coord.y();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; std::array&lt;T, 9&gt; neighbours = { { 0 } };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> row = y - 1, j = 0; row &lt;= y + 1; ++row)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> col = x - 1; col &lt;= x + 1; ++col, ++j)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; coord.set(0, col);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; coord.set(1, row);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; neighbours[j] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = *std::max_element(neighbours.cbegin(), neighbours.cend());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_aa87f8fc26981b0f3228a78c83b95b802"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">arm_compute::Dimensions::x</a></div><div class="ttdeci">T x() const</div><div class="ttdoc">Alias to access the size of the first dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00081">Dimensions.h:81</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00074">Dimensions&lt; T &gt;::set()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00086">Dimensions&lt; T &gt;::y()</a>.</p>
</div>
</div>
<a id="a9b18443e2ca2d82d1e314cc568ab997f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b18443e2ca2d82d1e314cc568ab997f">&#9670;&nbsp;</a></span>dilate() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::dilate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a12e69cba1811ddfd5e8f113a2019ff49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12e69cba1811ddfd5e8f113a2019ff49">&#9670;&nbsp;</a></span>elementwise_unary() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; elementwise_unary </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936d">ElementWiseUnary</a>&#160;</td>
<td class="paramname"><em>op</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_element_wise_unary_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_element_wise_unary_8cpp_source.xhtml">ElementWiseUnary.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">switch</span>(op)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">case</span> ElementWiseUnary::RSQRT:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = 1.f / std::sqrt(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">case</span> ElementWiseUnary::EXP:</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = std::exp(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">case</span> ElementWiseUnary::NEG:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = -<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> ElementWiseUnary::LOG:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = std::log(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">case</span> ElementWiseUnary::ABS:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = std::abs(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">case</span> ElementWiseUnary::SIN:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = std::sin(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> ElementWiseUnary::ROUND:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = <a class="code" href="namespacearm__compute_1_1support_1_1cpp11.xhtml#ac26a2b6f5d8e0c60e67684eea7e71e7c">std::nearbyint</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Not implemented&quot;</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1support_1_1cpp11_xhtml_ac26a2b6f5d8e0c60e67684eea7e71e7c"><div class="ttname"><a href="namespacearm__compute_1_1support_1_1cpp11.xhtml#ac26a2b6f5d8e0c60e67684eea7e71e7c">arm_compute::support::cpp11::nearbyint</a></div><div class="ttdeci">T nearbyint(T value)</div><div class="ttdoc">Rounds the floating-point argument arg to an integer value in floating-point format,...</div><div class="ttdef"><b>Definition:</b> <a href="_toolchain_support_8h_source.xhtml#l00257">ToolchainSupport.h:257</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936da7d8a220d2262f9d6c658d549ee12cf2c">arm_compute::ABS</a>, <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936da8c670f8c37b95e1ed14a0ce414b049c7">arm_compute::EXP</a>, <a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936da4b5ffcdaf38ce4d463171f5c977c5ab3">arm_compute::LOG</a>, <a class="el" href="_toolchain_support_8h_source.xhtml#l00257">arm_compute::support::cpp11::nearbyint()</a>, <a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936da5dd68b1a7db42a1cce4dce09dbaa179e">arm_compute::NEG</a>, <a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936da2ea77cf582892014b30e6fa7e558350d">arm_compute::ROUND</a>, <a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936da66bac724670f51e77f3688d33ca0d781">arm_compute::RSQRT</a>, <a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936da5b001d63db54e7383587771eeb2018a1">arm_compute::SIN</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a66fd17630511434727406aa3b82d5dcc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66fd17630511434727406aa3b82d5dcc">&#9670;&nbsp;</a></span>elementwise_unary() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::elementwise_unary </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936d">ElementWiseUnary</a>&#160;</td>
<td class="paramname"><em>op</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6d3887ce8f104f8438566716431f1f11"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d3887ce8f104f8438566716431f1f11">&#9670;&nbsp;</a></span>elementwise_unary() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::elementwise_unary </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936d">ElementWiseUnary</a>&#160;</td>
<td class="paramname"><em>op</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aadf4c6ca7ce54079a41ecfe2132f0059"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aadf4c6ca7ce54079a41ecfe2132f0059">&#9670;&nbsp;</a></span>elementwise_unary() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int32_t&gt; arm_compute::test::validation::reference::elementwise_unary </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5dad01b7eab116403241313417e0936d">ElementWiseUnary</a>&#160;</td>
<td class="paramname"><em>op</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a55f81ef18f2e332b0a334693ebd28e37"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a55f81ef18f2e332b0a334693ebd28e37">&#9670;&nbsp;</a></span>equalize_histogram() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; equalize_histogram </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_equalize_histogram_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="validation_2reference_2_equalize_histogram_8cpp_source.xhtml">EqualizeHistogram.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_bins = 256; <span class="comment">// 0-255 inclusive</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::vector&lt;T&gt; lut(num_bins);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::vector&lt;uint32_t&gt; hist(num_bins);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; std::vector&lt;uint32_t&gt; cd(num_bins); <span class="comment">// cumulative distribution</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// Create the histogram</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> element_idx = 0; element_idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++element_idx)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; hist[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[element_idx]]++;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// Calculate cumulative distribution</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; std::partial_sum(hist.begin(), hist.end(), cd.begin());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Get the number of pixels that have the lowest non-zero value</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> uint32_t cd_min = *std::find_if(hist.begin(), hist.end(), [](<span class="keyword">const</span> uint32_t &amp;x)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> x &gt; 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; });</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> total_num_pixels = cd.back();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// Single color - create linear distribution</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span>(total_num_pixels == cd_min)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::iota(lut.begin(), lut.end(), 0);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> diff = total_num_pixels - cd_min;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; num_bins; ++i)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; lut[i] = lround((cd[i] - cd_min) / diff * 255.f);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// Fill output tensor with equalized values</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = lut[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]];</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a0a74d12efe92f903e988498e186f14f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a74d12efe92f903e988498e186f14f3">&#9670;&nbsp;</a></span>equalize_histogram() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::equalize_histogram </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="validation_2_c_l_2_equalize_histogram_8cpp_source.xhtml#l00042">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="a3e299391211e64c686293e7ef60d3b6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e299391211e64c686293e7ef60d3b6c">&#9670;&nbsp;</a></span>erode() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; erode </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_erode_8cpp_source.xhtml#l00041">41</a> of file <a class="el" href="reference_2_erode_8cpp_source.xhtml">Erode.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> -1 x +1</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> -1 [tl][tc][tr] -1</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> y [ml][xy][mr] y</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> +1 [bl][bc][br] +1</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> -1 x +1</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> erode:</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> dst(x, y) = min[ src(x&#39;, y&#39;) for x-1&lt;=x&#39;&lt;=x+1, y-1&lt;=y&#39;&lt;=y+1 ] = min({tl, tc, tr, ml, xy, mr, bl, bc, br})</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; Coordinates coord = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), i);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> x = coord.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">x</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> y = coord.y();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; std::array&lt;T, 9&gt; neighbours = { { 0 } };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> row = y - 1, j = 0; row &lt;= y + 1; ++row)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> col = x - 1; col &lt;= x + 1; ++col, ++j)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; coord.set(0, col);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; coord.set(1, row);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; neighbours[j] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = *std::min_element(neighbours.cbegin(), neighbours.cend());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_aa87f8fc26981b0f3228a78c83b95b802"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">arm_compute::Dimensions::x</a></div><div class="ttdeci">T x() const</div><div class="ttdoc">Alias to access the size of the first dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00081">Dimensions.h:81</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00074">Dimensions&lt; T &gt;::set()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00086">Dimensions&lt; T &gt;::y()</a>.</p>
</div>
</div>
<a id="a8afa820728a53d688001bbc32fe1af29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8afa820728a53d688001bbc32fe1af29">&#9670;&nbsp;</a></span>erode() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::erode </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8fdbdfcbf8a538569a6b7cd468eca939"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8fdbdfcbf8a538569a6b7cd468eca939">&#9670;&nbsp;</a></span>fast_corners() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt; fast_corners </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>input_thresh</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>suppress_nonmax</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_fast_corners_8cpp_source.xhtml#l00152">152</a> of file <a class="el" href="validation_2reference_2_fast_corners_8cpp_source.xhtml">FastCorners.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// Get intensity of pixel at given index on the Bresenham circle around a candidate point</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> intensity_at = [&amp;](<span class="keyword">const</span> Coordinates &amp; point, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a> = circle_offsets[idx];</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; Coordinates px{ point.x() + <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>[0], point.y() + <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>[1] };</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, px, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; };</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a> = static_cast&lt;uint8_t&gt;(input_thresh);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; std::vector&lt;KeyPoint&gt; corners;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">// 1. Detect potential corners (the segment test)</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; std::vector&lt;Coordinates&gt; corner_candidates;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; SimpleTensor&lt;uint8_t&gt; scores(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), DataType::U8);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; ValidRegion <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">shape_to_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), BorderMode::UNDEFINED == <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, BorderSize(bresenham_radius));</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; Coordinates candidate = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), i);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; scores[i] = 0;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">is_in_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a>, candidate))</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span>(is_a_corner(candidate, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, intensity_at))</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; corner_candidates.emplace_back(candidate);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; scores[i] = 1;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// 2. Calculate corner scores if necessary</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">if</span>(suppress_nonmax)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> &amp;candidate : corner_candidates)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> index = <a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(scores.shape(), candidate);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; uint8_t thresh_max = UINT8_MAX;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; uint8_t thresh_min = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; uint8_t response = (thresh_min + thresh_max) / 2;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// Corner score (response) is the largest threshold for which the pixel remains a corner</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">while</span>(thresh_max - thresh_min &gt; 1)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; response = (thresh_min + thresh_max) / 2;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">if</span>(is_a_corner(candidate, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, response, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, intensity_at))</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; thresh_min = response; <span class="comment">// raise threshold</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; thresh_max = response; <span class="comment">// lower threshold</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; scores[index] = thresh_min;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; scores = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a60e89e48713565425943913adec65294">non_maxima_suppression</a>(scores, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">shape_to_valid_region</a>(scores.shape(), BorderMode::UNDEFINED == <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, BorderSize(bresenham_radius + 1));</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> &amp;candidate : corner_candidates)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> index = <a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(scores.shape(), candidate);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span>(scores[index] &gt; 0.f &amp;&amp; <a class="code" href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">is_in_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a>, candidate))</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; KeyPoint corner;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; corner.x = candidate.x();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; corner.y = candidate.y();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; corner.strength = scores[index];</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; corner.tracking_status = 1;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; corner.scale = 0.f;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; corner.orientation = 0.f;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; corner.error = 0.f;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; corners.emplace_back(corner);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> corners;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;}</div><div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">helpers.h:328</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a9be4cb7e6ee20063a4a10bc3abb750b9"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">arm_compute::test::coord2index</a></div><div class="ttdeci">int coord2index(const TensorShape &amp;shape, const Coordinates &amp;coord)</div><div class="ttdoc">Linearise the given coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00480">Utils.h:480</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a856b55fc20ddcbdbeb84c35ae27bedac"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">arm_compute::test::is_in_valid_region</a></div><div class="ttdeci">bool is_in_valid_region(const ValidRegion &amp;valid_region, Coordinates coord)</div><div class="ttdoc">Check if a coordinate is within a valid region.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00498">Utils.h:498</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7819bcbbf45c2e7c1396a137dce54422"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">arm_compute::test::validation::valid_region</a></div><div class="ttdeci">const ValidRegion valid_region</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00109">AbsoluteDifference.cpp:109</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a60e89e48713565425943913adec65294"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a60e89e48713565425943913adec65294">arm_compute::test::validation::reference::non_maxima_suppression</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; non_maxima_suppression(const SimpleTensor&lt; T &gt; &amp;src, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="_non_maxima_suppression_8cpp_source.xhtml#l00038">NonMaximaSuppression.cpp:38</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a6cae310822a46019ba25a00ddb0f7e62"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">arm_compute::test::validation::reference::threshold</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; threshold(const SimpleTensor&lt; T &gt; &amp;src, T threshold, T false_value, T true_value, ThresholdType type, T upper)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_threshold_8cpp_source.xhtml#l00035">Threshold.cpp:35</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a8103df0e6c416f55f40106aa49072b42"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">arm_compute::test::shape_to_valid_region</a></div><div class="ttdeci">ValidRegion shape_to_valid_region(const TensorShape &amp;a_shape, bool border_undefined=false, BorderSize border_size=BorderSize(0))</div><div class="ttdoc">Create a valid region based on tensor shape, border mode and border size.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00221">Utils.h:221</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00480">arm_compute::test::coord2index()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00411">KeyPoint::error</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00498">arm_compute::test::is_in_valid_region()</a>, <a class="el" href="_non_maxima_suppression_8cpp_source.xhtml#l00038">non_maxima_suppression()</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">offset()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00409">KeyPoint::orientation</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00408">KeyPoint::scale</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00221">arm_compute::test::shape_to_valid_region()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00407">KeyPoint::strength</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, <a class="el" href="reference_2_threshold_8cpp_source.xhtml#l00035">threshold()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00410">KeyPoint::tracking_status</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">arm_compute::U8</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::UNDEFINED</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00109">arm_compute::test::validation::valid_region</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00405">KeyPoint::x</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00086">Dimensions&lt; T &gt;::y()</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00406">KeyPoint::y</a>.</p>
</div>
</div>
<a id="af72060f4e8f90c4688e01555a35b6ba9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af72060f4e8f90c4688e01555a35b6ba9">&#9670;&nbsp;</a></span>fast_corners() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::vector&lt;<a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a>&gt; arm_compute::test::validation::reference::fast_corners </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>threshold</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>suppress_nonmax</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa4004cfdf19063051ee8a13c923d0cef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4004cfdf19063051ee8a13c923d0cef">&#9670;&nbsp;</a></span>flatten_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; flatten_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape_flatten</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_flatten_layer_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="validation_2reference_2_flatten_layer_8cpp_source.xhtml">FlattenLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(shape_flatten, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// Note: Since the reference implementation does not use padding bytes, we can copy directly the content of the source tensor</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">std::copy</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data() + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_ad9000ce99b9ffcec5722cade36d7e757"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">arm_compute::test::validation::reference::copy</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; copy(const SimpleTensor&lt; T &gt; &amp;src, const TensorShape &amp;output_shape)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_copy_8cpp_source.xhtml#l00037">Copy.cpp:37</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="reference_2_copy_8cpp_source.xhtml#l00037">copy()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="adae5cd655f70e8d16aa37e2131228a39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adae5cd655f70e8d16aa37e2131228a39">&#9670;&nbsp;</a></span>flatten_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::flatten_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape_flatten</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abb52b11c9ad45bb81b2c23f87ca39d7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb52b11c9ad45bb81b2c23f87ca39d7f">&#9670;&nbsp;</a></span>flatten_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::flatten_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>shape_flatten</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6c81be98812b8cb462be45d9e3d21464"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c81be98812b8cb462be45d9e3d21464">&#9670;&nbsp;</a></span>floor_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; floor_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_floor_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="validation_2reference_2_floor_8cpp_source.xhtml">Floor.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type() };</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = std::floor(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a4c4d49f01ccc1f08a454e2f7d7d02984"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c4d49f01ccc1f08a454e2f7d7d02984">&#9670;&nbsp;</a></span>floor_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::floor_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0aa1e471728da9ae3dd19f50fa4ef1b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0aa1e471728da9ae3dd19f50fa4ef1b0">&#9670;&nbsp;</a></span>floor_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::floor_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a19058c3fcd05340e689ac471e83125fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19058c3fcd05340e689ac471e83125fb">&#9670;&nbsp;</a></span>fully_connected_layer() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; fully_connected_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TB &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a>&#160;</td>
<td class="paramname"><em>out_quant_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="tests_2validation_2reference_2_fully_connected_layer_8cpp_source.xhtml#l00112">112</a> of file <a class="el" href="tests_2validation_2reference_2_fully_connected_layer_8cpp_source.xhtml">FullyConnectedLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// if no explicit quantization has been set you the same as src</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span>(out_quant_info == QuantizationInfo())</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; out_quant_info = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ TensorShape{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a> }, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1, out_quant_info };</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// Sanity checks</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batch_dimensions = std::max(0, static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#a80a5f2d6e3a697c9aad893a3b4242615">num_dimensions</a>()) - 1);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_input_dimensions = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().num_dimensions() - num_batch_dimensions;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> linear_input_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size_lower(num_input_dimensions);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a>(num_batch_dimensions);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a>(num_input_dimensions);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a>(linear_input_size);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().x() != linear_input_size);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().y() != <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>.shape().x());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().y() != <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().x());</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> cols_weights = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().x();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> rows_weights = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().y();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batches = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>.<a class="code" href="classarm__compute_1_1_tensor_shape.xhtml#a99e09337e5b6ef762cd1f2d0bd10c346">total_size_upper</a>(1);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k &lt; num_batches; ++k)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_in = k * cols_weights;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_out = k * rows_weights;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; vector_matrix_multiply&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>,</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>,</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>,</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; offset_in,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; offset_out,</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; cols_weights,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; rows_weights);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="classarm__compute_1_1_tensor_shape_xhtml_a99e09337e5b6ef762cd1f2d0bd10c346"><div class="ttname"><a href="classarm__compute_1_1_tensor_shape.xhtml#a99e09337e5b6ef762cd1f2d0bd10c346">arm_compute::TensorShape::total_size_upper</a></div><div class="ttdeci">size_t total_size_upper(size_t dimension) const</div><div class="ttdoc">Collapses given dimension and above.</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_shape_8h_source.xhtml#l00181">TensorShape.h:181</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a6dc630a6ae9cc063b3924bcea8dee9d6"><div class="ttname"><a href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(...)</div><div class="ttdoc">To avoid unused variables warnings.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00160">Error.h:160</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a3a77be8aebd8e00522b32061d46ccdbd"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">arm_compute::test::validation::bias</a></div><div class="ttdeci">CLTensor bias</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">ConvolutionLayer.cpp:181</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_a80a5f2d6e3a697c9aad893a3b4242615"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#a80a5f2d6e3a697c9aad893a3b4242615">arm_compute::Dimensions::num_dimensions</a></div><div class="ttdeci">unsigned int num_dimensions() const</div><div class="ttdoc">Returns the effective dimensionality of the tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00122">Dimensions.h:122</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a64a08a9fec5aeee8650e7182b6d171d0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">arm_compute::test::validation::weights</a></div><div class="ttdeci">CLTensor weights</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">ConvolutionLayer.cpp:180</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_error_8h_source.xhtml#l00160">ARM_COMPUTE_UNUSED</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">arm_compute::test::validation::bias</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00122">Dimensions&lt; T &gt;::num_dimensions()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00181">TensorShape::total_size_upper()</a>, and <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">arm_compute::test::validation::weights</a>.</p>
</div>
</div>
<a id="a578d21684a8be774e23e63cce4a62b40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a578d21684a8be774e23e63cce4a62b40">&#9670;&nbsp;</a></span>fully_connected_layer() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::fully_connected_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a>&#160;</td>
<td class="paramname"><em>out_quant_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5035119f8f96bd22ea52c41abede5b10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5035119f8f96bd22ea52c41abede5b10">&#9670;&nbsp;</a></span>fully_connected_layer() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::fully_connected_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a>&#160;</td>
<td class="paramname"><em>out_quant_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0dd19ebc258d83f2ceb4dd82ec22f4b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0dd19ebc258d83f2ceb4dd82ec22f4b4">&#9670;&nbsp;</a></span>fully_connected_layer() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::fully_connected_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a>&#160;</td>
<td class="paramname"><em>out_quant_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3e29dddee636737f78c86b4fae2739eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e29dddee636737f78c86b4fae2739eb">&#9670;&nbsp;</a></span>fuse_batch_normalization_conv_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fuse_batch_normalization_conv_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>w</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>w_fused</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>b_fused</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>gamma</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_fuse_batch_normalization_8cpp_source.xhtml#l00067">67</a> of file <a class="el" href="reference_2_fuse_batch_normalization_8cpp_source.xhtml">FuseBatchNormalization.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> *w_data = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.data();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> *b_data = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>.data();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">auto</span> *w_fused_data = w_fused.data();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">auto</span> *b_fused_data = b_fused.data();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape()[0];</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape()[1];</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim2 = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape()[2];</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim3 = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape()[3];</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> &lt; dim3; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> mean_val = mean.data()[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>];</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> var_val = var.data()[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>];</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> beta_val = beta.data()[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>];</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> gamma_val = gamma.data()[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>];</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; width * height * dim2; ++i)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = i + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> * width * height * dim2;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; w_fused_data[index] = (gamma_val * (w_data[index])) / sqrt(var_val + <a class="code" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; b_fused_data[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>] = (b_data[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>] - mean_val) / sqrt(var_val + <a class="code" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>) * gamma_val + beta_val;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1a367830ae09bf6138df822888ec1d71"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">arm_compute::test::validation::w</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; w</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">DFT.cpp:156</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="_asymm_helpers_8cpp_xhtml_a552dc3787d7ea1675f3e4e8993501d58"><div class="ttname"><a href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a></div><div class="ttdeci">constexpr float epsilon</div><div class="ttdef"><b>Definition:</b> <a href="_asymm_helpers_8cpp_source.xhtml#l00033">AsymmHelpers.cpp:33</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_asymm_helpers_8cpp_source.xhtml#l00033">epsilon</a>, and <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">arm_compute::test::validation::w</a>.</p>
</div>
</div>
<a id="aa51c8b8a5b6bf9ba82a81ca205f06725"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa51c8b8a5b6bf9ba82a81ca205f06725">&#9670;&nbsp;</a></span>fuse_batch_normalization_conv_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void arm_compute::test::validation::reference::fuse_batch_normalization_conv_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>w</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>w_fused</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>b_fused</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>gamma</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afabcd35cc620facb8b136711b97085df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afabcd35cc620facb8b136711b97085df">&#9670;&nbsp;</a></span>fuse_batch_normalization_conv_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void arm_compute::test::validation::reference::fuse_batch_normalization_conv_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>w</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>w_fused</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>b_fused</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>gamma</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac782f6a44d255d7e8b228e66847fb1f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac782f6a44d255d7e8b228e66847fb1f1">&#9670;&nbsp;</a></span>fuse_batch_normalization_dwc_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fuse_batch_normalization_dwc_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>w</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>w_fused</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>b_fused</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>gamma</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_fuse_batch_normalization_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="reference_2_fuse_batch_normalization_8cpp_source.xhtml">FuseBatchNormalization.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> *w_data = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.data();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> *b_data = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>.data();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">auto</span> *w_fused_data = w_fused.data();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">auto</span> *b_fused_data = b_fused.data();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape()[0];</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape()[1];</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim2 = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.shape()[2];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> &lt; dim2; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> mean_val = mean.data()[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> var_val = var.data()[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> beta_val = beta.data()[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> gamma_val = gamma.data()[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; width * height; ++i)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = i + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> * width * height;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; w_fused_data[index] = (gamma_val * (w_data[index])) / sqrt(var_val + <a class="code" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; b_fused_data[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>] = (b_data[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>] - mean_val) / sqrt(var_val + <a class="code" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>) * gamma_val + beta_val;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1a367830ae09bf6138df822888ec1d71"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">arm_compute::test::validation::w</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; w</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">DFT.cpp:156</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="_asymm_helpers_8cpp_xhtml_a552dc3787d7ea1675f3e4e8993501d58"><div class="ttname"><a href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a></div><div class="ttdeci">constexpr float epsilon</div><div class="ttdef"><b>Definition:</b> <a href="_asymm_helpers_8cpp_source.xhtml#l00033">AsymmHelpers.cpp:33</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_asymm_helpers_8cpp_source.xhtml#l00033">epsilon</a>, and <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">arm_compute::test::validation::w</a>.</p>
</div>
</div>
<a id="a8cfe79a04d875885597e4d37df4d634f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8cfe79a04d875885597e4d37df4d634f">&#9670;&nbsp;</a></span>fuse_batch_normalization_dwc_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void arm_compute::test::validation::reference::fuse_batch_normalization_dwc_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>w</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>w_fused</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>b_fused</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>gamma</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aeca7e17be27219cf39a476d9e63f45f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeca7e17be27219cf39a476d9e63f45f1">&#9670;&nbsp;</a></span>fuse_batch_normalization_dwc_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void arm_compute::test::validation::reference::fuse_batch_normalization_dwc_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>w</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>w_fused</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>b_fused</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>gamma</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8f80b30bc2860eaccce94e4bf5f088b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f80b30bc2860eaccce94e4bf5f088b3">&#9670;&nbsp;</a></span>gather() <span class="overload">[1/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; gather </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>indices</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>actual_axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_gather_8cpp_source.xhtml#l00040">40</a> of file <a class="el" href="reference_2_gather_8cpp_source.xhtml">Gather.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> *indices_ptr = static_cast&lt;const uint32_t *&gt;(indices.data());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> TensorShape <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a> = <a class="code" href="namespacearm__compute_1_1misc_1_1shape__calculator.xhtml#ae6578c8df1088c90dfa0d1be6bca605d">arm_compute::misc::shape_calculator::compute_gather_shape</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), indices.shape(), actual_axis);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; Window win;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; win.use_tensor_dimensions(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a5002bf7ec46d52971f9526e94172cfee">execute_window_loop</a>(win, [&amp;](<span class="keyword">const</span> Coordinates &amp; <span class="keywordtype">id</span>)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; Coordinates <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim = 0; dim &lt; <span class="keywordtype">id</span>.num_dimensions(); ++dim)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span>(dim == actual_axis)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>.set(dim, indices_ptr[<span class="keywordtype">id</span>[dim]]);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>.set(dim, <span class="keywordtype">id</span>[dim]);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; *reinterpret_cast&lt;T *&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<span class="keywordtype">id</span>)) = *reinterpret_cast&lt;const T *&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>(<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; });</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div><div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">helpers.h:328</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a5002bf7ec46d52971f9526e94172cfee"><div class="ttname"><a href="namespacearm__compute.xhtml#a5002bf7ec46d52971f9526e94172cfee">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &amp;w, L &amp;&amp;lambda_function, Ts &amp;&amp;... iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00122">Helpers.inl:122</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1misc_1_1shape__calculator_xhtml_ae6578c8df1088c90dfa0d1be6bca605d"><div class="ttname"><a href="namespacearm__compute_1_1misc_1_1shape__calculator.xhtml#ae6578c8df1088c90dfa0d1be6bca605d">arm_compute::misc::shape_calculator::compute_gather_shape</a></div><div class="ttdeci">TensorShape compute_gather_shape(const TensorShape &amp;input_shape, const TensorShape &amp;indices_shape, uint32_t actual_axis)</div><div class="ttdef"><b>Definition:</b> <a href="_shape_calculator_8h_source.xhtml#l01332">ShapeCalculator.h:1332</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_shape_calculator_8h_source.xhtml#l01332">arm_compute::misc::shape_calculator::compute_gather_shape()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00122">arm_compute::execute_window_loop()</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">offset()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="_window_8inl_source.xhtml#l00250">Window::use_tensor_dimensions()</a>.</p>
</div>
</div>
<a id="ad5eef4dcc5f9cdbcdea67edd255ba51b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad5eef4dcc5f9cdbcdea67edd255ba51b">&#9670;&nbsp;</a></span>gather() <span class="overload">[2/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::gather </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>indices</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>actual_axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a47fe378d33f576c6aca07cfdcddbfc75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a47fe378d33f576c6aca07cfdcddbfc75">&#9670;&nbsp;</a></span>gather() <span class="overload">[3/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::gather </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>indices</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>actual_axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa2a75a353eaba22c2b78981f2b6864f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2a75a353eaba22c2b78981f2b6864f5">&#9670;&nbsp;</a></span>gather() <span class="overload">[4/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint16_t&gt; arm_compute::test::validation::reference::gather </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>indices</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>actual_axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad68b47495b45117a1b6a4357465beea9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad68b47495b45117a1b6a4357465beea9">&#9670;&nbsp;</a></span>gather() <span class="overload">[5/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::gather </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>indices</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>actual_axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a08625a89b22993b65e923139bdf3b9e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08625a89b22993b65e923139bdf3b9e1">&#9670;&nbsp;</a></span>gaussian3x3() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; gaussian3x3 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_gaussian3x3_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_gaussian3x3_8cpp_source.xhtml">Gaussian3x3.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> std::array&lt;T, 9&gt; filter{ { 1, 2, 1, 2, 4, 2, 1, 2, 1 } };</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a> = 1.f / 16.f;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> element_idx = 0; element_idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++element_idx)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> Coordinates <span class="keywordtype">id</span> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), element_idx);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(<span class="keywordtype">id</span>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, TensorShape(3<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 3<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>), filter.data(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d1175c32ed7ea771e8ea46c936ea5c7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">arm_compute::test::validation::apply_2d_spatial_filter</a></div><div class="ttdeci">void apply_2d_spatial_filter(Coordinates coord, const SimpleTensor&lt; T &gt; &amp;src, SimpleTensor&lt; U &gt; &amp;dst, const TensorShape &amp;filter_shape, const V *filter_itr, double scale, BorderMode border_mode, T constant_border_value=T(0))</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00098">Utils.h:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_1_1cast_xhtml_a2ea3d1fc01a3a442900249ca182ffa5e"><div class="ttname"><a href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">arm_compute::utils::cast::U</a></div><div class="ttdeci">U</div><div class="ttdef"><b>Definition:</b> <a href="_saturate_cast_8h_source.xhtml#l00057">SaturateCast.h:57</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00098">arm_compute::test::validation::apply_2d_spatial_filter()</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a0bf5cc0e54ac74aee07c3034844a27f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0bf5cc0e54ac74aee07c3034844a27f8">&#9670;&nbsp;</a></span>gaussian3x3() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::gaussian3x3 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae74885d96f07f242e6974979cce5673b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae74885d96f07f242e6974979cce5673b">&#9670;&nbsp;</a></span>gaussian5x5() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; gaussian5x5 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_gaussian5x5_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_gaussian5x5_8cpp_source.xhtml">Gaussian5x5.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> std::array&lt;T, 25&gt; filter{ {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; 1, 4, 6, 4, 1,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; 4, 16, 24, 16, 4,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; 6, 24, 36, 24, 6,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; 4, 16, 24, 16, 4,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; 1, 4, 6, 4, 1</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; } };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a> = 1.f / 256.f;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> element_idx = 0; element_idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++element_idx)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> Coordinates <span class="keywordtype">id</span> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), element_idx);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(<span class="keywordtype">id</span>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, TensorShape(5<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 5<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>), filter.data(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d1175c32ed7ea771e8ea46c936ea5c7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">arm_compute::test::validation::apply_2d_spatial_filter</a></div><div class="ttdeci">void apply_2d_spatial_filter(Coordinates coord, const SimpleTensor&lt; T &gt; &amp;src, SimpleTensor&lt; U &gt; &amp;dst, const TensorShape &amp;filter_shape, const V *filter_itr, double scale, BorderMode border_mode, T constant_border_value=T(0))</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00098">Utils.h:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_1_1cast_xhtml_a2ea3d1fc01a3a442900249ca182ffa5e"><div class="ttname"><a href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">arm_compute::utils::cast::U</a></div><div class="ttdeci">U</div><div class="ttdef"><b>Definition:</b> <a href="_saturate_cast_8h_source.xhtml#l00057">SaturateCast.h:57</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00098">arm_compute::test::validation::apply_2d_spatial_filter()</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="_gaussian_pyramid_half_8cpp_source.xhtml#l00041">gaussian_pyramid_half()</a>, and <a class="el" href="validation_2reference_2_laplacian_pyramid_8cpp_source.xhtml#l00040">laplacian_pyramid()</a>.</p>
</div>
</div>
<a id="a45e01cc48f39327d25187bfc0ab27287"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a45e01cc48f39327d25187bfc0ab27287">&#9670;&nbsp;</a></span>gaussian5x5() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::gaussian5x5 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a42c972f3c96f7c91c57a7aaf2068fddf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42c972f3c96f7c91c57a7aaf2068fddf">&#9670;&nbsp;</a></span>gaussian_pyramid_half() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt; gaussian_pyramid_half </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>num_levels</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gaussian_pyramid_half_8cpp_source.xhtml#l00041">41</a> of file <a class="el" href="_gaussian_pyramid_half_8cpp_source.xhtml">GaussianPyramidHalf.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; std::vector&lt;SimpleTensor&lt;T&gt;&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// Level0 is equal to src</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.push_back(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 1; i &lt; num_levels; ++i)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// Gaussian Filter</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> SimpleTensor&lt;T&gt; out_gaus5x5 = <a class="code" href="cl__convolution_8cpp.xhtml#a1ff25aea7e858eb83e7af7cefb60bb82">reference::gaussian5x5</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i - 1], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// Scale down by 2 with nearest interpolation</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> SimpleTensor&lt;T&gt; out = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">reference::scale</a>(out_gaus5x5, <a class="code" href="namespacearm__compute.xhtml#af9876aedd664cac0ddeacddb40cb71cd">SCALE_PYRAMID_HALF</a>, <a class="code" href="namespacearm__compute.xhtml#af9876aedd664cac0ddeacddb40cb71cd">SCALE_PYRAMID_HALF</a>, InterpolationPolicy::NEAREST_NEIGHBOR, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, SamplingPolicy::CENTER,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">true</span>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.push_back(out);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div><div class="ttc" id="namespacearm__compute_xhtml_af9876aedd664cac0ddeacddb40cb71cd"><div class="ttname"><a href="namespacearm__compute.xhtml#af9876aedd664cac0ddeacddb40cb71cd">arm_compute::SCALE_PYRAMID_HALF</a></div><div class="ttdeci">constexpr float SCALE_PYRAMID_HALF</div><div class="ttdoc">Constant value used to indicate a half-scale pyramid.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00106">Types.h:106</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="cl__convolution_8cpp_xhtml_a1ff25aea7e858eb83e7af7cefb60bb82"><div class="ttname"><a href="cl__convolution_8cpp.xhtml#a1ff25aea7e858eb83e7af7cefb60bb82">gaussian5x5</a></div><div class="ttdeci">const std::array&lt; int16_t, 25 &gt; gaussian5x5</div><div class="ttdoc">Gaussian 5x5 matrix.</div><div class="ttdef"><b>Definition:</b> <a href="cl__convolution_8cpp_source.xhtml#l00048">cl_convolution.cpp:48</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7bac397289ee45877be0cd49811fe245b4e">arm_compute::CENTER</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="reference_2_gaussian5x5_8cpp_source.xhtml#l00038">gaussian5x5()</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">arm_compute::NEAREST_NEIGHBOR</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00106">arm_compute::SCALE_PYRAMID_HALF</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="validation_2_c_l_2_gaussian_pyramid_8cpp_source.xhtml#l00073">arm_compute::test::validation::DATA_TEST_CASE()</a>, <a class="el" href="validation_2reference_2_laplacian_pyramid_8cpp_source.xhtml#l00040">laplacian_pyramid()</a>, and <a class="el" href="validation_2reference_2_optical_flow_8cpp_source.xhtml#l00246">optical_flow()</a>.</p>
</div>
</div>
<a id="a31bb861d20e67b3ac6f1b11bd2fa69e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a31bb861d20e67b3ac6f1b11bd2fa69e3">&#9670;&nbsp;</a></span>gaussian_pyramid_half() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::vector&lt;<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; &gt; arm_compute::test::validation::reference::gaussian_pyramid_half </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>num_levels</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa8bf3ead30905547609084db58ee70de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8bf3ead30905547609084db58ee70de">&#9670;&nbsp;</a></span>gemm() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; gemm </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>alpha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>beta</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_g_e_m_m_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="validation_2reference_2_g_e_m_m_8cpp_source.xhtml">GEMM.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ c.shape(), c.data_type(), 1 };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> M = a.shape().y();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>.shape().x();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> K = a.shape().x();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> D = a.shape().z(); <span class="comment">// Number of matrices in a batch</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> W = a.shape()[3]; <span class="comment">// Number of batched-gemm (Winograd case)</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> a_stride_z = K * M;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> a_stride_w = K * M * D;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> b_stride_z = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>.shape().num_dimensions() &gt; 2 ? N * K : 0; <span class="comment">// Do not slide the matrix B along the 3th dimension in case matrix B has less than 3 dimensions</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> b_stride_w = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>.shape().num_dimensions() &gt; 3 ? K * N * D : 0; <span class="comment">// Do not slide the matrix B along the 4th dimension in case matrix B has less than 4 dimensions</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> c_stride_z = N * M;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> c_stride_w = N * M * D;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> &lt; W; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> depth = 0; depth &lt; D; ++depth)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> base_addr_a = depth * a_stride_z + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> * a_stride_w;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> base_addr_b = depth * b_stride_z + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> * b_stride_w;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> base_addr_c = depth * c_stride_z + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> * c_stride_w;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> row = 0; row &lt; M; ++row)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> col = 0; col &lt; N; ++col)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; T acc(0);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k &lt; K; ++k)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; acc += a[base_addr_a + k + row * K] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>[base_addr_b + col + k * N];</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// Finalize the result: alpha * A * B + beta * C</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[base_addr_c + col + row * N] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3161c2c93c655dd30953372064ec627b">alpha</a> * acc + beta * c[base_addr_c + col + row * N];</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1a367830ae09bf6138df822888ec1d71"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">arm_compute::test::validation::w</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; w</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">DFT.cpp:156</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a3161c2c93c655dd30953372064ec627b"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a3161c2c93c655dd30953372064ec627b">arm_compute::test::validation::alpha</a></div><div class="ttdeci">const float alpha</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_accumulate_8cpp_source.xhtml#l00103">Accumulate.cpp:103</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_n_e_o_n_2_accumulate_8cpp_source.xhtml#l00103">arm_compute::test::validation::alpha</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">arm_compute::test::validation::w</a>.</p>
</div>
</div>
<a id="acc8055ed1ae62ec87a4b389047c1464a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc8055ed1ae62ec87a4b389047c1464a">&#9670;&nbsp;</a></span>gemm() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::gemm </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>alpha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>beta</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae62fed24d8b0bf2e0b74d81bbe92df38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae62fed24d8b0bf2e0b74d81bbe92df38">&#9670;&nbsp;</a></span>gemm() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::gemm </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>alpha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>beta</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="validation_2_g_l_e_s___c_o_m_p_u_t_e_2_g_e_m_m_8cpp_source.xhtml#l00059">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="a1c7a185c57e14305617f6d5a414cdaea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c7a185c57e14305617f6d5a414cdaea">&#9670;&nbsp;</a></span>gemm_interleave_4x4()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;T&gt; arm_compute::test::validation::reference::gemm_interleave_4x4 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>out</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_g_e_m_m_interleave4x4_8h_source.xhtml#l00037">37</a> of file <a class="el" href="_g_e_m_m_interleave4x4_8h_source.xhtml">GEMMInterleave4x4.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> T *mtx_in = reinterpret_cast&lt;const T *&gt;(in.data());</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; T *mtx_ref = reinterpret_cast&lt;T *&gt;(out.data());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> int32_t in_rows = in.shape().y();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> int32_t in_cols = in.shape().x();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> int32_t out_stride = out.shape().x();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; int32_t y = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span>(; y &lt;= (in_rows - 4); y += 4)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> T *in_ptr = &amp;mtx_in[y * in_cols];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(int32_t x = 0; x &lt; in_cols; x++)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> T tmp[4] = { in_ptr[x + 0 * in_cols],</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; in_ptr[x + 1 * in_cols],</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; in_ptr[x + 2 * in_cols],</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; in_ptr[x + 3 * in_cols]</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; T *<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = &amp;mtx_ref[static_cast&lt;size_t&gt;(x * 4.f) + static_cast&lt;size_t&gt;(std::ceil(y / 4.f)) * out_stride];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; memcpy(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, tmp, <span class="keyword">sizeof</span>(T) * 4);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// Leftover along the Y direction</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> int32_t leftover_y = in_rows - y;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span>(leftover_y != 0)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">const</span> T *in_ptr = &amp;mtx_in[y * in_cols];</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">for</span>(int32_t x = 0; x &lt; in_cols; x++)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; T tmp[4] = { 0, 0, 0, 0 };</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span>(int32_t k = 0; k &lt; leftover_y; k++)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; tmp[k] = in_ptr[k * in_cols + x];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; T *<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = &amp;mtx_ref[static_cast&lt;size_t&gt;(x * 4.f) + static_cast&lt;size_t&gt;(std::ceil(y / 4.f)) * out_stride];</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; memcpy(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, tmp, <span class="keyword">sizeof</span>(T) * 4);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a10d3d399b4d9f8f031db4cab7cf1d5a6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10d3d399b4d9f8f031db4cab7cf1d5a6">&#9670;&nbsp;</a></span>gemm_interleave_blocked() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;T&gt; arm_compute::test::validation::reference::gemm_interleave_blocked </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>int_by</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>block</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>transposed</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_g_e_m_m_interleave_blocked_8h_source.xhtml#l00050">50</a> of file <a class="el" href="_g_e_m_m_interleave_blocked_8h_source.xhtml">GEMMInterleaveBlocked.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> M = out.shape().y();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> N = out.shape().x();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = 0; y &lt; M; y++)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; T *out_ptr = &amp;out[y * N];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = 0; x &lt; (N / int_by); x += block)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> z = 0; z &lt; int_by; z++)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> a = 0; (out_ptr &lt;= &amp;out[y * N + (N - 1)]) &amp;&amp; a &lt; block; a++)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span>(!transposed)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; *out_ptr++ = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a590054c13a2fe6eddcb35bbe11129a9d">safe_read</a>(in, (y * int_by) + z, x + a);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">const</span> T value = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a590054c13a2fe6eddcb35bbe11129a9d">safe_read</a>(in, x + a, (y * int_by) + z);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; *out_ptr++ = value;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a590054c13a2fe6eddcb35bbe11129a9d"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a590054c13a2fe6eddcb35bbe11129a9d">arm_compute::test::validation::reference::safe_read</a></div><div class="ttdeci">T safe_read(const SimpleTensor&lt; T &gt; &amp;t, int y, int x)</div><div class="ttdef"><b>Definition:</b> <a href="_g_e_m_m_interleave_blocked_8h_source.xhtml#l00037">GEMMInterleaveBlocked.h:37</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_g_e_m_m_interleave_blocked_8h_source.xhtml#l00037">safe_read()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a1f1a4edb3071e8adb00bd748211954f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f1a4edb3071e8adb00bd748211954f2">&#9670;&nbsp;</a></span>gemm_interleave_blocked() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::gemm_interleave_blocked </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>int_by</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>block</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>transposed</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7da8e015c6426ba7a9d756d3cd12e248"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7da8e015c6426ba7a9d756d3cd12e248">&#9670;&nbsp;</a></span>gemm_reshape_lhs_matrix() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; gemm_reshape_lhs_matrix </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_g_e_m_m_l_h_s_matrix_info.xhtml">GEMMLHSMatrixInfo</a> &amp;&#160;</td>
<td class="paramname"><em>lhs_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_g_e_m_m_reshape_l_h_s_matrix_8cpp_source.xhtml#l00043">43</a> of file <a class="el" href="reference_2_g_e_m_m_reshape_l_h_s_matrix_8cpp_source.xhtml">GEMMReshapeLHSMatrix.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(in.shape().num_dimensions() &gt; 3);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; SimpleTensor&lt;T&gt; out{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, in.data_type() };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// Initialize the output tensor with zero</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::memset(&amp;out[0], 0, out.num_elements() * <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> K = in.shape()[0];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> M = in.shape()[1];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a> = in.shape()[2];</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_tiles_x = std::ceil(K / static_cast&lt;float&gt;(lhs_info.k0));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_tiles_y = std::ceil(M / static_cast&lt;float&gt;(lhs_info.m0));</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> TensorShape tile_dims(lhs_info.k0, lhs_info.m0);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> TensorShape tile_dims_transposed(lhs_info.m0, lhs_info.k0);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// Simple tensor for the input tile</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; SimpleTensor&lt;T&gt; src_tile{ tile_dims, in.data_type() };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">// Simple tensor for the input tile</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; SimpleTensor&lt;T&gt; src_tile_transposed{ tile_dims_transposed, in.data_type() };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">// Simple tensor to use when storing the values</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; SimpleTensor&lt;T&gt; *tile_to_use = lhs_info.transpose ? &amp;src_tile_transposed : &amp;src_tile;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset_output_x = lhs_info.interleave ? tile_to_use-&gt;shape()[0] : tile_to_use-&gt;shape()[0] * tile_to_use-&gt;shape()[1];</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> step_output_x = lhs_info.interleave ? tile_to_use-&gt;shape()[0] * lhs_info.v0 : tile_to_use-&gt;shape()[0];</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> z = 0; z &lt; <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a>; ++z)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y = 0; y &lt; num_tiles_y; ++y)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = 0; x &lt; num_tiles_x; ++x)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// Get the tile from the input tensor</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; get_tile&lt;T&gt;(in, src_tile, Coordinates(x * lhs_info.k0, y * lhs_info.m0, z, 0));</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span>(lhs_info.transpose)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">// Transpose matrix</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; transpose_matrix&lt;T&gt;(src_tile, src_tile_transposed);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="comment">// Store</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset_output = (x * lhs_info.k0 * lhs_info.m0 * lhs_info.v0) + ((y % lhs_info.v0) * offset_output_x) + ((y / lhs_info.v0) * out.shape()[0]) + (z * out.shape()[0] * out.shape()[1]);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; tile_to_use-&gt;shape()[1]; ++i)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset_tile = i * tile_to_use-&gt;shape()[0];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// Copy per row</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">std::copy</a>(&amp;(*tile_to_use)[offset_tile], &amp;(*tile_to_use)[offset_tile + tile_to_use-&gt;shape()[0]], &amp;out[offset_output + i * step_output_x]);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;}</div><div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">arm_compute::Channel::B</a></div><div class="ttdoc">Blue channel.</div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_ad9000ce99b9ffcec5722cade36d7e757"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">arm_compute::test::validation::reference::copy</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; copy(const SimpleTensor&lt; T &gt; &amp;src, const TensorShape &amp;output_shape)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_copy_8cpp_source.xhtml#l00037">Copy.cpp:37</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">arm_compute::B</a>, <a class="el" href="reference_2_copy_8cpp_source.xhtml#l00037">copy()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01862">GEMMLHSMatrixInfo::interleave</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01859">GEMMLHSMatrixInfo::k0</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01858">GEMMLHSMatrixInfo::m0</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01861">GEMMLHSMatrixInfo::transpose</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01860">GEMMLHSMatrixInfo::v0</a>.</p>
</div>
</div>
<a id="ae9af4cb54790f494bf6403a522ee50ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae9af4cb54790f494bf6403a522ee50ee">&#9670;&nbsp;</a></span>gemm_reshape_lhs_matrix() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int&gt; arm_compute::test::validation::reference::gemm_reshape_lhs_matrix </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_g_e_m_m_l_h_s_matrix_info.xhtml">GEMMLHSMatrixInfo</a> &amp;&#160;</td>
<td class="paramname"><em>lhs_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af0c4372fbbdd64fdcacb7a5ee04f8f4a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0c4372fbbdd64fdcacb7a5ee04f8f4a">&#9670;&nbsp;</a></span>gemm_reshape_lhs_matrix() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;short&gt; arm_compute::test::validation::reference::gemm_reshape_lhs_matrix </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; short &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_g_e_m_m_l_h_s_matrix_info.xhtml">GEMMLHSMatrixInfo</a> &amp;&#160;</td>
<td class="paramname"><em>lhs_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a24b8e6a6c01dc309d0f4e6c7b882c9f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24b8e6a6c01dc309d0f4e6c7b882c9f0">&#9670;&nbsp;</a></span>gemm_reshape_lhs_matrix() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;char&gt; arm_compute::test::validation::reference::gemm_reshape_lhs_matrix </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; char &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_g_e_m_m_l_h_s_matrix_info.xhtml">GEMMLHSMatrixInfo</a> &amp;&#160;</td>
<td class="paramname"><em>lhs_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af33c441c06448d09c4562780d09f5f6f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af33c441c06448d09c4562780d09f5f6f">&#9670;&nbsp;</a></span>gemm_reshape_rhs_matrix() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; gemm_reshape_rhs_matrix </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_g_e_m_m_r_h_s_matrix_info.xhtml">GEMMRHSMatrixInfo</a> &amp;&#160;</td>
<td class="paramname"><em>rhs_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_g_e_m_m_reshape_r_h_s_matrix_8cpp_source.xhtml#l00043">43</a> of file <a class="el" href="reference_2_g_e_m_m_reshape_r_h_s_matrix_8cpp_source.xhtml">GEMMReshapeRHSMatrix.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(in.shape().num_dimensions() &gt; 3);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; SimpleTensor&lt;T&gt; out{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, in.data_type() };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// Initialize the output tensor with zero</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::memset(&amp;out[0], 0, out.num_elements() * <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> N = in.shape()[0];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> K = in.shape()[1];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a> = in.shape()[2];</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_tiles_x = std::ceil(N / static_cast&lt;float&gt;(rhs_info.n0));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_tiles_y = std::ceil(K / static_cast&lt;float&gt;(rhs_info.k0));</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> TensorShape tile_dims(rhs_info.n0, rhs_info.k0);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> TensorShape tile_dims_transposed(rhs_info.k0, rhs_info.n0);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// Simple tensor for the input tile</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; SimpleTensor&lt;T&gt; src_tile{ tile_dims, in.data_type() };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">// Simple tensor for the input tile</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; SimpleTensor&lt;T&gt; src_tile_transposed{ tile_dims_transposed, in.data_type() };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">// Simple tensor to use when storing the values</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; SimpleTensor&lt;T&gt; *tile_to_use = rhs_info.transpose ? &amp;src_tile_transposed : &amp;src_tile;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset_output_x = rhs_info.interleave ? tile_to_use-&gt;shape()[0] : tile_to_use-&gt;shape()[0] * tile_to_use-&gt;shape()[1];</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> step_output_x = rhs_info.interleave ? tile_to_use-&gt;shape()[0] * rhs_info.h0 : tile_to_use-&gt;shape()[0];</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> z = 0; z &lt; <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a>; ++z)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y = 0; y &lt; num_tiles_y; ++y)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = 0; x &lt; num_tiles_x; ++x)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// Get the tile from the input tensor</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; get_tile&lt;T&gt;(in, src_tile, Coordinates(x * rhs_info.n0, y * rhs_info.k0, z, 0));</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span>(rhs_info.transpose)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">// Transpose matrix</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; transpose_matrix&lt;T&gt;(src_tile, src_tile_transposed);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="comment">// Store</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset_output = (y * rhs_info.k0 * rhs_info.n0 * rhs_info.h0) + ((x % rhs_info.h0) * offset_output_x) + ((x / rhs_info.h0) * out.shape()[0]) + (z * out.shape()[0] * out.shape()[1]);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; tile_to_use-&gt;shape()[1]; ++i)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset_tile = i * tile_to_use-&gt;shape()[0];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// Copy per row</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">std::copy</a>(&amp;(*tile_to_use)[offset_tile], &amp;(*tile_to_use)[offset_tile + tile_to_use-&gt;shape()[0]], &amp;out[offset_output + i * step_output_x]);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;}</div><div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">arm_compute::Channel::B</a></div><div class="ttdoc">Blue channel.</div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_ad9000ce99b9ffcec5722cade36d7e757"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad9000ce99b9ffcec5722cade36d7e757">arm_compute::test::validation::reference::copy</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; copy(const SimpleTensor&lt; T &gt; &amp;src, const TensorShape &amp;output_shape)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_copy_8cpp_source.xhtml#l00037">Copy.cpp:37</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">arm_compute::B</a>, <a class="el" href="reference_2_copy_8cpp_source.xhtml#l00037">copy()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01870">GEMMRHSMatrixInfo::h0</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01872">GEMMRHSMatrixInfo::interleave</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01869">GEMMRHSMatrixInfo::k0</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01868">GEMMRHSMatrixInfo::n0</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01871">GEMMRHSMatrixInfo::transpose</a>.</p>
</div>
</div>
<a id="a4347e8d79fd2976ada851fb08d8cb35c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4347e8d79fd2976ada851fb08d8cb35c">&#9670;&nbsp;</a></span>gemm_reshape_rhs_matrix() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int&gt; arm_compute::test::validation::reference::gemm_reshape_rhs_matrix </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_g_e_m_m_r_h_s_matrix_info.xhtml">GEMMRHSMatrixInfo</a> &amp;&#160;</td>
<td class="paramname"><em>rhs_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a02244b4489fc1f1f15c7f62ff65c2855"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02244b4489fc1f1f15c7f62ff65c2855">&#9670;&nbsp;</a></span>gemm_reshape_rhs_matrix() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;short&gt; arm_compute::test::validation::reference::gemm_reshape_rhs_matrix </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; short &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_g_e_m_m_r_h_s_matrix_info.xhtml">GEMMRHSMatrixInfo</a> &amp;&#160;</td>
<td class="paramname"><em>rhs_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aad4b2a5e867463dae62b25f4f3ab2274"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad4b2a5e867463dae62b25f4f3ab2274">&#9670;&nbsp;</a></span>gemm_reshape_rhs_matrix() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;char&gt; arm_compute::test::validation::reference::gemm_reshape_rhs_matrix </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; char &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_g_e_m_m_r_h_s_matrix_info.xhtml">GEMMRHSMatrixInfo</a> &amp;&#160;</td>
<td class="paramname"><em>rhs_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5cc178cdce0a90f66bba02b5e985f1ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5cc178cdce0a90f66bba02b5e985f1ad">&#9670;&nbsp;</a></span>gemm_transpose_1xW()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;T&gt; arm_compute::test::validation::reference::gemm_transpose_1xW </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_g_e_m_m_transpose1x_w_8h_source.xhtml#l00037">37</a> of file <a class="el" href="_g_e_m_m_transpose1x_w_8h_source.xhtml">GEMMTranspose1xW.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> W = 16 / <span class="keyword">sizeof</span>(T);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> TensorShape shape_out(static_cast&lt;size_t&gt;(in.shape().y() * W), static_cast&lt;size_t&gt;(std::ceil(in.shape().x() / static_cast&lt;float&gt;(W))));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; SimpleTensor&lt;T&gt; out(shape_out, in.data_type());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> int32_t in_height = in.shape().y();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> int32_t in_width = in.shape().x();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> int32_t out_width = out.shape().x();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> T *in_base_addr = reinterpret_cast&lt;const T *&gt;(in.data());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; T *out_base_addr = reinterpret_cast&lt;T *&gt;(out.data());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">int</span> x = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span>(; x &lt; in_width; x += W)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = 0; y &lt; in_height; y++)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> T *in_addr = (in_base_addr + x + y * in_width);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; T *out_addr = (out_base_addr + y * W + (x / W) * out_width);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k &lt; W; ++k)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// If the input width is not multiple of W, we fill the reference with 0s</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span>((x + k) &gt;= in_width)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; out_addr[k] = T(0);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; out_addr[k] = in_addr[k];</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div></div><!-- fragment -->
<p class="reference">References <a class="el" href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="af18f21173e19d772347089a2839351b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af18f21173e19d772347089a2839351b8">&#9670;&nbsp;</a></span>gemmlowp() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt; gemmlowp </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a>&#160;</td>
<td class="paramname"><em>shape_c</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml#l00183">183</a> of file <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml">GEMMLowp.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> gemmlowp_matrix_multiply_core&lt;T1, T2&gt;(a, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, shape_c, 0, 0);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>.</p>
</div>
</div>
<a id="ae98f7881ffb0ec70363b1e58f3ffff26"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae98f7881ffb0ec70363b1e58f3ffff26">&#9670;&nbsp;</a></span>gemmlowp() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int32_t&gt; arm_compute::test::validation::reference::gemmlowp </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a>&#160;</td>
<td class="paramname"><em>shape_c</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab15d9a14f95a70cefeaccb69a471d461"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab15d9a14f95a70cefeaccb69a471d461">&#9670;&nbsp;</a></span>gemmlowp() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int32_t&gt; arm_compute::test::validation::reference::gemmlowp </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a>&#160;</td>
<td class="paramname"><em>shape_c</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a37da19bcb7b529afd0af2eb85edbb110"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37da19bcb7b529afd0af2eb85edbb110">&#9670;&nbsp;</a></span>gemmlowp_matrix_multiply_core() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;T1&gt; arm_compute::test::validation::reference::gemmlowp_matrix_multiply_core </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a>&#160;</td>
<td class="paramname"><em>shape_c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>a_offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>b_offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a74776be88be65092fe631a3313f46ab5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74776be88be65092fe631a3313f46ab5">&#9670;&nbsp;</a></span>gemmlowp_matrix_multiply_core() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;T_out&gt; arm_compute::test::validation::reference::gemmlowp_matrix_multiply_core </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T_in &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T_in &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a>&#160;</td>
<td class="paramname"><em>shape_c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>a_offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>b_offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml#l00129">129</a> of file <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml">GEMMLowp.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;{</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; static_assert(std::is_same&lt;<span class="keyword">typename</span> std::decay&lt;T_out&gt;::type, int32_t&gt;::value, <span class="stringliteral">&quot;Only int32_t is allowed for the output&quot;</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt = std::is_same&lt;T_out, int32_t&gt;::value ? DataType::S32 : DataType::U32;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; SimpleTensor&lt;T_out&gt; c(shape_c, dt);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> K = a.shape().x();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> M = a.shape().y();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>.shape().x();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> D = a.shape().z(); <span class="comment">// Number of matrices in a batch</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> a_stride_z = K * M;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// Do not slide the matrix B along the 3rd dimension in case matrix B has less than 3 dimensions</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> b_stride_z = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>.shape().num_dimensions() &gt; 2 ? N * K : 0;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> c_stride_z = N * M;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; std::vector&lt;T_out&gt; acc;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; acc.resize(N);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> depth = 0; depth &lt; D; ++depth)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> base_addr_a = depth * a_stride_z;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> base_addr_b = depth * b_stride_z;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> base_addr_c = depth * c_stride_z;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; M; ++i)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j &lt; N; ++j)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; acc[j] = 0;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k &lt; K; ++k)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> T_out tmp_a = a_offset + static_cast&lt;T_out&gt;(a[base_addr_a + k + i * K]);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j &lt; N; ++j)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">const</span> T_out tmp_b = b_offset + static_cast&lt;T_out&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>[base_addr_b + j + k * N]);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">const</span> T_out mult_as_int = tmp_a * tmp_b;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; acc[j] += mult_as_int;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j &lt; N; ++j)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; c[base_addr_c + j + i * N] = acc[j];</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00074">Types.h:74</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="afb05c56daf457ea9389411a5308ec15c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb05c56daf457ea9389411a5308ec15c">&#9670;&nbsp;</a></span>gemmlowp_matrix_multiply_core() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int32_t&gt; arm_compute::test::validation::reference::gemmlowp_matrix_multiply_core </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a>&#160;</td>
<td class="paramname"><em>shape_c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>a_offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>b_offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad373c5f86e5eb3d150f78fe030814b2c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad373c5f86e5eb3d150f78fe030814b2c">&#9670;&nbsp;</a></span>gemmlowp_matrix_multiply_core() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int32_t&gt; arm_compute::test::validation::reference::gemmlowp_matrix_multiply_core </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a>&#160;</td>
<td class="paramname"><em>shape_c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>a_offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>b_offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a344296b0ad06f8e867f95658d59ecdeb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a344296b0ad06f8e867f95658d59ecdeb">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_int16_scale_by_fixedpoint() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; gemmlowp_quantize_down_int32_to_int16_scale_by_fixedpoint </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_fixedpoint_multiplier</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml#l00233">233</a> of file <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml">GEMMLowp.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; SimpleTensor&lt;int16_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(in.shape(), DataType::QSYMM16);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; quantize_down_int32_to_int16_scale_by_fixedpoint&lt;T&gt;(&amp;in, <span class="keyword">nullptr</span>, &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, result_fixedpoint_multiplier, result_shift, min, max);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a3ca8a4ea8f992df3b462bc7b24d097c6">arm_compute::QSYMM16</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="ac64d1c55d1ebc90fe55a46c35682e759"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac64d1c55d1ebc90fe55a46c35682e759">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_int16_scale_by_fixedpoint() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; gemmlowp_quantize_down_int32_to_int16_scale_by_fixedpoint </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_fixedpoint_multiplier</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml#l00244">244</a> of file <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml">GEMMLowp.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;{</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; SimpleTensor&lt;int16_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(in.shape(), DataType::QSYMM16);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; quantize_down_int32_to_int16_scale_by_fixedpoint&lt;T&gt;(&amp;in, &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, result_fixedpoint_multiplier, result_shift, min, max);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a3a77be8aebd8e00522b32061d46ccdbd"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">arm_compute::test::validation::bias</a></div><div class="ttdeci">CLTensor bias</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">ConvolutionLayer.cpp:181</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">arm_compute::test::validation::bias</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a3ca8a4ea8f992df3b462bc7b24d097c6">arm_compute::QSYMM16</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a010c6a6e3fc97633cbfb906109649043"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a010c6a6e3fc97633cbfb906109649043">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_int16_scale_by_fixedpoint() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::gemmlowp_quantize_down_int32_to_int16_scale_by_fixedpoint </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_fixedpoint_multiplier</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a56fe7cb2ed4faa67052cdb6fcaf6b4a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56fe7cb2ed4faa67052cdb6fcaf6b4a8">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_int16_scale_by_fixedpoint() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::gemmlowp_quantize_down_int32_to_int16_scale_by_fixedpoint </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_fixedpoint_multiplier</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a108287f3fa07031a58de6cd4b62f000b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a108287f3fa07031a58de6cd4b62f000b">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_uint8_scale() <span class="overload">[1/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::gemmlowp_quantize_down_int32_to_uint8_scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_mult_int</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa74f872dcd4daaaa3ef53e8ab628b606"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa74f872dcd4daaaa3ef53e8ab628b606">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_uint8_scale() <span class="overload">[2/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; gemmlowp_quantize_down_int32_to_uint8_scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_mult_int</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml#l00189">189</a> of file <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml">GEMMLowp.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;{</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(in.shape(), DataType::QASYMM8);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; quantize_down_int32_to_uint8_scale&lt;T&gt;(&amp;in, <span class="keyword">nullptr</span>, &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, result_offset, result_mult_int, result_shift, min, max);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6af14462d71aa842202c3e4b272c7ec924">arm_compute::QASYMM8</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a32a9b5d6bd895eb4a431ed762a6891c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32a9b5d6bd895eb4a431ed762a6891c1">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_uint8_scale() <span class="overload">[3/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; gemmlowp_quantize_down_int32_to_uint8_scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_mult_int</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml#l00199">199</a> of file <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml">GEMMLowp.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;{</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(in.shape(), DataType::QASYMM8);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; quantize_down_int32_to_uint8_scale&lt;T&gt;(&amp;in, &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, result_offset, result_mult_int, result_shift, min, max);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a3a77be8aebd8e00522b32061d46ccdbd"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">arm_compute::test::validation::bias</a></div><div class="ttdeci">CLTensor bias</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">ConvolutionLayer.cpp:181</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">arm_compute::test::validation::bias</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6af14462d71aa842202c3e4b272c7ec924">arm_compute::QASYMM8</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a0563116df3cccec27da440428c33be03"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0563116df3cccec27da440428c33be03">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_uint8_scale() <span class="overload">[4/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::gemmlowp_quantize_down_int32_to_uint8_scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_mult_int</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aff1df000a6579a92f6b98716d41b339f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff1df000a6579a92f6b98716d41b339f">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_uint8_scale() <span class="overload">[5/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::gemmlowp_quantize_down_int32_to_uint8_scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_mult_int</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a06197dfafd5455257cec13e414cce105"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a06197dfafd5455257cec13e414cce105">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_uint8_scale_by_fixedpoint() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; gemmlowp_quantize_down_int32_to_uint8_scale_by_fixedpoint </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_fixedpoint_multiplier</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_offset_after_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml#l00210">210</a> of file <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml">GEMMLowp.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;{</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(in.shape(), DataType::QASYMM8);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; quantize_down_int32_to_uint8_scale_by_fixedpoint&lt;T&gt;(&amp;in, <span class="keyword">nullptr</span>, &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, result_fixedpoint_multiplier, result_shift, result_offset_after_shift, min, max);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6af14462d71aa842202c3e4b272c7ec924">arm_compute::QASYMM8</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a43a9895cb024f65fd294a76b51a16092"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43a9895cb024f65fd294a76b51a16092">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_uint8_scale_by_fixedpoint() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; gemmlowp_quantize_down_int32_to_uint8_scale_by_fixedpoint </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_fixedpoint_multiplier</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_offset_after_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml#l00222">222</a> of file <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml">GEMMLowp.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;{</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(in.shape(), DataType::QASYMM8);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; quantize_down_int32_to_uint8_scale_by_fixedpoint&lt;T&gt;(&amp;in, &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, &amp;<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, result_fixedpoint_multiplier, result_shift, result_offset_after_shift, min, max);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a3a77be8aebd8e00522b32061d46ccdbd"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">arm_compute::test::validation::bias</a></div><div class="ttdeci">CLTensor bias</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">ConvolutionLayer.cpp:181</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">arm_compute::test::validation::bias</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6af14462d71aa842202c3e4b272c7ec924">arm_compute::QASYMM8</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a888efca762d4f8630e32ed6463c307c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a888efca762d4f8630e32ed6463c307c2">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_uint8_scale_by_fixedpoint() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::gemmlowp_quantize_down_int32_to_uint8_scale_by_fixedpoint </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_fixedpoint_multiplier</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_offset_after_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a484883f5b7128e47bbb309fe69e2dc9e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a484883f5b7128e47bbb309fe69e2dc9e">&#9670;&nbsp;</a></span>gemmlowp_quantize_down_int32_to_uint8_scale_by_fixedpoint() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::gemmlowp_quantize_down_int32_to_uint8_scale_by_fixedpoint </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_fixedpoint_multiplier</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>result_offset_after_shift</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="adc64cfa88bef3958e1603bfca23db47a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc64cfa88bef3958e1603bfca23db47a">&#9670;&nbsp;</a></span>harris_corner_detector() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt; harris_corner_detector </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>threshold</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>min_dist</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>sensitivity</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>gradient_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>block_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_harris_corner_detector_8cpp_source.xhtml#l00187">187</a> of file <a class="el" href="_harris_corner_detector_8cpp_source.xhtml">HarrisCornerDetector.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;{</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">if</span>(gradient_size &lt; 7)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> harris_corner_detector_impl&lt;int16_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, min_dist, sensitivity, gradient_size, block_size, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> harris_corner_detector_impl&lt;int32_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, min_dist, sensitivity, gradient_size, block_size, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a6cae310822a46019ba25a00ddb0f7e62"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">arm_compute::test::validation::reference::threshold</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; threshold(const SimpleTensor&lt; T &gt; &amp;src, T threshold, T false_value, T true_value, ThresholdType type, T upper)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_threshold_8cpp_source.xhtml#l00035">Threshold.cpp:35</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="reference_2_threshold_8cpp_source.xhtml#l00035">threshold()</a>.</p>
</div>
</div>
<a id="ab2ac7813f2c360028d700e7feb88afca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2ac7813f2c360028d700e7feb88afca">&#9670;&nbsp;</a></span>harris_corner_detector() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::vector&lt;<a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a>&gt; arm_compute::test::validation::reference::harris_corner_detector </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>threshold</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>min_dist</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>sensitivity</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>gradient_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>block_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8c37b244d8aec5993e58b2c7f67d936d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c37b244d8aec5993e58b2c7f67d936d">&#9670;&nbsp;</a></span>histogram() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; histogram </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>num_bins</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>range</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_histogram_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="validation_2reference_2_histogram_8cpp_source.xhtml">Histogram.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;uint32_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(TensorShape(num_bins), DataType::U32);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Clear the distribution</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> element_idx = 0; element_idx &lt; num_bins; ++element_idx)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// Create the histogram</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> element_idx = 0; element_idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++element_idx)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a> &lt;= <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[element_idx]) &amp;&amp; (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[element_idx] &lt; (<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a> + <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a87f09c74765be18a99038478f96daf9b">range</a>)))</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> index = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[element_idx] - <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>) * num_bins / <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a87f09c74765be18a99038478f96daf9b">range</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[index]++;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div><div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">helpers.h:328</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a87f09c74765be18a99038478f96daf9b"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a87f09c74765be18a99038478f96daf9b">arm_compute::test::validation::reference::range</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; range(SimpleTensor&lt; T &gt; &amp;dst, float start, const size_t num_of_elements, float step)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_range_8cpp_source.xhtml#l00050">Range.cpp:50</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">offset()</a>, <a class="el" href="reference_2_range_8cpp_source.xhtml#l00050">range()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">arm_compute::U32</a>.</p>
<p class="reference">Referenced by <a class="el" href="histogram_8cl_source.xhtml#l00141">hist_border_kernel()</a>, <a class="el" href="histogram_8cl_source.xhtml#l00238">hist_border_kernel_fixed()</a>, <a class="el" href="histogram_8cl_source.xhtml#l00068">hist_local_kernel()</a>, and <a class="el" href="histogram_8cl_source.xhtml#l00178">hist_local_kernel_fixed()</a>.</p>
</div>
</div>
<a id="a9bdebe304d72f6d01d0dbf3e3b22ae69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9bdebe304d72f6d01d0dbf3e3b22ae69">&#9670;&nbsp;</a></span>histogram() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint32_t&gt; arm_compute::test::validation::reference::histogram </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>num_bins</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>range</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="validation_2_c_l_2_histogram_8cpp_source.xhtml#l00048">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="ae01f1c200a32d41a056d513760981326"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae01f1c200a32d41a056d513760981326">&#9670;&nbsp;</a></span>hog_block_normalization() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void hog_block_normalization </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>desc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>hog_space</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;&#160;</td>
<td class="paramname"><em>hog_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00174">174</a> of file <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml">HOGDescriptor.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">const</span> Size2D cells_per_block = hog_info.num_cells_per_block();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">const</span> Size2D cells_per_block_stride = hog_info.num_cells_per_block_stride();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> Size2D &amp;block_size = hog_info.block_size();</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">const</span> Size2D &amp;block_stride = hog_info.block_stride();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_bins = hog_info.num_bins();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> shape_width = hog_space.shape().x() * hog_info.cell_size().width;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> shape_height = hog_space.shape().y() * hog_info.cell_size().height;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_bins_per_block_x = cells_per_block.width * num_bins;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// Tensor representing single block</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; SimpleTensor&lt;T&gt; block(TensorShape{ 1u, 1u }, DataType::F32, cells_per_block.area() * num_bins);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordtype">int</span> block_idx = 0;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">int</span> block_y_offset = 0;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">// Traverse shape</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> sy = block_size.height; sy &lt;= shape_height; sy += block_stride.height)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordtype">int</span> block_x_offset = 0;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> sx = block_size.width; sx &lt;= shape_width; sx += block_stride.width)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordtype">int</span> cell_y_offset = 0;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">int</span> elem_idx = 0;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="comment">// Traverse block</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> y = 0u; y &lt; cells_per_block.height; ++y)</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> x = 0u; x &lt; num_bins_per_block_x; ++x)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordtype">int</span> idx = x + cell_y_offset + block_x_offset + block_y_offset;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; block[elem_idx] = hog_space[idx];</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; elem_idx++;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; cell_y_offset += hog_space.shape().x() * num_bins;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// Normalize block and write to descriptor</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; hog_block_normalization_compute(block, desc, hog_info, block_idx);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; block_x_offset += cells_per_block_stride.width * num_bins;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; block_idx++;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; block_y_offset += cells_per_block_stride.height * num_bins * hog_space.shape().x();</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;}</div></div><!-- fragment -->
<p class="reference">References <a class="el" href="_size2_d_8h_source.xhtml#l00053">Size2D::area()</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00096">HOGInfo::block_size()</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00106">HOGInfo::block_stride()</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00091">HOGInfo::cell_size()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::F32</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00093">Size2D::height</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00111">HOGInfo::num_bins()</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00067">HOGInfo::num_cells_per_block()</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00075">HOGInfo::num_cells_per_block_stride()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="_size2_d_8h_source.xhtml#l00092">Size2D::width</a>.</p>
<p class="reference">Referenced by <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00226">hog_descriptor()</a>, and <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml#l00138">hog_multi_detection()</a>.</p>
</div>
</div>
<a id="a3c596a1343dd6f603067007a9709320c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c596a1343dd6f603067007a9709320c">&#9670;&nbsp;</a></span>hog_block_normalization() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void arm_compute::test::validation::reference::hog_block_normalization </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>desc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>hog_space</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;&#160;</td>
<td class="paramname"><em>hog_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa0803d3eb7f6177d7ff8eb49cf0772ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa0803d3eb7f6177d7ff8eb49cf0772ab">&#9670;&nbsp;</a></span>hog_descriptor() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; hog_descriptor </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">U&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;&#160;</td>
<td class="paramname"><em>hog_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00226">226</a> of file <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml">HOGDescriptor.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;{</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; SimpleTensor&lt;int16_t&gt; grad_x;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; SimpleTensor&lt;int16_t&gt; grad_y;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// Create tensor info for HOG descriptor</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; TensorInfo desc_info(hog_info, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y());</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; SimpleTensor&lt;T&gt; desc(desc_info.tensor_shape(), DataType::F32, desc_info.num_channels());</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">// Create HOG space tensor (num_cells_x, num_cells_y)</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; TensorShape hog_space_shape(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x() / hog_info.cell_size().width,</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y() / hog_info.cell_size().height);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// For each cell a histogram with a num_bins is created</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; TensorInfo info_hog_space(hog_space_shape, hog_info.num_bins(), DataType::F32);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; SimpleTensor&lt;T&gt; hog_space(info_hog_space.tensor_shape(), DataType::F32, info_hog_space.num_channels());</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="comment">// Calculate derivative</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; std::tie(grad_x, grad_y) = derivative&lt;int16_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, GradientDimension::GRAD_XY);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// For each cell create histogram based on magnitude and phase</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af9b136833d189cdd3b4b600d086e3df8">hog_orientation_binning</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6aa278cb3dd1777e7338c5e573c55550">magnitude</a>(grad_x, grad_y, MagnitudeType::L2NORM),</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a74991bda4fcca3ce5dcf8afdccdbafff">phase</a>(grad_x, grad_y, hog_info.phase_type()),</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; hog_space,</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; hog_info);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="comment">// Normalize histograms based on block size</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3c596a1343dd6f603067007a9709320c">hog_block_normalization</a>(desc, hog_space, hog_info);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> desc;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_af9b136833d189cdd3b4b600d086e3df8"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af9b136833d189cdd3b4b600d086e3df8">arm_compute::test::validation::reference::hog_orientation_binning</a></div><div class="ttdeci">template void hog_orientation_binning(const SimpleTensor&lt; int16_t &gt; &amp;mag, const SimpleTensor&lt; uint8_t &gt; &amp;phase, SimpleTensor&lt; float &gt; &amp;hog_space, const HOGInfo &amp;hog_info)</div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a74991bda4fcca3ce5dcf8afdccdbafff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a74991bda4fcca3ce5dcf8afdccdbafff">arm_compute::test::validation::reference::phase</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; phase(const SimpleTensor&lt; T &gt; &amp;gx, const SimpleTensor&lt; T &gt; &amp;gy, PhaseType phase_type)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_phase_8cpp_source.xhtml#l00035">Phase.cpp:35</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a3c596a1343dd6f603067007a9709320c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3c596a1343dd6f603067007a9709320c">arm_compute::test::validation::reference::hog_block_normalization</a></div><div class="ttdeci">template void hog_block_normalization(SimpleTensor&lt; float &gt; &amp;desc, const SimpleTensor&lt; float &gt; &amp;hog_space, const HOGInfo &amp;hog_info)</div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a6aa278cb3dd1777e7338c5e573c55550"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6aa278cb3dd1777e7338c5e573c55550">arm_compute::test::validation::reference::magnitude</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; magnitude(const SimpleTensor&lt; T &gt; &amp;gx, const SimpleTensor&lt; T &gt; &amp;gy, MagnitudeType magnitude_type)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_magnitude_8cpp_source.xhtml#l00035">Magnitude.cpp:35</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00091">HOGInfo::cell_size()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::F32</a>, <a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7a5515a637eda61b978e97adaa5d7629cc">arm_compute::GRAD_XY</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00093">Size2D::height</a>, <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00174">hog_block_normalization()</a>, <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00117">hog_orientation_binning()</a>, <a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8aad927ac799e8b24f80fc80d89b2eb7131">arm_compute::L2NORM</a>, <a class="el" href="validation_2reference_2_magnitude_8cpp_source.xhtml#l00035">magnitude()</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00111">HOGInfo::num_bins()</a>, <a class="el" href="validation_2reference_2_phase_8cpp_source.xhtml#l00035">phase()</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00126">HOGInfo::phase_type()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="_size2_d_8h_source.xhtml#l00092">Size2D::width</a>.</p>
</div>
</div>
<a id="abadb8b3a6c895e1a036bd7a2bcd90fae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abadb8b3a6c895e1a036bd7a2bcd90fae">&#9670;&nbsp;</a></span>hog_descriptor() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::hog_descriptor </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;&#160;</td>
<td class="paramname"><em>hog_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a174ee1e2e66053db45c7fb4aa68920e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a174ee1e2e66053db45c7fb4aa68920e7">&#9670;&nbsp;</a></span>hog_detector() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="structarm__compute_1_1_detection_window.xhtml">DetectionWindow</a> &gt; hog_detector </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>max_num_detection_windows</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;&#160;</td>
<td class="paramname"><em>hog_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>detection_window_stride</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>threshold</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>idx_class</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_h_o_g_detector_8cpp_source.xhtml#l00048">48</a> of file <a class="el" href="validation_2reference_2_h_o_g_detector_8cpp_source.xhtml">HOGDetector.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a>((detection_window_stride.width % hog_info.block_stride().width != 0),</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="stringliteral">&quot;Detection window stride width must be multiple of block stride width&quot;</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a>((detection_window_stride.height % hog_info.block_stride().height != 0),</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="stringliteral">&quot;Detection window stride height must be multiple of block stride height&quot;</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">// Create vector for identifying each detection window</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; std::vector&lt;DetectionWindow&gt; windows;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// Calculate detection window step</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> Size2D window_step(detection_window_stride.width / hog_info.block_stride().width,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; detection_window_stride.height / hog_info.block_stride().height);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// Calculate number of detection windows</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> Size2D num_windows = num_detection_windows(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), window_step, hog_info);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="comment">// Calculate detection window and row offsets in feature vector</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> src_offset_x = window_step.width * hog_info.num_bins() * hog_info.num_cells_per_block().area();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> src_offset_y = window_step.height * hog_info.num_bins() * hog_info.num_cells_per_block().area() * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> src_offset_row = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels() * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">// Calculate detection window attributes</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> Size2D num_block_positions_per_detection_window = hog_info.num_block_positions_per_image(hog_info.detection_window_size());</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_bins_per_descriptor_x = num_block_positions_per_detection_window.width * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_blocks_per_descriptor_y = num_block_positions_per_detection_window.height;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>((num_bins_per_descriptor_x * num_blocks_per_descriptor_y + 1) != hog_info.descriptor_size());</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">size_t</span> win_id = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// Traverse feature vector in detection window steps</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> win_y = 0u, offset_y = 0u; win_y &lt; num_windows.height; win_y += window_step.height, offset_y += src_offset_y)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> win_x = 0u, offset_x = 0u; win_x &lt; num_windows.width; win_x += window_step.width, offset_x += src_offset_x)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">// Reset the score</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordtype">float</span> score = 0.0f;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="comment">// Traverse detection window</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> y = 0u, offset_row = 0u; y &lt; num_blocks_per_descriptor_y; ++y, offset_row += src_offset_row)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> bin_offset = y * num_bins_per_descriptor_x;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> x = 0u; x &lt; num_bins_per_descriptor_x; ++x)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// Compute Linear SVM</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> a = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[x + offset_x + offset_y + offset_row];</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> = descriptor[x + bin_offset];</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; score += a * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="comment">// Add the bias. The bias is located at the position (descriptor_size() - 1)</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; score += descriptor[num_bins_per_descriptor_x * num_blocks_per_descriptor_y];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span>(score &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="struct_detection_window.xhtml">DetectionWindow</a> window;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span>(win_id++ &lt; max_num_detection_windows)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; window.<a class="code" href="struct_detection_window.xhtml#a0815db32ce16586f5e90a633735df930">x</a> = win_x * hog_info.block_stride().width;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; window.<a class="code" href="struct_detection_window.xhtml#a45b45124e843a937c3e256edbce64eea">y</a> = win_y * hog_info.block_stride().height;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; window.<a class="code" href="struct_detection_window.xhtml#a67fe5ca4d6c3f95bf649ef48fe3d221b">width</a> = hog_info.detection_window_size().width;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; window.<a class="code" href="struct_detection_window.xhtml#aa0fb54e3dbe6f7446157eb3f3c1f77f3">height</a> = hog_info.detection_window_size().height;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; window.<a class="code" href="struct_detection_window.xhtml#ad4f986571659dd822695ca58dda00e49">idx_class</a> = idx_class;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; window.<a class="code" href="struct_detection_window.xhtml#a8c5cd9b525ee73a24b1d9d8e34982d1c">score</a> = score;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; windows.push_back(window);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> windows;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;}</div><div class="ttc" id="struct_detection_window_xhtml"><div class="ttname"><a href="struct_detection_window.xhtml">DetectionWindow</a></div><div class="ttdoc">Detection window struct.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00047">types.h:47</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="struct_detection_window_xhtml_ad4f986571659dd822695ca58dda00e49"><div class="ttname"><a href="struct_detection_window.xhtml#ad4f986571659dd822695ca58dda00e49">DetectionWindow::idx_class</a></div><div class="ttdeci">ushort idx_class</div><div class="ttdoc">Index of the class.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00053">types.h:53</a></div></div>
<div class="ttc" id="struct_detection_window_xhtml_a45b45124e843a937c3e256edbce64eea"><div class="ttname"><a href="struct_detection_window.xhtml#a45b45124e843a937c3e256edbce64eea">DetectionWindow::y</a></div><div class="ttdeci">ushort y</div><div class="ttdoc">Top-left y coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00050">types.h:50</a></div></div>
<div class="ttc" id="struct_detection_window_xhtml_a8c5cd9b525ee73a24b1d9d8e34982d1c"><div class="ttname"><a href="struct_detection_window.xhtml#a8c5cd9b525ee73a24b1d9d8e34982d1c">DetectionWindow::score</a></div><div class="ttdeci">float score</div><div class="ttdoc">Confidence value for the detection window.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00054">types.h:54</a></div></div>
<div class="ttc" id="struct_detection_window_xhtml_aa0fb54e3dbe6f7446157eb3f3c1f77f3"><div class="ttname"><a href="struct_detection_window.xhtml#aa0fb54e3dbe6f7446157eb3f3c1f77f3">DetectionWindow::height</a></div><div class="ttdeci">ushort height</div><div class="ttdoc">Height of the detection window.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00052">types.h:52</a></div></div>
<div class="ttc" id="struct_detection_window_xhtml_a0815db32ce16586f5e90a633735df930"><div class="ttname"><a href="struct_detection_window.xhtml#a0815db32ce16586f5e90a633735df930">DetectionWindow::x</a></div><div class="ttdeci">ushort x</div><div class="ttdoc">Top-left x coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00049">types.h:49</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a6cae310822a46019ba25a00ddb0f7e62"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">arm_compute::test::validation::reference::threshold</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; threshold(const SimpleTensor&lt; T &gt; &amp;src, T threshold, T false_value, T true_value, ThresholdType type, T upper)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_threshold_8cpp_source.xhtml#l00035">Threshold.cpp:35</a></div></div>
<div class="ttc" id="struct_detection_window_xhtml_a67fe5ca4d6c3f95bf649ef48fe3d221b"><div class="ttname"><a href="struct_detection_window.xhtml#a67fe5ca4d6c3f95bf649ef48fe3d221b">DetectionWindow::width</a></div><div class="ttdeci">ushort width</div><div class="ttdoc">Width of the detection window.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00051">types.h:51</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a5bbdcf574d3f5e412fa6a1117911e67b"><div class="ttname"><a href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_MSG(cond,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00328">Error.h:328</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_size2_d_8h_source.xhtml#l00053">Size2D::area()</a>, <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_error_8h_source.xhtml#l00328">ARM_COMPUTE_ERROR_ON_MSG</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00106">HOGInfo::block_stride()</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00131">HOGInfo::descriptor_size()</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00101">HOGInfo::detection_window_size()</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00093">Size2D::height</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00549">DetectionWindow::height</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00550">DetectionWindow::idx_class</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00111">HOGInfo::num_bins()</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00083">HOGInfo::num_block_positions_per_image()</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00067">HOGInfo::num_cells_per_block()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00551">DetectionWindow::score</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="reference_2_threshold_8cpp_source.xhtml#l00035">threshold()</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00092">Size2D::width</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00548">DetectionWindow::width</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00546">DetectionWindow::x</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00547">DetectionWindow::y</a>.</p>
<p class="reference">Referenced by <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml#l00138">hog_multi_detection()</a>.</p>
</div>
</div>
<a id="a14beb45540f52c683f45bada3f6e9aa7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a14beb45540f52c683f45bada3f6e9aa7">&#9670;&nbsp;</a></span>hog_detector() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::vector&lt;<a class="el" href="structarm__compute_1_1_detection_window.xhtml">DetectionWindow</a>&gt; arm_compute::test::validation::reference::hog_detector </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>descriptor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>max_num_detection_windows</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;&#160;</td>
<td class="paramname"><em>hog_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>detection_window_stride</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>threshold</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>idx_class</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a350c5856a7fb88d1cdbd4fb7b4511be3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a350c5856a7fb88d1cdbd4fb7b4511be3">&#9670;&nbsp;</a></span>hog_multi_detection() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="structarm__compute_1_1_detection_window.xhtml">DetectionWindow</a> &gt; hog_multi_detection </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>models</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::vector&lt; float &gt;&gt;&#160;</td>
<td class="paramname"><em>descriptors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>max_num_detection_windows</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>threshold</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>non_maxima_suppression</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>min_distance</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml#l00138">138</a> of file <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml">HOGMultiDetection.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(descriptors.size() != models.size());</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; validate_models(models);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_models = models.size();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// Initialize previous values</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">size_t</span> prev_num_bins = models[0].num_bins();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; Size2D prev_cell_size = models[0].cell_size();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; Size2D prev_block_size = models[0].block_size();</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; Size2D prev_block_stride = models[0].block_stride();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; std::vector&lt;size_t&gt; input_orient_bin;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; std::vector&lt;size_t&gt; input_hog_detect;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; std::vector&lt;std::pair&lt;size_t, size_t&gt;&gt; input_block_norm;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; input_orient_bin.push_back(0);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; input_hog_detect.push_back(0);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; input_block_norm.emplace_back(0, 0);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="comment">// Iterate through the number of models and check if orientation binning</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="comment">// and block normalization steps can be skipped</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 1; i &lt; num_models; ++i)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">size_t</span> cur_num_bins = models[i].num_bins();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; Size2D cur_cell_size = models[i].cell_size();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; Size2D cur_block_size = models[i].block_size();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; Size2D cur_block_stride = models[i].block_stride();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">// Check if binning and normalization steps are required</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span>((cur_num_bins != prev_num_bins) || (cur_cell_size.width != prev_cell_size.width) || (cur_cell_size.height != prev_cell_size.height))</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; prev_num_bins = cur_num_bins;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; prev_cell_size = cur_cell_size;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; prev_block_size = cur_block_size;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; prev_block_stride = cur_block_stride;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">// Compute orientation binning and block normalization. Update input to process</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; input_orient_bin.push_back(i);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; input_block_norm.emplace_back(i, input_orient_bin.size() - 1);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>((cur_block_size.width != prev_block_size.width) || (cur_block_size.height != prev_block_size.height) || (cur_block_stride.width != prev_block_stride.width)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; || (cur_block_stride.height != prev_block_stride.height))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; prev_block_size = cur_block_size;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; prev_block_stride = cur_block_stride;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="comment">// Compute block normalization. Update input to process</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; input_block_norm.emplace_back(i, input_orient_bin.size() - 1);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// Update input to process for hog detector</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; input_hog_detect.push_back(input_block_norm.size() - 1);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordtype">size_t</span> num_orient_bin = input_orient_bin.size();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">size_t</span> num_block_norm = input_block_norm.size();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">size_t</span> num_hog_detect = input_hog_detect.size();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; std::vector&lt;SimpleTensor&lt;float&gt;&gt; hog_spaces(num_orient_bin);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; std::vector&lt;SimpleTensor&lt;float&gt;&gt; hog_norm_spaces(num_block_norm);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">// Calculate derivative</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; SimpleTensor&lt;int16_t&gt; grad_x;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; SimpleTensor&lt;int16_t&gt; grad_y;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; std::tie(grad_x, grad_y) = derivative&lt;int16_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, GradientDimension::GRAD_XY);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">// Calculate magnitude and phase</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; SimpleTensor&lt;int16_t&gt; _mag = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6aa278cb3dd1777e7338c5e573c55550">magnitude</a>(grad_x, grad_y, MagnitudeType::L2NORM);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; SimpleTensor&lt;uint8_t&gt; _phase = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a74991bda4fcca3ce5dcf8afdccdbafff">phase</a>(grad_x, grad_y, models[0].phase_type());</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// Calculate Tensors for the HOG space and orientation binning</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; num_orient_bin; ++i)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> idx_multi_hog = input_orient_bin[i];</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_bins = models[idx_multi_hog].num_bins();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_cells_x = width / models[idx_multi_hog].cell_size().width;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_cells_y = height / models[idx_multi_hog].cell_size().height;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="comment">// TensorShape of hog space</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; TensorShape hog_space_shape(num_cells_x, num_cells_y);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">// Initialise HOG space</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; TensorInfo info_hog_space(hog_space_shape, num_bins, DataType::F32);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; hog_spaces.at(i) = SimpleTensor&lt;float&gt;(info_hog_space.tensor_shape(), DataType::F32, info_hog_space.num_channels());</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// For each cell create histogram based on magnitude and phase</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aed58e449c2d482b55d61ee6bfd0de984">hog_orientation_binning</a>(_mag, _phase, hog_spaces[i], models[idx_multi_hog]);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// Calculate Tensors for the normalized HOG space and block normalization</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; num_block_norm; ++i)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> idx_multi_hog = input_block_norm[i].first;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> idx_orient_bin = input_block_norm[i].second;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// Create tensor info for HOG descriptor</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; TensorInfo tensor_info(models[idx_multi_hog], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y());</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; hog_norm_spaces.at(i) = SimpleTensor&lt;float&gt;(tensor_info.tensor_shape(), DataType::F32, tensor_info.num_channels());</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">// Normalize histograms based on block size</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae01f1c200a32d41a056d513760981326">hog_block_normalization</a>(hog_norm_spaces[i], hog_spaces[idx_orient_bin], models[idx_multi_hog]);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; std::vector&lt;DetectionWindow&gt; multi_windows;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">// Calculate Detection Windows for HOG detector</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; num_hog_detect; ++i)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> idx_block_norm = input_hog_detect[i];</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="comment">// NOTE: Detection window stride fixed to block stride</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">const</span> Size2D detection_window_stride = models[i].block_stride();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; std::vector&lt;DetectionWindow&gt; windows = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a174ee1e2e66053db45c7fb4aa68920e7">hog_detector</a>(hog_norm_spaces[idx_block_norm], descriptors[i],</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; max_num_detection_windows, models[i], detection_window_stride, <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, i);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; multi_windows.insert(multi_windows.end(), windows.begin(), windows.end());</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// Suppress Non-maxima detection windows</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a60e89e48713565425943913adec65294">non_maxima_suppression</a>)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a206dcc57b5f0396164931c3e65f52e20">detection_windows_non_maxima_suppression</a>(multi_windows, min_distance);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> multi_windows;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_aed58e449c2d482b55d61ee6bfd0de984"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aed58e449c2d482b55d61ee6bfd0de984">arm_compute::test::validation::reference::hog_orientation_binning</a></div><div class="ttdeci">void hog_orientation_binning(const SimpleTensor&lt; T &gt; &amp;mag, const SimpleTensor&lt; U &gt; &amp;phase, SimpleTensor&lt; V &gt; &amp;hog_space, const HOGInfo &amp;hog_info)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00117">HOGDescriptor.cpp:117</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a74991bda4fcca3ce5dcf8afdccdbafff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a74991bda4fcca3ce5dcf8afdccdbafff">arm_compute::test::validation::reference::phase</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; phase(const SimpleTensor&lt; T &gt; &amp;gx, const SimpleTensor&lt; T &gt; &amp;gy, PhaseType phase_type)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_phase_8cpp_source.xhtml#l00035">Phase.cpp:35</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a174ee1e2e66053db45c7fb4aa68920e7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a174ee1e2e66053db45c7fb4aa68920e7">arm_compute::test::validation::reference::hog_detector</a></div><div class="ttdeci">std::vector&lt; DetectionWindow &gt; hog_detector(const SimpleTensor&lt; T &gt; &amp;src, const std::vector&lt; T &gt; &amp;descriptor, unsigned int max_num_detection_windows, const HOGInfo &amp;hog_info, const Size2D &amp;detection_window_stride, float threshold, uint16_t idx_class)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_h_o_g_detector_8cpp_source.xhtml#l00048">HOGDetector.cpp:48</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a60e89e48713565425943913adec65294"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a60e89e48713565425943913adec65294">arm_compute::test::validation::reference::non_maxima_suppression</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; non_maxima_suppression(const SimpleTensor&lt; T &gt; &amp;src, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="_non_maxima_suppression_8cpp_source.xhtml#l00038">NonMaximaSuppression.cpp:38</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a206dcc57b5f0396164931c3e65f52e20"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a206dcc57b5f0396164931c3e65f52e20">arm_compute::test::validation::reference::detection_windows_non_maxima_suppression</a></div><div class="ttdeci">void detection_windows_non_maxima_suppression(std::vector&lt; DetectionWindow &gt; &amp;multi_windows, float min_distance)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml#l00060">HOGMultiDetection.cpp:60</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a6cae310822a46019ba25a00ddb0f7e62"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">arm_compute::test::validation::reference::threshold</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; threshold(const SimpleTensor&lt; T &gt; &amp;src, T threshold, T false_value, T true_value, ThresholdType type, T upper)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_threshold_8cpp_source.xhtml#l00035">Threshold.cpp:35</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a6aa278cb3dd1777e7338c5e573c55550"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6aa278cb3dd1777e7338c5e573c55550">arm_compute::test::validation::reference::magnitude</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; magnitude(const SimpleTensor&lt; T &gt; &amp;gx, const SimpleTensor&lt; T &gt; &amp;gy, MagnitudeType magnitude_type)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_magnitude_8cpp_source.xhtml#l00035">Magnitude.cpp:35</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_ae01f1c200a32d41a056d513760981326"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae01f1c200a32d41a056d513760981326">arm_compute::test::validation::reference::hog_block_normalization</a></div><div class="ttdeci">void hog_block_normalization(SimpleTensor&lt; T &gt; &amp;desc, const SimpleTensor&lt; T &gt; &amp;hog_space, const HOGInfo &amp;hog_info)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00174">HOGDescriptor.cpp:174</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml#l00060">detection_windows_non_maxima_suppression()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::F32</a>, <a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7a5515a637eda61b978e97adaa5d7629cc">arm_compute::GRAD_XY</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00093">Size2D::height</a>, <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00174">hog_block_normalization()</a>, <a class="el" href="validation_2reference_2_h_o_g_detector_8cpp_source.xhtml#l00048">hog_detector()</a>, <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00117">hog_orientation_binning()</a>, <a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8aad927ac799e8b24f80fc80d89b2eb7131">arm_compute::L2NORM</a>, <a class="el" href="validation_2reference_2_magnitude_8cpp_source.xhtml#l00035">magnitude()</a>, <a class="el" href="_non_maxima_suppression_8cpp_source.xhtml#l00038">non_maxima_suppression()</a>, <a class="el" href="_tensor_info_8h_source.xhtml#l00248">TensorInfo::num_channels()</a>, <a class="el" href="validation_2reference_2_phase_8cpp_source.xhtml#l00035">phase()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="_tensor_info_8h_source.xhtml#l00252">TensorInfo::tensor_shape()</a>, <a class="el" href="reference_2_threshold_8cpp_source.xhtml#l00035">threshold()</a>, and <a class="el" href="_size2_d_8h_source.xhtml#l00092">Size2D::width</a>.</p>
</div>
</div>
<a id="abd89be5954da617b3031d84c9ebcd81a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd89be5954da617b3031d84c9ebcd81a">&#9670;&nbsp;</a></span>hog_multi_detection() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::vector&lt;<a class="el" href="structarm__compute_1_1_detection_window.xhtml">DetectionWindow</a>&gt; arm_compute::test::validation::reference::hog_multi_detection </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>models</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::vector&lt; float &gt;&gt;&#160;</td>
<td class="paramname"><em>descriptors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>max_num_detection_windows</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>threshold</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>non_maxima_suppression</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>min_distance</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aed58e449c2d482b55d61ee6bfd0de984"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed58e449c2d482b55d61ee6bfd0de984">&#9670;&nbsp;</a></span>hog_orientation_binning() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void hog_orientation_binning </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>mag</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;&#160;</td>
<td class="paramname"><em>phase</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; V &gt; &amp;&#160;</td>
<td class="paramname"><em>hog_space</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;&#160;</td>
<td class="paramname"><em>hog_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00117">117</a> of file <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml">HOGDescriptor.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> Size2D &amp;cell_size = hog_info.cell_size();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_bins = hog_info.num_bins();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> shape_width = hog_space.shape().x() * hog_info.cell_size().width;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> shape_height = hog_space.shape().y() * hog_info.cell_size().height;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; TensorShape cell_shape(cell_size.width, cell_size.height);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; SimpleTensor&lt;V&gt; mag_cell(cell_shape, DataType::F32);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; SimpleTensor&lt;V&gt; phase_cell(cell_shape, DataType::F32);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">int</span> cell_idx = 0;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">int</span> y_offset = 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// Traverse shape</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> sy = cell_size.height; sy &lt;= shape_height; sy += cell_size.height)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">int</span> x_offset = 0;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> sx = cell_size.width; sx &lt;= shape_width; sx += cell_size.width)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">int</span> row_idx = 0;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordtype">int</span> elem_idx = 0;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// Traverse cell</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> y = 0u; y &lt; cell_size.height; ++y)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> x = 0u; x &lt; cell_size.width; ++x)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordtype">int</span> shape_idx = x + row_idx + x_offset + y_offset;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; mag_cell[elem_idx] = mag[shape_idx];</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; phase_cell[elem_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a74991bda4fcca3ce5dcf8afdccdbafff">phase</a>[shape_idx];</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; elem_idx++;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; row_idx += shape_width;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// Partition magnitude values into bins based on phase values</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; std::vector&lt;V&gt; bins(num_bins);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; hog_orientation_compute(mag_cell, phase_cell, bins, hog_info);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; num_bins; ++i)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; hog_space[cell_idx * num_bins + i] = bins[i];</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; x_offset += cell_size.width;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; cell_idx++;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; y_offset += (cell_size.height * shape_width);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a74991bda4fcca3ce5dcf8afdccdbafff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a74991bda4fcca3ce5dcf8afdccdbafff">arm_compute::test::validation::reference::phase</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; phase(const SimpleTensor&lt; T &gt; &amp;gx, const SimpleTensor&lt; T &gt; &amp;gy, PhaseType phase_type)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_phase_8cpp_source.xhtml#l00035">Phase.cpp:35</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00091">HOGInfo::cell_size()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::F32</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00093">Size2D::height</a>, <a class="el" href="_h_o_g_info_8cpp_source.xhtml#l00111">HOGInfo::num_bins()</a>, <a class="el" href="validation_2reference_2_phase_8cpp_source.xhtml#l00035">phase()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="_size2_d_8h_source.xhtml#l00092">Size2D::width</a>.</p>
<p class="reference">Referenced by <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00226">hog_descriptor()</a>, and <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml#l00138">hog_multi_detection()</a>.</p>
</div>
</div>
<a id="af9b136833d189cdd3b4b600d086e3df8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9b136833d189cdd3b4b600d086e3df8">&#9670;&nbsp;</a></span>hog_orientation_binning() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void arm_compute::test::validation::reference::hog_orientation_binning </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>mag</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>phase</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>hog_space</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_h_o_g_info.xhtml">HOGInfo</a> &amp;&#160;</td>
<td class="paramname"><em>hog_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a77f0a04bc3f800ccd330df1170e76344"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77f0a04bc3f800ccd330df1170e76344">&#9670;&nbsp;</a></span>im2col() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void im2col </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>kernel_dims</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>has_bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_im2_col_8cpp_source.xhtml#l00142">142</a> of file <a class="el" href="reference_2_im2_col_8cpp_source.xhtml">Im2Col.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_layout())</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">case</span> DataLayout::NCHW:</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad986200da9376a05059064b4e0372445">im2col_nchw</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, kernel_dims, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">conv_info</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">case</span> DataLayout::NHWC:</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a676e94ff38d81a5794e2bf69008c5137">im2col_nhwc</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, kernel_dims, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">conv_info</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Not supported.&quot;</span>);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_ad986200da9376a05059064b4e0372445"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad986200da9376a05059064b4e0372445">arm_compute::test::validation::reference::im2col_nchw</a></div><div class="ttdeci">void im2col_nchw(const SimpleTensor&lt; T &gt; &amp;src, SimpleTensor&lt; T &gt; &amp;dst, const Size2D &amp;kernel_dims, const PadStrideInfo &amp;conv_info, bool has_bias, unsigned int num_groups)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_im2_col_8cpp_source.xhtml#l00039">Im2Col.cpp:39</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a2270b3e1d20651d2d8341c858c890830"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">arm_compute::test::validation::num_groups</a></div><div class="ttdeci">const unsigned int num_groups</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">Im2Col.cpp:148</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a676e94ff38d81a5794e2bf69008c5137"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a676e94ff38d81a5794e2bf69008c5137">arm_compute::test::validation::reference::im2col_nhwc</a></div><div class="ttdeci">void im2col_nhwc(const SimpleTensor&lt; T &gt; &amp;src, SimpleTensor&lt; T &gt; &amp;dst, const Size2D &amp;kernel_dims, const PadStrideInfo &amp;conv_info, bool has_bias)</div><div class="ttdef"><b>Definition:</b> <a href="reference_2_im2_col_8cpp_source.xhtml#l00093">Im2Col.cpp:93</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a9aeced5a5128f60a31ea3e327a45ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">arm_compute::test::validation::has_bias</a></div><div class="ttdeci">const bool has_bias</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00147">Im2Col.cpp:147</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a548b2da4872df2c11721b7068cab5b8a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">arm_compute::test::validation::conv_info</a></div><div class="ttdeci">const PadStrideInfo conv_info(1U, 1U, 0U, 0U)</div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00599">arm_compute::test::validation::conv_info</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00147">arm_compute::test::validation::has_bias</a>, <a class="el" href="reference_2_im2_col_8cpp_source.xhtml#l00039">im2col_nchw()</a>, <a class="el" href="reference_2_im2_col_8cpp_source.xhtml#l00093">im2col_nhwc()</a>, <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">arm_compute::NCHW</a>, <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">arm_compute::NHWC</a>, <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">arm_compute::test::validation::num_groups</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a53c6c871275a6e678cdc9e6f2d9ee872"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a53c6c871275a6e678cdc9e6f2d9ee872">&#9670;&nbsp;</a></span>im2col() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void arm_compute::test::validation::reference::im2col </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>kernel_dims</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>has_bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad77dc54e222c3f36e9de88a70b6572af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad77dc54e222c3f36e9de88a70b6572af">&#9670;&nbsp;</a></span>im2col() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void arm_compute::test::validation::reference::im2col </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>kernel_dims</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>has_bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad6895d72078004becb83ec54725ff384"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6895d72078004becb83ec54725ff384">&#9670;&nbsp;</a></span>im2col() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template void arm_compute::test::validation::reference::im2col </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>kernel_dims</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>has_bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad986200da9376a05059064b4e0372445"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad986200da9376a05059064b4e0372445">&#9670;&nbsp;</a></span>im2col_nchw()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void arm_compute::test::validation::reference::im2col_nchw </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>kernel_dims</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>has_bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_im2_col_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="reference_2_im2_col_8cpp_source.xhtml">Im2Col.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_layout() != DataLayout::NCHW);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride_x = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">conv_info</a>.<a class="code" href="classarm__compute_1_1_pad_stride_info.xhtml#a6e324c1bd1111876469ea247da156147">stride</a>().first;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride_y = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">conv_info</a>.<a class="code" href="classarm__compute_1_1_pad_stride_info.xhtml#a6e324c1bd1111876469ea247da156147">stride</a>().second;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> kernel_width = kernel_dims.width;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> kernel_height = kernel_dims.height;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_x = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">conv_info</a>.<a class="code" href="classarm__compute_1_1_pad_stride_info.xhtml#ae33ab50602da54038611e30d5013c040">pad</a>().first;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_y = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">conv_info</a>.<a class="code" href="classarm__compute_1_1_pad_stride_info.xhtml#ae33ab50602da54038611e30d5013c040">pad</a>().second;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> src_width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> src_height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> src_channels = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().z();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> batches = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size_upper(3);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> dst_height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().y();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_val = <a class="code" href="namespacearm__compute.xhtml#a14f46283f316e7f0fad301d5c1507e9f">is_data_type_quantized_asymmetric</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type()) ? <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info().uniform().offset : 0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">int</span> dst_idx = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">// Compute width and height of the convolved tensors</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; std::pair&lt;unsigned int, unsigned int&gt; convolved_dims = <a class="code" href="namespacearm__compute.xhtml#abbe3399a66c35c3c353030cd0a84c936">scaled_dimensions</a>(src_width, src_height, kernel_dims.width, kernel_dims.height, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">conv_info</a>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> &lt; batches; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> g = 0; g &lt; static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>); ++g)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> first_group_ch = g * (src_channels / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> last_group_ch = (g + 1) * (src_channels / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> yo = 0; yo &lt; dst_height; ++yo)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">// Compute input spatial coordinates</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xi = (yo % convolved_dims.first) * stride_x;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yi = (yo / convolved_dims.first) * stride_y;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ci = first_group_ch; ci &lt; last_group_ch; ++ci)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> yk = 0; yk &lt; kernel_height; ++yk)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> xk = 0; xk &lt; kernel_width; ++xk)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[dst_idx++] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, Coordinates(xi + xk - pad_x, yi + yk - pad_y, ci, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>), BorderMode::CONSTANT, static_cast&lt;T&gt;(pad_val));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a>)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[dst_idx++] = static_cast&lt;T&gt;(1);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_abbe3399a66c35c3c353030cd0a84c936"><div class="ttname"><a href="namespacearm__compute.xhtml#abbe3399a66c35c3c353030cd0a84c936">arm_compute::scaled_dimensions</a></div><div class="ttdeci">std::pair&lt; unsigned int, unsigned int &gt; scaled_dimensions(unsigned int width, unsigned int height, unsigned int kernel_width, unsigned int kernel_height, const PadStrideInfo &amp;pad_stride_info, const Size2D &amp;dilation=Size2D(1U, 1U))</div><div class="ttdoc">Returns expected width and height of output scaled tensor depending on dimensions rounding mode.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_utils_8cpp_source.xhtml#l00387">Utils.cpp:387</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a2270b3e1d20651d2d8341c858c890830"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">arm_compute::test::validation::num_groups</a></div><div class="ttdeci">const unsigned int num_groups</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">Im2Col.cpp:148</a></div></div>
<div class="ttc" id="classarm__compute_1_1_pad_stride_info_xhtml_a6e324c1bd1111876469ea247da156147"><div class="ttname"><a href="classarm__compute_1_1_pad_stride_info.xhtml#a6e324c1bd1111876469ea247da156147">arm_compute::PadStrideInfo::stride</a></div><div class="ttdeci">std::pair&lt; unsigned int, unsigned int &gt; stride() const</div><div class="ttdoc">Get the stride.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00724">Types.h:724</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a9aeced5a5128f60a31ea3e327a45ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">arm_compute::test::validation::has_bias</a></div><div class="ttdeci">const bool has_bias</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00147">Im2Col.cpp:147</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a14f46283f316e7f0fad301d5c1507e9f"><div class="ttname"><a href="namespacearm__compute.xhtml#a14f46283f316e7f0fad301d5c1507e9f">arm_compute::is_data_type_quantized_asymmetric</a></div><div class="ttdeci">bool is_data_type_quantized_asymmetric(DataType dt)</div><div class="ttdoc">Check if a given data type is of asymmetric quantized type.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_utils_8h_source.xhtml#l01030">Utils.h:1030</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a548b2da4872df2c11721b7068cab5b8a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">arm_compute::test::validation::conv_info</a></div><div class="ttdeci">const PadStrideInfo conv_info(1U, 1U, 0U, 0U)</div></div>
<div class="ttc" id="classarm__compute_1_1_pad_stride_info_xhtml_ae33ab50602da54038611e30d5013c040"><div class="ttname"><a href="classarm__compute_1_1_pad_stride_info.xhtml#ae33ab50602da54038611e30d5013c040">arm_compute::PadStrideInfo::pad</a></div><div class="ttdeci">std::pair&lt; unsigned int, unsigned int &gt; pad() const</div><div class="ttdoc">Get the padding.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00742">Types.h:742</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91a8d6b5cada83510220f59e00ce86d4d92">arm_compute::CONSTANT</a>, <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00599">arm_compute::test::validation::conv_info</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00147">arm_compute::test::validation::has_bias</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00093">Size2D::height</a>, <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l01030">arm_compute::is_data_type_quantized_asymmetric()</a>, <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">arm_compute::NCHW</a>, <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">arm_compute::test::validation::num_groups</a>, <a class="el" href="src_2core_2_utils_8cpp_source.xhtml#l00387">arm_compute::scaled_dimensions()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, and <a class="el" href="_size2_d_8h_source.xhtml#l00092">Size2D::width</a>.</p>
<p class="reference">Referenced by <a class="el" href="reference_2_im2_col_8cpp_source.xhtml#l00142">im2col()</a>.</p>
</div>
</div>
<a id="a676e94ff38d81a5794e2bf69008c5137"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a676e94ff38d81a5794e2bf69008c5137">&#9670;&nbsp;</a></span>im2col_nhwc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void arm_compute::test::validation::reference::im2col_nhwc </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>kernel_dims</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>has_bias</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_im2_col_8cpp_source.xhtml#l00093">93</a> of file <a class="el" href="reference_2_im2_col_8cpp_source.xhtml">Im2Col.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_layout() != DataLayout::NHWC);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride_x = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">conv_info</a>.<a class="code" href="classarm__compute_1_1_pad_stride_info.xhtml#a6e324c1bd1111876469ea247da156147">stride</a>().first;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride_y = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">conv_info</a>.<a class="code" href="classarm__compute_1_1_pad_stride_info.xhtml#a6e324c1bd1111876469ea247da156147">stride</a>().second;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> kernel_width = kernel_dims.width;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> kernel_height = kernel_dims.height;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_x = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">conv_info</a>.<a class="code" href="classarm__compute_1_1_pad_stride_info.xhtml#ae33ab50602da54038611e30d5013c040">pad</a>().first;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_y = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">conv_info</a>.<a class="code" href="classarm__compute_1_1_pad_stride_info.xhtml#ae33ab50602da54038611e30d5013c040">pad</a>().second;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> src_width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> src_height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().z();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> src_channels = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> batches = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size_upper(3);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> dst_width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a> ? <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().x() - 1 : <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().x();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> dst_height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().y();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_val = <a class="code" href="namespacearm__compute.xhtml#a14f46283f316e7f0fad301d5c1507e9f">is_data_type_quantized_asymmetric</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type()) ? <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info().uniform().offset : 0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="comment">// Compute width and height of the convolved tensors</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; std::pair&lt;unsigned int, unsigned int&gt; convolved_dims = <a class="code" href="namespacearm__compute.xhtml#abbe3399a66c35c3c353030cd0a84c936">scaled_dimensions</a>(src_width, src_height, kernel_dims.width, kernel_dims.height, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">conv_info</a>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> &lt; batches; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> yo = 0; yo &lt; dst_height; ++yo)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// Compute input spatial coordinates</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xi = (yo % convolved_dims.first) * stride_x;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yi = (yo / convolved_dims.first) * stride_y;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ci = 0; ci &lt; src_channels; ++ci)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> yk = 0; yk &lt; kernel_height; ++yk)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> xk = 0; xk &lt; kernel_width; ++xk)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[ci + (xk + yk * kernel_width) * src_channels + yo * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().x() + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().x() * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().y()] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, Coordinates(ci, xi + xk - pad_x, yi + yk - pad_y, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>),</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; BorderMode::CONSTANT, static_cast&lt;T&gt;(pad_val));</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a>)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[dst_width + yo * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().x() + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().x() * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().y()] = static_cast&lt;T&gt;(1);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_abbe3399a66c35c3c353030cd0a84c936"><div class="ttname"><a href="namespacearm__compute.xhtml#abbe3399a66c35c3c353030cd0a84c936">arm_compute::scaled_dimensions</a></div><div class="ttdeci">std::pair&lt; unsigned int, unsigned int &gt; scaled_dimensions(unsigned int width, unsigned int height, unsigned int kernel_width, unsigned int kernel_height, const PadStrideInfo &amp;pad_stride_info, const Size2D &amp;dilation=Size2D(1U, 1U))</div><div class="ttdoc">Returns expected width and height of output scaled tensor depending on dimensions rounding mode.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_utils_8cpp_source.xhtml#l00387">Utils.cpp:387</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="classarm__compute_1_1_pad_stride_info_xhtml_a6e324c1bd1111876469ea247da156147"><div class="ttname"><a href="classarm__compute_1_1_pad_stride_info.xhtml#a6e324c1bd1111876469ea247da156147">arm_compute::PadStrideInfo::stride</a></div><div class="ttdeci">std::pair&lt; unsigned int, unsigned int &gt; stride() const</div><div class="ttdoc">Get the stride.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00724">Types.h:724</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a9aeced5a5128f60a31ea3e327a45ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">arm_compute::test::validation::has_bias</a></div><div class="ttdeci">const bool has_bias</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00147">Im2Col.cpp:147</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a14f46283f316e7f0fad301d5c1507e9f"><div class="ttname"><a href="namespacearm__compute.xhtml#a14f46283f316e7f0fad301d5c1507e9f">arm_compute::is_data_type_quantized_asymmetric</a></div><div class="ttdeci">bool is_data_type_quantized_asymmetric(DataType dt)</div><div class="ttdoc">Check if a given data type is of asymmetric quantized type.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_utils_8h_source.xhtml#l01030">Utils.h:1030</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a548b2da4872df2c11721b7068cab5b8a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a548b2da4872df2c11721b7068cab5b8a">arm_compute::test::validation::conv_info</a></div><div class="ttdeci">const PadStrideInfo conv_info(1U, 1U, 0U, 0U)</div></div>
<div class="ttc" id="classarm__compute_1_1_pad_stride_info_xhtml_ae33ab50602da54038611e30d5013c040"><div class="ttname"><a href="classarm__compute_1_1_pad_stride_info.xhtml#ae33ab50602da54038611e30d5013c040">arm_compute::PadStrideInfo::pad</a></div><div class="ttdeci">std::pair&lt; unsigned int, unsigned int &gt; pad() const</div><div class="ttdoc">Get the padding.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00742">Types.h:742</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91a8d6b5cada83510220f59e00ce86d4d92">arm_compute::CONSTANT</a>, <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00599">arm_compute::test::validation::conv_info</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00147">arm_compute::test::validation::has_bias</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00093">Size2D::height</a>, <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l01030">arm_compute::is_data_type_quantized_asymmetric()</a>, <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">arm_compute::NHWC</a>, <a class="el" href="src_2core_2_utils_8cpp_source.xhtml#l00387">arm_compute::scaled_dimensions()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, and <a class="el" href="_size2_d_8h_source.xhtml#l00092">Size2D::width</a>.</p>
<p class="reference">Referenced by <a class="el" href="reference_2_im2_col_8cpp_source.xhtml#l00142">im2col()</a>.</p>
</div>
</div>
<a id="a6d4691ec28061cbb6e38600f5f78a9bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d4691ec28061cbb6e38600f5f78a9bf">&#9670;&nbsp;</a></span>integral_image() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; integral_image </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_integral_image_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="validation_2reference_2_integral_image_8cpp_source.xhtml">IntegralImage.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SimpleTensor&lt;uint32_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), DataType::U32);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// Length of dimensions</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> depth = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size_upper(2);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> image_size = width * height;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> z = 0; z &lt; depth; ++z)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">size_t</span> current_image = z * image_size;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">//First element of each image</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[current_image] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[current_image];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// First row of each image (add only pixel on the left)</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> x = 1; x &lt; width; ++x)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[current_image + x] = static_cast&lt;uint32_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[current_image + x]) + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[current_image + x - 1];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// Subsequent rows</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> y = 1; y &lt; height; ++y)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">size_t</span> current_row = current_image + (width * y);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// First element of each row (add only pixel up)</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[current_row] = static_cast&lt;uint32_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[current_row]) + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[current_row - width];</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// Following row elements</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> x = 1; x &lt; width; ++x)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">size_t</span> current_pixel = current_row + x;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">// out = in + up(out) + left(out) - up_left(out)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[current_pixel] = static_cast&lt;uint32_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[current_pixel]) + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[current_pixel - 1]</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[current_pixel - width] - <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[current_pixel - width - 1];</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">arm_compute::U32</a>.</p>
</div>
</div>
<a id="a751a624d19add33a7c81b6260386d550"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a751a624d19add33a7c81b6260386d550">&#9670;&nbsp;</a></span>integral_image() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint32_t&gt; arm_compute::test::validation::reference::integral_image </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a238d3ab8cdae100387631d6491204c6b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a238d3ab8cdae100387631d6491204c6b">&#9670;&nbsp;</a></span>l2_normalize() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; l2_normalize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_l2_normalize_layer_8cpp_source.xhtml#l00051">51</a> of file <a class="el" href="validation_2reference_2_l2_normalize_layer_8cpp_source.xhtml">L2NormalizeLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type() };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">// Reduce across given axis</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a> = reduction_operation&lt;T, T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, get_output_shape(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, ReductionOperation::SUM_SQUARE);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> upper_dims = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size_upper(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a> + 1);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> lower_dims = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size_lower(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a> + 1);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> lower_dims_sum = <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>.shape().total_size_lower(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a> + 1);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> du = 0; du &lt; upper_dims; ++du)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> T *src_row_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data() + du * lower_dims;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; T *dst_row_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data() + du * lower_dims;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> elems = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0];</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> T normalization_value = sqrt(std::max(<a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>[du], static_cast&lt;T&gt;(<a class="code" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; std::transform(src_row_ptr, src_row_ptr + elems, dst_row_ptr, [normalization_value](T val)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> val / normalization_value;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; });</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ld = 0; ld &lt; lower_dims; ++ld)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">const</span> T normalization_value = sqrt(std::max(<a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>[ld % lower_dims_sum + du * lower_dims_sum], static_cast&lt;T&gt;(<a class="code" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>)));</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; dst_row_ptr[ld] = src_row_ptr[ld] / normalization_value;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Axis not supported&quot;</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="reduction__operation_8cl_xhtml_ab0df00f5333da51860deb93deb44a782"><div class="ttname"><a href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a></div><div class="ttdeci">DATA_TYPE sum(__global const DATA_TYPE *input)</div><div class="ttdoc">Calculate sum of a vector.</div><div class="ttdef"><b>Definition:</b> <a href="reduction__operation_8cl_source.xhtml#l00065">reduction_operation.cl:65</a></div></div>
<div class="ttc" id="_asymm_helpers_8cpp_xhtml_a552dc3787d7ea1675f3e4e8993501d58"><div class="ttname"><a href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a></div><div class="ttdeci">constexpr float epsilon</div><div class="ttdef"><b>Definition:</b> <a href="_asymm_helpers_8cpp_source.xhtml#l00033">AsymmHelpers.cpp:33</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_accc088009d44c521706aa98d6387ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">arm_compute::test::validation::axis</a></div><div class="ttdeci">axis</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">StackLayer.cpp:226</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">arm_compute::test::validation::axis</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_asymm_helpers_8cpp_source.xhtml#l00033">epsilon</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="reduction__operation_8cl_source.xhtml#l00065">sum()</a>, and <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45ba2ce6e134b828b72fad160fa17c8d1b64">arm_compute::SUM_SQUARE</a>.</p>
</div>
</div>
<a id="af0e1f08a54d6896f4d1e7b5ee7f54852"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0e1f08a54d6896f4d1e7b5ee7f54852">&#9670;&nbsp;</a></span>l2_normalize() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::l2_normalize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a194b7346b3a91ac2e895ffc2a71df59f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a194b7346b3a91ac2e895ffc2a71df59f">&#9670;&nbsp;</a></span>l2_normalize() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::l2_normalize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9690bfc083c18c7ec979778313b4a31a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9690bfc083c18c7ec979778313b4a31a">&#9670;&nbsp;</a></span>laplacian_pyramid() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &gt; laplacian_pyramid </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>num_levels</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_laplacian_pyramid_8cpp_source.xhtml#l00040">40</a> of file <a class="el" href="validation_2reference_2_laplacian_pyramid_8cpp_source.xhtml">LaplacianPyramid.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::vector&lt;SimpleTensor&lt;T&gt;&gt; pyramid_conv;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; std::vector&lt;SimpleTensor&lt;U&gt;&gt; pyramid_dst;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// First, a Gaussian pyramid with SCALE_PYRAMID_HALF is created</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; std::vector&lt;SimpleTensor&lt;T&gt;&gt; gaussian_level_pyramid = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a42c972f3c96f7c91c57a7aaf2068fddf">reference::gaussian_pyramid_half</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, num_levels);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// For each level i, the corresponding image Ii is blurred with Gaussian 5x5</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// filter, and the difference between the two images is the corresponding</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// level Li of the Laplacian pyramid</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; num_levels; ++i)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> SimpleTensor&lt;T&gt; level_filtered = <a class="code" href="cl__convolution_8cpp.xhtml#a1ff25aea7e858eb83e7af7cefb60bb82">reference::gaussian5x5</a>(gaussian_level_pyramid[i], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; pyramid_conv.push_back(level_filtered);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> SimpleTensor&lt;U&gt; level_filtered_converted = depth_convert&lt;T, U&gt;(level_filtered, DataType::S16, ConvertPolicy::WRAP, 0);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> SimpleTensor&lt;U&gt; gaussian_level_converted = depth_convert&lt;T, U&gt;(gaussian_level_pyramid[i], DataType::S16, ConvertPolicy::WRAP, 0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> SimpleTensor&lt;U&gt; level_sub = reference::arithmetic_operation&lt;U&gt;(<a class="code" href="elementwise__operation_8cl.xhtml#aafc2c4f262a0686c07f86c7d2e1d8d14">reference::ArithmeticOperation::SUB</a>, gaussian_level_converted, level_filtered_converted, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data_type(), ConvertPolicy::WRAP);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; pyramid_dst.push_back(level_sub);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// Return the lowest resolution image and the pyramid</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = depth_convert&lt;T, U&gt;(pyramid_conv[num_levels - 1], DataType::S16, ConvertPolicy::WRAP, 0);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> pyramid_dst;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div><div class="ttc" id="elementwise__operation_8cl_xhtml_aafc2c4f262a0686c07f86c7d2e1d8d14"><div class="ttname"><a href="elementwise__operation_8cl.xhtml#aafc2c4f262a0686c07f86c7d2e1d8d14">SUB</a></div><div class="ttdeci">#define SUB(x, y)</div><div class="ttdef"><b>Definition:</b> <a href="elementwise__operation_8cl_source.xhtml#l00033">elementwise_operation.cl:33</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="cl__convolution_8cpp_xhtml_a1ff25aea7e858eb83e7af7cefb60bb82"><div class="ttname"><a href="cl__convolution_8cpp.xhtml#a1ff25aea7e858eb83e7af7cefb60bb82">gaussian5x5</a></div><div class="ttdeci">const std::array&lt; int16_t, 25 &gt; gaussian5x5</div><div class="ttdoc">Gaussian 5x5 matrix.</div><div class="ttdef"><b>Definition:</b> <a href="cl__convolution_8cpp_source.xhtml#l00048">cl_convolution.cpp:48</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a42c972f3c96f7c91c57a7aaf2068fddf"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a42c972f3c96f7c91c57a7aaf2068fddf">arm_compute::test::validation::reference::gaussian_pyramid_half</a></div><div class="ttdeci">std::vector&lt; SimpleTensor&lt; T &gt; &gt; gaussian_pyramid_half(const SimpleTensor&lt; T &gt; &amp;src, BorderMode border_mode, uint8_t constant_border_value, size_t num_levels)</div><div class="ttdef"><b>Definition:</b> <a href="_gaussian_pyramid_half_8cpp_source.xhtml#l00041">GaussianPyramidHalf.cpp:41</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="reference_2_gaussian5x5_8cpp_source.xhtml#l00038">gaussian5x5()</a>, <a class="el" href="_gaussian_pyramid_half_8cpp_source.xhtml#l00041">gaussian_pyramid_half()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">arm_compute::S16</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8aea241dd841abade20fcb27b8a9f494e1eb">SUB</a>, and <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fae1c8555fcf0ea2bb648a6fd527d658c0">arm_compute::WRAP</a>.</p>
<p class="reference">Referenced by <a class="el" href="validation_2_c_l_2_laplacian_reconstruct_8cpp_source.xhtml#l00071">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="a003f24c0e07ebd5b89e1f2ada836c56d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a003f24c0e07ebd5b89e1f2ada836c56d">&#9670;&nbsp;</a></span>laplacian_pyramid() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::vector&lt;<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; &gt; arm_compute::test::validation::reference::laplacian_pyramid </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>num_levels</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="validation_2_c_l_2_laplacian_pyramid_8cpp_source.xhtml#l00081">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="ab0a9e8fb83e2019bcd3d8ce483a98b7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0a9e8fb83e2019bcd3d8ce483a98b7a">&#9670;&nbsp;</a></span>laplacian_reconstruct() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; laplacian_reconstruct </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>pyramid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>low_res</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_laplacian_reconstruct_8cpp_source.xhtml#l00040">40</a> of file <a class="el" href="validation_2reference_2_laplacian_reconstruct_8cpp_source.xhtml">LaplacianReconstruct.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::vector&lt;SimpleTensor&lt;T&gt;&gt; tmp_pyramid(pyramid);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> last_level = pyramid.size() - 1;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a> = low_res.data_type();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// input + L(n-1)</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; tmp_pyramid[last_level] = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acf9af191573bdcb8e1b0be4b10ba5954">reference::arithmetic_operation</a>(<a class="code" href="elementwise__operation_8cl.xhtml#af3b709fb668cf93ca09e2a46a2a031a8">reference::ArithmeticOperation::ADD</a>, low_res, pyramid[last_level], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a>, ConvertPolicy::SATURATE);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// Scale levels n-1 to 1, and add levels n-2 to 0</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = last_level; i-- &gt; 0;)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> scale_x = static_cast&lt;float&gt;(tmp_pyramid[i].<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>().x()) / tmp_pyramid[i + 1].shape().x();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> scale_y = static_cast&lt;float&gt;(tmp_pyramid[i].<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>().y()) / tmp_pyramid[i + 1].shape().y();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; tmp_pyramid[i] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">reference::scale</a>(tmp_pyramid[i + 1], scale_x, scale_y, InterpolationPolicy::NEAREST_NEIGHBOR,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, SamplingPolicy::CENTER, <span class="keyword">false</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; tmp_pyramid[i] = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acf9af191573bdcb8e1b0be4b10ba5954">reference::arithmetic_operation</a>(<a class="code" href="elementwise__operation_8cl.xhtml#af3b709fb668cf93ca09e2a46a2a031a8">reference::ArithmeticOperation::ADD</a>, tmp_pyramid[i], pyramid[i], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a>, ConvertPolicy::SATURATE);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> reference::depth_convert&lt;T, U&gt;(tmp_pyramid[0], DataType::U8, ConvertPolicy::SATURATE, 0);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a45cde9abb508c62d67c3bb2b9bf566a5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">arm_compute::test::validation::shape</a></div><div class="ttdeci">shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00097">AbsoluteDifference.cpp:97</a></div></div>
<div class="ttc" id="elementwise__operation_8cl_xhtml_af3b709fb668cf93ca09e2a46a2a031a8"><div class="ttname"><a href="elementwise__operation_8cl.xhtml#af3b709fb668cf93ca09e2a46a2a031a8">ADD</a></div><div class="ttdeci">#define ADD(x, y)</div><div class="ttdoc">List of all the operations supported by this kernel.</div><div class="ttdef"><b>Definition:</b> <a href="elementwise__operation_8cl_source.xhtml#l00032">elementwise_operation.cl:32</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_acf9af191573bdcb8e1b0be4b10ba5954"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acf9af191573bdcb8e1b0be4b10ba5954">arm_compute::test::validation::reference::arithmetic_operation</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; arithmetic_operation(ArithmeticOperation op, const SimpleTensor&lt; T &gt; &amp;src1, const SimpleTensor&lt; T &gt; &amp;src2, SimpleTensor&lt; T &gt; &amp;dst, ConvertPolicy convert_policy)</div><div class="ttdef"><b>Definition:</b> <a href="_arithmetic_operations_8cpp_source.xhtml#l00089">ArithmeticOperations.cpp:89</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5f5b6c4337eac9e2e0046ca2304d80dc"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">arm_compute::test::validation::data_type</a></div><div class="ttdeci">data_type</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00135">ArithmeticAddition.cpp:135</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00074">Types.h:74</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a23d9f0c01c9e120dfb828ee922b7a8aea9eeb52badb613229884838847294b90d">ADD</a>, <a class="el" href="_arithmetic_operations_8cpp_source.xhtml#l00089">arithmetic_operation()</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7bac397289ee45877be0cd49811fe245b4e">arm_compute::CENTER</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00135">arm_compute::test::validation::data_type</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">arm_compute::NEAREST_NEIGHBOR</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fa4729d95f983955f0d93a30179deb2b86">arm_compute::SATURATE</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00097">arm_compute::test::validation::shape</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">arm_compute::U8</a>.</p>
</div>
</div>
<a id="a4794e4b738ec7107c503c2b67c63d28c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4794e4b738ec7107c503c2b67c63d28c">&#9670;&nbsp;</a></span>laplacian_reconstruct() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::laplacian_reconstruct </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>pyramid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>low_res</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int16_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="validation_2_c_l_2_laplacian_reconstruct_8cpp_source.xhtml#l00071">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="ac2ec089a63eb5f7980a98d7ac1ef8377"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2ec089a63eb5f7980a98d7ac1ef8377">&#9670;&nbsp;</a></span>locally_connected() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; locally_connected </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; TB &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_locally_connected_8cpp_source.xhtml#l00041">41</a> of file <a class="el" href="reference_2_locally_connected_8cpp_source.xhtml">LocallyConnected.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info() };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_in = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_in = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth_in = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().z();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_out = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().x();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_out = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().y();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth_out = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().z();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_weights = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().x();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_weights = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().y();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth_weights = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>.shape().z();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_left = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pad_left();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_top = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pad_top();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride_xi = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.stride().first;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride_yi = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.stride().second;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">auto</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a070db4c72c3c16c9618af176f5fdf7bc">output_wh</a> = <a class="code" href="namespacearm__compute.xhtml#abbe3399a66c35c3c353030cd0a84c936">scaled_dimensions</a>(width_in, height_in, width_weights, height_weights, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start_xi = width_weights / 2 - pad_left;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start_yi = height_weights / 2 - pad_top;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> end_xi = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a070db4c72c3c16c9618af176f5fdf7bc">output_wh</a>.first * stride_xi;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> end_yi = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a070db4c72c3c16c9618af176f5fdf7bc">output_wh</a>.second * stride_yi;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batches = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size() / (width_in * height_in * depth_in);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; num_batches; ++r)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">int</span> count = 0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> yi = start_yi; yi &lt; start_yi + end_yi; yi += stride_yi)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> xi = start_xi; xi &lt; start_xi + end_xi; xi += stride_xi)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ofm = 0; ofm &lt; depth_out; ++ofm)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">// Compute input and output offsets</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_in = r * width_in * height_in * depth_in;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xo = (xi - start_xi) / stride_xi;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yo = (yi - start_yi) / stride_yi;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_out = xo + yo * width_out + ofm * width_out * height_out + r * width_out * height_out * depth_out;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="_asserts_8h.xhtml#a83bf33add9b97f6897b7b3db2766dd27">ARM_COMPUTE_ASSERT</a>(xo &lt; width_out);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="_asserts_8h.xhtml#a83bf33add9b97f6897b7b3db2766dd27">ARM_COMPUTE_ASSERT</a>(yo &lt; height_out);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">// Compute 3D convolution</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1convolution__3d_1_1detail.xhtml#a74dc80546816db5f19029d6819a8bfee">convolution_3d::detail::convolution3d</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">weights</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">bias</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; offset_in, count * width_weights * height_weights * depth_weights, count, offset_out,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; xi, yi,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; width_in, height_in, depth_in,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; width_weights, height_weights);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; count++;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a070db4c72c3c16c9618af176f5fdf7bc"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a070db4c72c3c16c9618af176f5fdf7bc">arm_compute::test::validation::output_wh</a></div><div class="ttdeci">const auto output_wh</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00163">DFT.cpp:163</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_abbe3399a66c35c3c353030cd0a84c936"><div class="ttname"><a href="namespacearm__compute.xhtml#abbe3399a66c35c3c353030cd0a84c936">arm_compute::scaled_dimensions</a></div><div class="ttdeci">std::pair&lt; unsigned int, unsigned int &gt; scaled_dimensions(unsigned int width, unsigned int height, unsigned int kernel_width, unsigned int kernel_height, const PadStrideInfo &amp;pad_stride_info, const Size2D &amp;dilation=Size2D(1U, 1U))</div><div class="ttdoc">Returns expected width and height of output scaled tensor depending on dimensions rounding mode.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_utils_8cpp_source.xhtml#l00387">Utils.cpp:387</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a3a77be8aebd8e00522b32061d46ccdbd"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a3a77be8aebd8e00522b32061d46ccdbd">arm_compute::test::validation::bias</a></div><div class="ttdeci">CLTensor bias</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">ConvolutionLayer.cpp:181</a></div></div>
<div class="ttc" id="_asserts_8h_xhtml_a83bf33add9b97f6897b7b3db2766dd27"><div class="ttname"><a href="_asserts_8h.xhtml#a83bf33add9b97f6897b7b3db2766dd27">ARM_COMPUTE_ASSERT</a></div><div class="ttdeci">#define ARM_COMPUTE_ASSERT(X)</div><div class="ttdef"><b>Definition:</b> <a href="_asserts_8h_source.xhtml#l00110">Asserts.h:110</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a64a08a9fec5aeee8650e7182b6d171d0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a64a08a9fec5aeee8650e7182b6d171d0">arm_compute::test::validation::weights</a></div><div class="ttdeci">CLTensor weights</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">ConvolutionLayer.cpp:180</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1convolution__3d_1_1detail_xhtml_a74dc80546816db5f19029d6819a8bfee"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1convolution__3d_1_1detail.xhtml#a74dc80546816db5f19029d6819a8bfee">arm_compute::test::convolution_3d::detail::convolution3d</a></div><div class="ttdeci">void convolution3d(const SimpleTensor&lt; T &gt; &amp;in, const SimpleTensor&lt; T &gt; &amp;weights, const SimpleTensor&lt; TB &gt; &amp;bias, SimpleTensor&lt; T &gt; &amp;out, int i_offset, int w_offset, int b_offset, int o_offset, int xi, int yi, int width_in, int height_in, int depth_in, int width_weights, int height_weights, int dilation_x=1, int dilation_y=1)</div><div class="ttdef"><b>Definition:</b> <a href="_convolution3d_8h_source.xhtml#l00046">Convolution3d.h:46</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_asserts_8h_source.xhtml#l00110">ARM_COMPUTE_ASSERT</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00181">arm_compute::test::validation::bias</a>, <a class="el" href="_convolution3d_8h_source.xhtml#l00046">arm_compute::test::convolution_3d::detail::convolution3d()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00163">arm_compute::test::validation::output_wh</a>, <a class="el" href="src_2core_2_utils_8cpp_source.xhtml#l00387">arm_compute::scaled_dimensions()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00180">arm_compute::test::validation::weights</a>.</p>
</div>
</div>
<a id="a86290449cccd9f7ea563247982525a64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86290449cccd9f7ea563247982525a64">&#9670;&nbsp;</a></span>locally_connected() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::locally_connected </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6aa278cb3dd1777e7338c5e573c55550"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6aa278cb3dd1777e7338c5e573c55550">&#9670;&nbsp;</a></span>magnitude() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; magnitude </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>gx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>gy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8a">MagnitudeType</a>&#160;</td>
<td class="paramname"><em>magnitude_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_magnitude_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="validation_2reference_2_magnitude_8cpp_source.xhtml">Magnitude.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SimpleTensor&lt;T&gt; mag(gx.shape(), gx.data_type());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">using</span> intermediate_type = <span class="keyword">typename</span> common_promoted_unsigned_type&lt;T&gt;::intermediate_type;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; gx.num_elements(); ++i)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">double</span> val = 0.f;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">if</span>(magnitude_type == MagnitudeType::L1NORM)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; val = static_cast&lt;intermediate_type&gt;(std::abs(gx[i])) + static_cast&lt;intermediate_type&gt;(std::abs(gy[i]));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">else</span> <span class="comment">// MagnitudeType::L2NORM</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// Note: kernel saturates to uint32_t instead of intermediate_type for S32 format</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">auto</span> <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a> = static_cast&lt;uint32_t&gt;(gx[i] * gx[i]) + static_cast&lt;uint32_t&gt;(gy[i] * gy[i]);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; val = std::sqrt(<a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>) + 0.5f;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; mag[i] = saturate_cast&lt;T&gt;(val);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> mag;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;}</div><div class="ttc" id="reduction__operation_8cl_xhtml_ab0df00f5333da51860deb93deb44a782"><div class="ttname"><a href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a></div><div class="ttdeci">DATA_TYPE sum(__global const DATA_TYPE *input)</div><div class="ttdoc">Calculate sum of a vector.</div><div class="ttdef"><b>Definition:</b> <a href="reduction__operation_8cl_source.xhtml#l00065">reduction_operation.cl:65</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8aac2f1be73bf576190d1f42bdaf5162ae8">arm_compute::L1NORM</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00407">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="reduction__operation_8cl_source.xhtml#l00065">sum()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_c_l_canny_edge_kernel_8cpp_source.xhtml#l00040">CLGradientKernel::configure()</a>, <a class="el" href="_c_l_magnitude_phase_kernel_8cpp_source.xhtml#l00046">CLMagnitudePhaseKernel::configure()</a>, <a class="el" href="_n_e_magnitude_phase_kernel_8cpp_source.xhtml#l00250">NEMagnitudePhaseKernel&lt; mag_type, phase_type &gt;::configure()</a>, <a class="el" href="_n_e_canny_edge_kernel_8cpp_source.xhtml#l00877">NEGradientKernel::configure()</a>, <a class="el" href="_c_l_canny_edge_kernel_8cpp_source.xhtml#l00120">CLEdgeNonMaxSuppressionKernel::configure()</a>, <a class="el" href="_n_e_canny_edge_kernel_8cpp_source.xhtml#l00970">NEEdgeNonMaxSuppressionKernel::configure()</a>, <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00226">hog_descriptor()</a>, <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml#l00138">hog_multi_detection()</a>, <a class="el" href="magnitude__phase_8cl_source.xhtml#l00130">magnitude_phase()</a>, <a class="el" href="_n_e_canny_edge_kernel_8cpp_source.xhtml#l00942">NEGradientKernel::run()</a>, and <a class="el" href="_n_e_canny_edge_kernel_8cpp_source.xhtml#l01024">NEEdgeNonMaxSuppressionKernel::run()</a>.</p>
</div>
</div>
<a id="a995eabbadd759c83f7b7aab6e10e9233"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a995eabbadd759c83f7b7aab6e10e9233">&#9670;&nbsp;</a></span>magnitude() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::magnitude </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>gx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>gy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8a">MagnitudeType</a>&#160;</td>
<td class="paramname"><em>magnitude_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aff3d2b7e208311d2634462aa53e9fc18"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff3d2b7e208311d2634462aa53e9fc18">&#9670;&nbsp;</a></span>magnitude() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int32_t&gt; arm_compute::test::validation::reference::magnitude </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>gx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>gy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8a">MagnitudeType</a>&#160;</td>
<td class="paramname"><em>magnitude_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4ecd02d1b87ae5c50785537bf549839c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ecd02d1b87ae5c50785537bf549839c">&#9670;&nbsp;</a></span>magnitude() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;half_float::half&gt; arm_compute::test::validation::reference::magnitude </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt; &amp;&#160;</td>
<td class="paramname"><em>gx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt; &amp;&#160;</td>
<td class="paramname"><em>gy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8a">MagnitudeType</a>&#160;</td>
<td class="paramname"><em>magnitude_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="validation_2_n_e_o_n_2_magnitude_8cpp_source.xhtml#l00052">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="afcceed1cef9bd62b3429d3f76e577a23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afcceed1cef9bd62b3429d3f76e577a23">&#9670;&nbsp;</a></span>mean_and_standard_deviation() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::pair&lt; float, float &gt; mean_and_standard_deviation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_mean_std_dev_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="validation_2reference_2_mean_std_dev_8cpp_source.xhtml">MeanStdDev.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_elements = in.num_elements();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// Calculate mean</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">float</span> mean = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(in.data(), in.data() + num_elements, 0.f) / num_elements;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Calculate standard deviation</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">float</span> std_dev = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(in.data(), in.data() + num_elements, 0.f, [&amp;mean](<span class="keywordtype">float</span> a, <span class="keywordtype">float</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> a + (mean - <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>) * (mean - <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; });</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; std_dev = std::sqrt(std_dev / num_elements);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> std::make_pair(mean, std_dev);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="accumulate_8cl_xhtml_a00e540076dd545ad59ac7482f8cdf514"><div class="ttname"><a href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">accumulate</a></div><div class="ttdeci">__kernel void accumulate(__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *accu_ptr, uint accu_stride_x, uint accu_step_x, uint accu_stride_y, uint accu_step_y, uint accu_offset_first_element_in_bytes)</div><div class="ttdoc">This function accumulates an input image into output image.</div><div class="ttdef"><b>Definition:</b> <a href="accumulate_8cl_source.xhtml#l00041">accumulate.cl:41</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="accumulate_8cl_source.xhtml#l00041">accumulate()</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor&lt; T &gt;::data()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00407">SimpleTensor&lt; T &gt;::num_elements()</a>.</p>
</div>
</div>
<a id="a4bbe9971a7eab2c7bb6b54dabaf479bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4bbe9971a7eab2c7bb6b54dabaf479bf">&#9670;&nbsp;</a></span>mean_and_standard_deviation() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::pair&lt;float, float&gt; arm_compute::test::validation::reference::mean_and_standard_deviation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8fa5489b6395e4cd345ae8a8f79262fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8fa5489b6395e4cd345ae8a8f79262fe">&#9670;&nbsp;</a></span>mean_and_standard_deviation() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::pair&lt;float, float&gt; arm_compute::test::validation::reference::mean_and_standard_deviation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a76652eb381d1ad287ff36406afeb0b4b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76652eb381d1ad287ff36406afeb0b4b">&#9670;&nbsp;</a></span>mean_and_standard_deviation() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::pair&lt;float, float&gt; arm_compute::test::validation::reference::mean_and_standard_deviation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad35074fa5aa39e91e7be93874e2d74e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad35074fa5aa39e91e7be93874e2d74e9">&#9670;&nbsp;</a></span>mean_std_normalization_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; mean_std_normalization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_mean_std_dev_normalization_layer_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="reference_2_mean_std_dev_normalization_layer_8cpp_source.xhtml">MeanStdDevNormalizationLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1 };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> cols = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0];</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> batch_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1];</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; batch_size; ++i)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; T <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a> = static_cast&lt;T&gt;(0.f);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; T sum_sq = static_cast&lt;T&gt;(0.f);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j &lt; cols; ++j)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> T value = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[j + i * cols];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a> += value;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; sum_sq += value * value;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> T mean = <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a> / static_cast&lt;T&gt;(cols);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> T var = ((sum_sq / static_cast&lt;T&gt;(cols)) - (mean * mean)) + static_cast&lt;T&gt;(<a class="code" href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a>);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> T stddev_inv = static_cast&lt;T&gt;(1.f) / static_cast&lt;T&gt;(std::sqrt(var));</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j &lt; cols; ++j)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[j + i * cols] = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[j + i * cols] - mean) * stddev_inv;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="ttc" id="reduction__operation_8cl_xhtml_ab0df00f5333da51860deb93deb44a782"><div class="ttname"><a href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a></div><div class="ttdeci">DATA_TYPE sum(__global const DATA_TYPE *input)</div><div class="ttdoc">Calculate sum of a vector.</div><div class="ttdef"><b>Definition:</b> <a href="reduction__operation_8cl_source.xhtml#l00065">reduction_operation.cl:65</a></div></div>
<div class="ttc" id="_asymm_helpers_8cpp_xhtml_a552dc3787d7ea1675f3e4e8993501d58"><div class="ttname"><a href="_asymm_helpers_8cpp.xhtml#a552dc3787d7ea1675f3e4e8993501d58">epsilon</a></div><div class="ttdeci">constexpr float epsilon</div><div class="ttdef"><b>Definition:</b> <a href="_asymm_helpers_8cpp_source.xhtml#l00033">AsymmHelpers.cpp:33</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="reduction__operation_8cl_source.xhtml#l00065">sum()</a>.</p>
</div>
</div>
<a id="aa01e1da4cc3b11788abc05216ca47d4f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa01e1da4cc3b11788abc05216ca47d4f">&#9670;&nbsp;</a></span>mean_std_normalization_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::mean_std_normalization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac68ca27cab0460a2faae3a7c506d039e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac68ca27cab0460a2faae3a7c506d039e">&#9670;&nbsp;</a></span>mean_std_normalization_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::mean_std_normalization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>epsilon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aae13ed48f0f93acb42471988aff2315f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae13ed48f0f93acb42471988aff2315f">&#9670;&nbsp;</a></span>median3x3() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; median3x3 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_median3x3_8cpp_source.xhtml#l00044">44</a> of file <a class="el" href="validation_2reference_2_median3x3_8cpp_source.xhtml">Median3x3.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;{</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> size_tot_filter = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a> * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> src_idx = 0; src_idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++src_idx)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; std::array&lt;T, size_tot_filter&gt; filter_elems = { { 0 } };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; Coordinates <span class="keywordtype">id</span> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), src_idx);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> x = <span class="keywordtype">id</span>.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">x</a>();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> y = <span class="keywordtype">id</span>.y();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = y - static_cast&lt;int&gt;(border_size.top), index = 0; j &lt;= y + static_cast&lt;int&gt;(border_size.bottom); ++j)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = x - static_cast&lt;int&gt;(border_size.left); i &lt;= x + static_cast&lt;int&gt;(border_size.right); ++i, ++index)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">id</span>.set(0, i);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">id</span>.set(1, j);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; filter_elems[index] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <span class="keywordtype">id</span>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::sort(filter_elems.begin(), filter_elems.end());</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[src_idx] = filter_elems[size_tot_filter / 2];</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_aa87f8fc26981b0f3228a78c83b95b802"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">arm_compute::Dimensions::x</a></div><div class="ttdeci">T x() const</div><div class="ttdoc">Alias to access the size of the first dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00081">Dimensions.h:81</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a2237230a1357685ba2472c2d6fca17fa"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">arm_compute::test::validation::filter_size</a></div><div class="ttdeci">filter_size</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00119">Convolution.cpp:119</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00119">arm_compute::test::validation::filter_size</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>.</p>
</div>
</div>
<a id="acd2e9da442a47eddd47a970da14f5bc0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd2e9da442a47eddd47a970da14f5bc0">&#9670;&nbsp;</a></span>median3x3() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::median3x3 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac5e4b8af4086cce7dac5667735daf91a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5e4b8af4086cce7dac5667735daf91a">&#9670;&nbsp;</a></span>min_max_location() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structarm__compute_1_1_min_max_location_values.xhtml">MinMaxLocationValues</a>&lt; T &gt; min_max_location </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_min_max_location_8cpp_source.xhtml#l00058">58</a> of file <a class="el" href="validation_2reference_2_min_max_location_8cpp_source.xhtml">MinMaxLocation.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; MinMaxLocationValues&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; compute_min_max&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.min, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.max);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="struct_coordinates2_d.xhtml">Coordinates2D</a> coord{ 0, 0 };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; coord.<a class="code" href="struct_coordinates2_d.xhtml#a6150e0515f7202e2fb518f7206ed97dc">x</a> = static_cast&lt;int32_t&gt;(i % width);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; coord.y = static_cast&lt;int32_t&gt;(i / width);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] == <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.min)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.min_loc.push_back(coord);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] == <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.max)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.max_loc.push_back(coord);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div><div class="ttc" id="struct_coordinates2_d_xhtml"><div class="ttname"><a href="struct_coordinates2_d.xhtml">Coordinates2D</a></div><div class="ttdoc">2D Coordinates structure</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00028">types.h:28</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="struct_coordinates2_d_xhtml_a6150e0515f7202e2fb518f7206ed97dc"><div class="ttname"><a href="struct_coordinates2_d.xhtml#a6150e0515f7202e2fb518f7206ed97dc">Coordinates2D::x</a></div><div class="ttdeci">int x</div><div class="ttdoc">The x coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_types_8h_source.xhtml#l00030">types.h:30</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00429">Coordinates2D::x</a>.</p>
</div>
</div>
<a id="ab2647e679a5282c102f65c83d08043a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2647e679a5282c102f65c83d08043a7">&#9670;&nbsp;</a></span>min_max_location() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="structarm__compute_1_1_min_max_location_values.xhtml">MinMaxLocationValues</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::min_max_location </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa4de1dd61ace6805d93248d25c0b2caa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4de1dd61ace6805d93248d25c0b2caa">&#9670;&nbsp;</a></span>min_max_location() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="structarm__compute_1_1_min_max_location_values.xhtml">MinMaxLocationValues</a>&lt;int16_t&gt; arm_compute::test::validation::reference::min_max_location </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aff675bcce573bbd26e6d531b2e073ab8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff675bcce573bbd26e6d531b2e073ab8">&#9670;&nbsp;</a></span>min_max_location() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="structarm__compute_1_1_min_max_location_values.xhtml">MinMaxLocationValues</a>&lt;float&gt; arm_compute::test::validation::reference::min_max_location </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af00274a4d66faf0892f122870f1d9fd9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af00274a4d66faf0892f122870f1d9fd9">&#9670;&nbsp;</a></span>non_linear_filter() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; non_linear_filter </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858">NonLinearFilterFunction</a>&#160;</td>
<td class="paramname"><em>function</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>mask_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02">MatrixPattern</a>&#160;</td>
<td class="paramname"><em>pattern</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_non_linear_filter_8cpp_source.xhtml#l00036">36</a> of file <a class="el" href="reference_2_non_linear_filter_8cpp_source.xhtml">NonLinearFilter.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(pattern == MatrixPattern::OTHER &amp;&amp; mask == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a>(pattern);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">using</span> intermediate_type = <span class="keyword">typename</span> common_promoted_signed_type&lt;T&gt;::intermediate_type;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> sq_mask_size = mask_size * mask_size;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> half_mask_size = mask_size / 2;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; std::vector&lt;intermediate_type&gt; vals(sq_mask_size);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; intermediate_type current_value = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> ValidRegion <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">shape_to_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::UNDEFINED, BorderSize(half_mask_size));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> element_idx = 0, count = 0, index = 0; element_idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++element_idx, count = 0, index = 0)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; Coordinates <span class="keywordtype">id</span> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), element_idx);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">is_in_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a>, <span class="keywordtype">id</span>))</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">int</span> idx = <span class="keywordtype">id</span>.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">x</a>();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">int</span> idy = <span class="keywordtype">id</span>.y();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = idy - half_mask_size; y &lt;= idy + half_mask_size; ++y)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = idx - half_mask_size; x &lt;= idx + half_mask_size; ++x, ++index)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">id</span>.set(0, x);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">id</span>.set(1, y);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; current_value = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <span class="keywordtype">id</span>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(mask[index] == 255)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; vals[count] = static_cast&lt;intermediate_type&gt;(current_value);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; ++count;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; std::sort(vals.begin(), vals.begin() + count);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(count == 0);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">switch</span>(<span class="keyword">function</span>)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">case</span> <a class="code" href="elementwise__operation_8cl.xhtml#a74e75242132eaabbc1c512488a135926">NonLinearFilterFunction::MIN</a>:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = saturate_cast&lt;T&gt;(vals[0]);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">case</span> <a class="code" href="elementwise__operation_8cl.xhtml#aacc3ee1a7f283f8ef65cea31f4436a95">NonLinearFilterFunction::MAX</a>:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = saturate_cast&lt;T&gt;(vals[count - 1]);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">case</span> NonLinearFilterFunction::MEDIAN:</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = saturate_cast&lt;T&gt;(vals[count / 2]);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Unsupported NonLinearFilter function.&quot;</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="elementwise__operation_8cl_xhtml_a74e75242132eaabbc1c512488a135926"><div class="ttname"><a href="elementwise__operation_8cl.xhtml#a74e75242132eaabbc1c512488a135926">MIN</a></div><div class="ttdeci">#define MIN(x, y)</div><div class="ttdef"><b>Definition:</b> <a href="elementwise__operation_8cl_source.xhtml#l00037">elementwise_operation.cl:37</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_aa87f8fc26981b0f3228a78c83b95b802"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">arm_compute::Dimensions::x</a></div><div class="ttdeci">T x() const</div><div class="ttdoc">Alias to access the size of the first dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00081">Dimensions.h:81</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a856b55fc20ddcbdbeb84c35ae27bedac"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">arm_compute::test::is_in_valid_region</a></div><div class="ttdeci">bool is_in_valid_region(const ValidRegion &amp;valid_region, Coordinates coord)</div><div class="ttdoc">Check if a coordinate is within a valid region.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00498">Utils.h:498</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a6dc630a6ae9cc063b3924bcea8dee9d6"><div class="ttname"><a href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(...)</div><div class="ttdoc">To avoid unused variables warnings.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00160">Error.h:160</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7819bcbbf45c2e7c1396a137dce54422"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">arm_compute::test::validation::valid_region</a></div><div class="ttdeci">const ValidRegion valid_region</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00109">AbsoluteDifference.cpp:109</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="elementwise__operation_8cl_xhtml_aacc3ee1a7f283f8ef65cea31f4436a95"><div class="ttname"><a href="elementwise__operation_8cl.xhtml#aacc3ee1a7f283f8ef65cea31f4436a95">MAX</a></div><div class="ttdeci">#define MAX(x, y)</div><div class="ttdef"><b>Definition:</b> <a href="elementwise__operation_8cl_source.xhtml#l00036">elementwise_operation.cl:36</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a8103df0e6c416f55f40106aa49072b42"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">arm_compute::test::shape_to_valid_region</a></div><div class="ttdeci">ValidRegion shape_to_valid_region(const TensorShape &amp;a_shape, bool border_undefined=false, BorderSize border_size=BorderSize(0))</div><div class="ttdoc">Create a valid region based on tensor shape, border mode and border size.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00221">Utils.h:221</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_error_8h_source.xhtml#l00160">ARM_COMPUTE_UNUSED</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00498">arm_compute::test::is_in_valid_region()</a>, <a class="el" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5">arm_compute::MAX</a>, <a class="el" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a8ab0c3a037e882577dec378985477074">arm_compute::MEDIAN</a>, <a class="el" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858ace31e2a082d17e038fcc6e3006166653">arm_compute::MIN</a>, <a class="el" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02a03570470bad94692ce93e32700d2e1cb">arm_compute::OTHER</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00221">arm_compute::test::shape_to_valid_region()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::UNDEFINED</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00109">arm_compute::test::validation::valid_region</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>.</p>
</div>
</div>
<a id="a29d57ba8afd317719a954d18599956cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a29d57ba8afd317719a954d18599956cd">&#9670;&nbsp;</a></span>non_linear_filter() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::non_linear_filter </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858">NonLinearFilterFunction</a>&#160;</td>
<td class="paramname"><em>function</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>mask_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02">MatrixPattern</a>&#160;</td>
<td class="paramname"><em>pattern</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a76dd3fc8793c1e670a54fad76c147781"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76dd3fc8793c1e670a54fad76c147781">&#9670;&nbsp;</a></span>non_max_suppression()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt; non_max_suppression </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>bboxes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>scores</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>indices</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>max_output_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>score_threshold</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>nms_threshold</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_non_max_suppression_8cpp_source.xhtml#l00139">139</a> of file <a class="el" href="_non_max_suppression_8cpp_source.xhtml">NonMaxSuppression.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_boxes = bboxes.shape().y();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> output_size = std::min(static_cast&lt;size_t&gt;(max_output_size), num_boxes);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> std::vector&lt;CandidateBox&gt; candidates_vector = get_candidates(scores, score_threshold);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; std::vector&lt;int&gt; selected;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> c : candidates_vector)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span>(selected.size() == output_size)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span>(is_box_selected(c, bboxes, selected, nms_threshold))</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; selected.push_back(c.first);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; std::copy_n(selected.begin(), selected.size(), indices.data());</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = selected.size(); i &lt; max_output_size; ++i)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; indices[i] = -1;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> indices;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div></div><!-- fragment -->
<p class="reference">References <a class="el" href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor&lt; T &gt;::data()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a60e89e48713565425943913adec65294"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60e89e48713565425943913adec65294">&#9670;&nbsp;</a></span>non_maxima_suppression() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; non_maxima_suppression </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_non_maxima_suppression_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_non_maxima_suppression_8cpp_source.xhtml">NonMaximaSuppression.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; constexpr <span class="keywordtype">int</span> block_size = 3;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; ValidRegion <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">shape_to_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::UNDEFINED, BorderSize(block_size / 2));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; Coordinates coord = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), i);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">int</span> x = coord.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">x</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">int</span> y = coord.y();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">is_in_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a>, coord))</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &gt;= <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, Coordinates(x - 1, y - 1), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value) &amp;&amp; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &gt;= <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, Coordinates(x, y - 1), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &amp;&amp; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &gt;= <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, Coordinates(x + 1, y - 1), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value) &amp;&amp; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &gt;= <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, Coordinates(x - 1, y), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; &amp;&amp; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, Coordinates(x + 1, y), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value) &amp;&amp; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, Coordinates(x - 1, y + 1), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; &amp;&amp; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, Coordinates(x, y + 1), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value) &amp;&amp; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, Coordinates(x + 1, y + 1), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value))</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = T(0);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_aa87f8fc26981b0f3228a78c83b95b802"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">arm_compute::Dimensions::x</a></div><div class="ttdeci">T x() const</div><div class="ttdoc">Alias to access the size of the first dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00081">Dimensions.h:81</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a856b55fc20ddcbdbeb84c35ae27bedac"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">arm_compute::test::is_in_valid_region</a></div><div class="ttdeci">bool is_in_valid_region(const ValidRegion &amp;valid_region, Coordinates coord)</div><div class="ttdoc">Check if a coordinate is within a valid region.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00498">Utils.h:498</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7819bcbbf45c2e7c1396a137dce54422"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">arm_compute::test::validation::valid_region</a></div><div class="ttdeci">const ValidRegion valid_region</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00109">AbsoluteDifference.cpp:109</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a8103df0e6c416f55f40106aa49072b42"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">arm_compute::test::shape_to_valid_region</a></div><div class="ttdeci">ValidRegion shape_to_valid_region(const TensorShape &amp;a_shape, bool border_undefined=false, BorderSize border_size=BorderSize(0))</div><div class="ttdoc">Create a valid region based on tensor shape, border mode and border size.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00221">Utils.h:221</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00498">arm_compute::test::is_in_valid_region()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00221">arm_compute::test::shape_to_valid_region()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::UNDEFINED</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00109">arm_compute::test::validation::valid_region</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00086">Dimensions&lt; T &gt;::y()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_c_l_h_o_g_multi_detection_8cpp_source.xhtml#l00056">CLHOGMultiDetection::configure()</a>, <a class="el" href="_n_e_h_o_g_multi_detection_8cpp_source.xhtml#l00054">NEHOGMultiDetection::configure()</a>, <a class="el" href="validation_2reference_2_fast_corners_8cpp_source.xhtml#l00152">fast_corners()</a>, and <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml#l00138">hog_multi_detection()</a>.</p>
</div>
</div>
<a id="a4f89718e67b6cc5ce13ce5ea3a789a88"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f89718e67b6cc5ce13ce5ea3a789a88">&#9670;&nbsp;</a></span>non_maxima_suppression() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::non_maxima_suppression </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a354498d36b78c3c042d34e44d95b0287"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a354498d36b78c3c042d34e44d95b0287">&#9670;&nbsp;</a></span>non_maxima_suppression() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::non_maxima_suppression </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a12f5205aa3c3e8056da83444c0a18c29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12f5205aa3c3e8056da83444c0a18c29">&#9670;&nbsp;</a></span>normalization_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; normalization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_normalization_layer_info.xhtml">NormalizationLayerInfo</a>&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_normalization_layer_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="validation_2reference_2_normalization_layer_8cpp_source.xhtml">NormalizationLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1 };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> uint32_t norm_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.norm_size();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59ca">NormType</a> type = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.type();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">float</span> beta = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.beta();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; uint32_t kappa = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.kappa();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> cols = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> rows = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">int</span> upper_dims = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size() / (cols * rows);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">float</span> coeff = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.scale_coeff();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">int</span> radius_cols = norm_size / 2;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">// IN_MAP_1D and CROSS_MAP normalize over a single axis only</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">int</span> radius_rows = (NormType::IN_MAP_2D == type) ? norm_size / 2 : 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.is_cross_map())</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// Remove also depth from upper dimensions since it is the dimension we</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// want to use for normalization</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; upper_dims /= depth;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; upper_dims; ++r)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; rows; ++i)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k &lt; cols; ++k)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> l = 0; l &lt; depth; ++l)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">float</span> accumulated_scale = 0.f;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = -radius_cols; j &lt;= radius_cols; ++j)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> z = l + j;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span>(z &gt;= 0 &amp;&amp; z &lt; depth)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> T value = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[k + i * cols + z * rows * cols + r * cols * rows * depth];</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; accumulated_scale += value * value;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[k + i * cols + l * rows * cols + r * cols * rows * depth] = kappa + accumulated_scale * coeff;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; upper_dims; ++r)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; rows; ++i)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k &lt; cols; ++k)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">float</span> accumulated_scale = 0.f;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = -radius_rows; j &lt;= radius_rows; ++j)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> y = i + j;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> l = -radius_cols; l &lt;= radius_cols; ++l)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> x = k + l;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span>((x &gt;= 0 &amp;&amp; y &gt;= 0) &amp;&amp; (x &lt; cols &amp;&amp; y &lt; rows))</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">const</span> T value = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[x + y * cols + r * cols * rows];</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; accumulated_scale += value * value;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[k + i * cols + r * cols * rows] = kappa + accumulated_scale * coeff;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span>(beta == 1.f)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.num_elements(); ++i)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i];</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(beta == 0.5f)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.num_elements(); ++i)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] / std::sqrt(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i]);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.num_elements(); ++i)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] * std::exp(std::log(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i]) * -beta);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ad4bb8dabdbf8ad75e34220cc666b59ca"><div class="ttname"><a href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59ca">arm_compute::NormType</a></div><div class="ttdeci">NormType</div><div class="ttdoc">The normalization type used for the normalization layer.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00523">Types.h:523</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa6ff8bd96743aae9fd283cd822b84278e">arm_compute::IN_MAP_2D</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a451c44627ad6c06f72667812f2a9782d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a451c44627ad6c06f72667812f2a9782d">&#9670;&nbsp;</a></span>normalization_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::normalization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_normalization_layer_info.xhtml">NormalizationLayerInfo</a>&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a677c65b33a30875799e387168f59758e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a677c65b33a30875799e387168f59758e">&#9670;&nbsp;</a></span>normalization_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::normalization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_normalization_layer_info.xhtml">NormalizationLayerInfo</a>&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a039062a11bac2e68d7921e057bacf779"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a039062a11bac2e68d7921e057bacf779">&#9670;&nbsp;</a></span>normalize_planar_yuv_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; normalize_planar_yuv_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>std</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_normalize_planar_y_u_v_layer_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="validation_2reference_2_normalize_planar_y_u_v_layer_8cpp_source.xhtml">NormalizePlanarYUVLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; result(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> cols = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0]);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> rows = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1]);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> depth = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2]);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> upper_dims = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size() / (cols * rows * depth);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; upper_dims; ++r)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; depth; ++i)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k &lt; rows; ++k)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> l = 0; l &lt; cols; ++l)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pos = l + k * cols + i * rows * cols + r * cols * rows * depth;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; result[pos] = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[pos] - mean[i]) / std[i];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a44bd8f0b704304f77875d948cdc49e33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44bd8f0b704304f77875d948cdc49e33">&#9670;&nbsp;</a></span>normalize_planar_yuv_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::normalize_planar_yuv_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>std</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a68b5b2b23cdd66a34348456f30f61a6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68b5b2b23cdd66a34348456f30f61a6c">&#9670;&nbsp;</a></span>normalize_planar_yuv_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::normalize_planar_yuv_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>std</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a27565b2b0910dcc67b2d93d96d842768"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27565b2b0910dcc67b2d93d96d842768">&#9670;&nbsp;</a></span>normalize_planar_yuv_layer&lt; uint8_t &gt;()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a039062a11bac2e68d7921e057bacf779">arm_compute::test::validation::reference::normalize_planar_yuv_layer</a>&lt; uint8_t &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>std</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_normalize_planar_y_u_v_layer_8cpp_source.xhtml#l00065">65</a> of file <a class="el" href="validation_2reference_2_normalize_planar_y_u_v_layer_8cpp_source.xhtml">NormalizePlanarYUVLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; SimpleTensor&lt;float&gt; src_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; SimpleTensor&lt;float&gt; mean_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(mean);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; SimpleTensor&lt;float&gt; std_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(std);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; SimpleTensor&lt;float&gt; dst_tmp = normalize_planar_yuv_layer&lt;float&gt;(src_tmp, mean_tmp, std_tmp);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">convert_to_asymmetric</a>(dst_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a291a16e64b05bdf4d08e1240d5bb286a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">arm_compute::test::validation::convert_to_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; convert_to_asymmetric(const SimpleTensor&lt; float &gt; &amp;src, const QuantizationInfo &amp;quantization_info)</div><div class="ttdoc">Convert float simple tensor into quantized using specified quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">Helpers.cpp:123</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab24849be91cfb00a72f7a61a7e00fdb7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">arm_compute::test::validation::convert_from_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; convert_from_asymmetric(const SimpleTensor&lt; uint8_t &gt; &amp;src)</div><div class="ttdoc">Convert quantized simple tensor into float using tensor quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">Helpers.cpp:111</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">arm_compute::test::validation::convert_from_asymmetric()</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">arm_compute::test::validation::convert_to_asymmetric()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a6890d0541805e29cc8cb546ac3ed5239"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6890d0541805e29cc8cb546ac3ed5239">&#9670;&nbsp;</a></span>optical_flow() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt; optical_flow </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>old_input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>new_input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_optical_flow_parameters.xhtml">OpticalFlowParameters</a> &amp;&#160;</td>
<td class="paramname"><em>params</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>num_levels</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>old_points</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>new_points_estimates</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_optical_flow_8cpp_source.xhtml#l00246">246</a> of file <a class="el" href="validation_2reference_2_optical_flow_8cpp_source.xhtml">OpticalFlow.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;{</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a> = 3; <span class="comment">// scharr filter size</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> max_iterations = 1000; <span class="comment">// fixed by kernel</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> window_dimension = params.window_dimension;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_iterations = (params.termination == Termination::TERM_CRITERIA_EPSILON) ? max_iterations : params.num_iterations;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a8856eca9a83e16bb0cb5880e9c6c9fe7">KeyPointArray</a> new_points(old_points.size());</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; InternalKeyPointArray old_points_internal = create_internal_keypoints(old_points);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; InternalKeyPointArray new_points_internal = create_internal_keypoints(new_points_estimates);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; SimpleTensor&lt;int16_t&gt; scharr_gx;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; SimpleTensor&lt;int16_t&gt; scharr_gy;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// Create pyramids</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; std::vector&lt;SimpleTensor&lt;T&gt;&gt; old_pyramid = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a42c972f3c96f7c91c57a7aaf2068fddf">gaussian_pyramid_half</a>(old_input, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, num_levels);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; std::vector&lt;SimpleTensor&lt;T&gt;&gt; new_pyramid = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a42c972f3c96f7c91c57a7aaf2068fddf">gaussian_pyramid_half</a>(new_input, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, num_levels);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="comment">// Iterate over each level of the pyramid</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> idx = num_levels; idx &gt; 0; --idx)</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> level = idx - 1;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// Calculate scharr gradients</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; std::tie(scharr_gx, scharr_gy) = scharr&lt;int16_t, T&gt;(old_pyramid[level], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, GradientDimension::GRAD_XY);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; scale_tracked_points(level, num_levels, params.use_initial_estimate, old_points_internal, new_points_internal, old_points, new_points_estimates);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">// Calculate valid region based on image dimensions of current pyramid level</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keyword">const</span> ValidRegion <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">shape_to_valid_region</a>(old_pyramid[level].<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>(), (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::UNDEFINED), BorderSize(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a> / 2));</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; old_points.size(); ++i)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; InternalKeyPoint &amp;old_keypoint = old_points_internal.at(i);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; InternalKeyPoint &amp;new_keypoint = new_points_internal.at(i);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="comment">// Helper function for untracking keypoints when on the lowest pyramid level (high resolution)</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> untrack_keypoint = [&amp;](<span class="keywordtype">bool</span> predicate)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span>(predicate &amp;&amp; (level == 0))</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; new_keypoint.tracking_status = <span class="keyword">false</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> predicate;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; };</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span>(!old_keypoint.tracking_status)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="comment">// Check if tracked coordinate is outside image coordinate</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span>(untrack_keypoint(is_invalid_keypoint(old_keypoint, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a>, window_dimension)))</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// Compute spatial derivative</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; std::vector&lt;int&gt; bilinear_ix = compute_derivative(scharr_gx, old_keypoint, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, window_dimension, <a class="code" href="optical__flow__pyramid__lk_8cl.xhtml#aab6bf9cc4b300f72d07a2ebe9939f376">W_BITS</a>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; std::vector&lt;int&gt; bilinear_iy = compute_derivative(scharr_gy, old_keypoint, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, window_dimension, <a class="code" href="optical__flow__pyramid__lk_8cl.xhtml#aab6bf9cc4b300f72d07a2ebe9939f376">W_BITS</a>);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordtype">float</span> A11 = 0.f;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordtype">float</span> A12 = 0.f;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordtype">float</span> A22 = 0.f;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; std::tie(A11, A12, A22) = compute_spatial_gradient_matrix(bilinear_ix, bilinear_iy);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// Calculate criteria for lost tracking : Matrix A is invertible</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="comment">// 1. The determinant of the matrix is less than DETERMINANT_THRESHOLD</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="comment">// 2. The minimum eigenvalue of the matrix is less than EIGENVALUE_THRESHOLD</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> trace_A = A11 + A22;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> determinant = A11 * A22 - A12 * A12;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> discriminant = (trace_A * trace_A) - 4.0f * (determinant);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> eigenvalue_A = (trace_A - std::sqrt(discriminant)) / 2.0f;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="comment">// Divide by window_dimension squared to reduce the floating point accummulation error</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> eigenvalue = eigenvalue_A / (window_dimension * window_dimension);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="comment">// Check if it is a good point to track</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span>(untrack_keypoint(eigenvalue &lt; EIGENVALUE_THRESHOLD || determinant &lt; DETERMINANT_THRESHOLD))</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordtype">float</span> prev_delta_x = 0.f;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordtype">float</span> prev_delta_y = 0.f;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> j = 0; j &lt; num_iterations; ++j)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="comment">// Check if tracked coordinate is outside image coordinate</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span>(untrack_keypoint(is_invalid_keypoint(new_keypoint, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a>, window_dimension)))</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="comment">// Compute temporal derivative</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; std::vector&lt;int&gt; bilinear_it_old = compute_derivative(old_pyramid[level], old_keypoint, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, window_dimension, <a class="code" href="optical__flow__pyramid__lk_8cl.xhtml#aab6bf9cc4b300f72d07a2ebe9939f376">W_BITS</a> - 5);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; std::vector&lt;int&gt; bilinear_it_new = compute_derivative(new_pyramid[level], new_keypoint, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, window_dimension, <a class="code" href="optical__flow__pyramid__lk_8cl.xhtml#aab6bf9cc4b300f72d07a2ebe9939f376">W_BITS</a> - 5);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordtype">double</span> b1 = 0.f;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordtype">double</span> b2 = 0.f;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; std::tie(b1, b2) = compute_temporal_gradient_vector(bilinear_it_old, bilinear_it_new, bilinear_ix, bilinear_iy);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="comment">// Compute motion vector -&gt; A^-1 * -b</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> delta_x = (A12 * b2 - A22 * b1) / determinant;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> delta_y = (A12 * b1 - A11 * b2) / determinant;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="comment">// Update the new position</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; new_keypoint.x += delta_x;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; new_keypoint.y += delta_y;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> magnitude_squared = delta_x * delta_x + delta_y * delta_y;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">// Check if termination criteria is EPSILON and if it is satisfied</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">if</span>(magnitude_squared &lt;= params.epsilon &amp;&amp; (params.termination == Termination::TERM_CRITERIA_EPSILON || params.termination == Termination::TERM_CRITERIA_BOTH))</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="comment">// Check convergence analyzing the previous delta</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">if</span>(j &gt; 0 &amp;&amp; (std::fabs(delta_x + prev_delta_x) &lt; 0.01f &amp;&amp; std::fabs(delta_y + prev_delta_y) &lt; 0.01f))</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; new_keypoint.x -= delta_x * <a class="code" href="namespacearm__compute.xhtml#af9876aedd664cac0ddeacddb40cb71cd">SCALE_PYRAMID_HALF</a>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; new_keypoint.y -= delta_y * <a class="code" href="namespacearm__compute.xhtml#af9876aedd664cac0ddeacddb40cb71cd">SCALE_PYRAMID_HALF</a>;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; prev_delta_x = delta_x;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; prev_delta_y = delta_y;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="comment">// Copy optical flow coordinates to output vector</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; old_points.size(); ++i)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">const</span> InternalKeyPoint &amp;new_keypoint = new_points_internal.at(i);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; new_points.at(i).x = roundf(new_keypoint.x);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; new_points.at(i).y = roundf(new_keypoint.y);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; new_points.at(i).tracking_status = new_keypoint.tracking_status ? 1 : 0;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> new_points;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;}</div><div class="ttc" id="namespacearm__compute_xhtml_af9876aedd664cac0ddeacddb40cb71cd"><div class="ttname"><a href="namespacearm__compute.xhtml#af9876aedd664cac0ddeacddb40cb71cd">arm_compute::SCALE_PYRAMID_HALF</a></div><div class="ttdeci">constexpr float SCALE_PYRAMID_HALF</div><div class="ttdoc">Constant value used to indicate a half-scale pyramid.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00106">Types.h:106</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a45cde9abb508c62d67c3bb2b9bf566a5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">arm_compute::test::validation::shape</a></div><div class="ttdeci">shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00097">AbsoluteDifference.cpp:97</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a8856eca9a83e16bb0cb5880e9c6c9fe7"><div class="ttname"><a href="namespacearm__compute.xhtml#a8856eca9a83e16bb0cb5880e9c6c9fe7">arm_compute::KeyPointArray</a></div><div class="ttdeci">Array&lt; KeyPoint &gt; KeyPointArray</div><div class="ttdoc">Array of Key Points.</div><div class="ttdef"><b>Definition:</b> <a href="_array_8h_source.xhtml#l00065">Array.h:65</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a2237230a1357685ba2472c2d6fca17fa"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">arm_compute::test::validation::filter_size</a></div><div class="ttdeci">filter_size</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00119">Convolution.cpp:119</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7819bcbbf45c2e7c1396a137dce54422"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">arm_compute::test::validation::valid_region</a></div><div class="ttdeci">const ValidRegion valid_region</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00109">AbsoluteDifference.cpp:109</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a42c972f3c96f7c91c57a7aaf2068fddf"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a42c972f3c96f7c91c57a7aaf2068fddf">arm_compute::test::validation::reference::gaussian_pyramid_half</a></div><div class="ttdeci">std::vector&lt; SimpleTensor&lt; T &gt; &gt; gaussian_pyramid_half(const SimpleTensor&lt; T &gt; &amp;src, BorderMode border_mode, uint8_t constant_border_value, size_t num_levels)</div><div class="ttdef"><b>Definition:</b> <a href="_gaussian_pyramid_half_8cpp_source.xhtml#l00041">GaussianPyramidHalf.cpp:41</a></div></div>
<div class="ttc" id="optical__flow__pyramid__lk_8cl_xhtml_aab6bf9cc4b300f72d07a2ebe9939f376"><div class="ttname"><a href="optical__flow__pyramid__lk_8cl.xhtml#aab6bf9cc4b300f72d07a2ebe9939f376">W_BITS</a></div><div class="ttdeci">#define W_BITS</div><div class="ttdoc">Constants used for Lucas-Kanade Algorithm.</div><div class="ttdef"><b>Definition:</b> <a href="optical__flow__pyramid__lk_8cl_source.xhtml#l00057">optical_flow_pyramid_lk.cl:57</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a8103df0e6c416f55f40106aa49072b42"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">arm_compute::test::shape_to_valid_region</a></div><div class="ttdeci">ValidRegion shape_to_valid_region(const TensorShape &amp;a_shape, bool border_undefined=false, BorderSize border_size=BorderSize(0))</div><div class="ttdoc">Create a valid region based on tensor shape, border mode and border size.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00221">Utils.h:221</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="tests_2_types_8h_source.xhtml#l00068">OpticalFlowParameters::epsilon</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00119">arm_compute::test::validation::filter_size</a>, <a class="el" href="_gaussian_pyramid_half_8cpp_source.xhtml#l00041">gaussian_pyramid_half()</a>, <a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7a5515a637eda61b978e97adaa5d7629cc">arm_compute::GRAD_XY</a>, <a class="el" href="tests_2_types_8h_source.xhtml#l00069">OpticalFlowParameters::num_iterations</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00106">arm_compute::SCALE_PYRAMID_HALF</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00097">arm_compute::test::validation::shape</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00221">arm_compute::test::shape_to_valid_region()</a>, <a class="el" href="namespacearm__compute.xhtml#a08c1503414e23f5dd10ff83492685453a788740b1ba2d6463dae318a332513b29">arm_compute::TERM_CRITERIA_BOTH</a>, <a class="el" href="namespacearm__compute.xhtml#a08c1503414e23f5dd10ff83492685453a5a2e12b6baf7ad91a2ce32f19c36bd1b">arm_compute::TERM_CRITERIA_EPSILON</a>, <a class="el" href="tests_2_types_8h_source.xhtml#l00067">OpticalFlowParameters::termination</a>, <a class="el" href="tests_2_types_8h_source.xhtml#l00079">InternalKeyPoint::tracking_status</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::UNDEFINED</a>, <a class="el" href="tests_2_types_8h_source.xhtml#l00071">OpticalFlowParameters::use_initial_estimate</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00109">arm_compute::test::validation::valid_region</a>, <a class="el" href="optical__flow__pyramid__lk_8cl_source.xhtml#l00057">W_BITS</a>, <a class="el" href="tests_2_types_8h_source.xhtml#l00070">OpticalFlowParameters::window_dimension</a>, <a class="el" href="tests_2_types_8h_source.xhtml#l00077">InternalKeyPoint::x</a>, and <a class="el" href="tests_2_types_8h_source.xhtml#l00078">InternalKeyPoint::y</a>.</p>
</div>
</div>
<a id="a26f19ae8201512a91fd07520f23427bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26f19ae8201512a91fd07520f23427bd">&#9670;&nbsp;</a></span>optical_flow() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::vector&lt;<a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a>&gt; arm_compute::test::validation::reference::optical_flow </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>old_input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>new_input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_optical_flow_parameters.xhtml">OpticalFlowParameters</a> &amp;&#160;</td>
<td class="paramname"><em>params</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>num_levels</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>old_points</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>new_points_estimates</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab5901f29f666658b04856010acaeb0b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5901f29f666658b04856010acaeb0b1">&#9670;&nbsp;</a></span>pad_layer() <span class="overload">[1/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; pad_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;&#160;</td>
<td class="paramname"><em>paddings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>&#160;</td>
<td class="paramname"><em>const_value</em> = <code><a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a>&#160;</td>
<td class="paramname"><em>mode</em> = <code><a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91a8d6b5cada83510220f59e00ce86d4d92">PaddingMode::CONSTANT</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reference function to pad an ND tensor. </p>
<p>This function is not supposed to be optimized, but to clearly and naively execute the padding of a tensor</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">src</td><td><a class="el" href="classarm__compute_1_1_tensor.xhtml" title="Basic implementation of the tensor interface.">Tensor</a> to pad </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">paddings</td><td>Padding size in each dimension </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">const_value</td><td>Constant value to fill padding with </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>[optional] Padding mode to use</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The padded <a class="el" href="classarm__compute_1_1_tensor.xhtml" title="Basic implementation of the tensor interface.">Tensor</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="reference_2_pad_layer_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="reference_2_pad_layer_8cpp_source.xhtml">PadLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_data_type = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> TensorShape orig_shape = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; std::vector&lt;PaddingInfo&gt; paddings_extended = paddings;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = paddings.size(); i &lt; TensorShape::num_max_dimensions; ++i)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; paddings_extended.emplace_back(<a class="code" href="namespacearm__compute.xhtml#a669b5d3c5994f9ae3be31df9a1014297">PaddingInfo</a>{ 0, 0 });</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> TensorShape padded_shape = <a class="code" href="namespacearm__compute_1_1misc_1_1shape__calculator.xhtml#a4e7f3187350db69156c1026860ace4e5">misc::shape_calculator::compute_padded_shape</a>(orig_shape, paddings);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(padded_shape, dst_data_type);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">// Reference algorithm: loop over the different dimension of the input.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> idx = 0; idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.num_elements(); ++idx)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> Coordinates coord = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(padded_shape, idx);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> i = coord.x();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> j = coord.y();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> k = coord.z();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> l = coord[3];</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> m = coord[4];</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> n = coord[5];</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">const</span> std::array&lt;size_t, TensorShape::num_max_dimensions&gt; dims = { { 0, 1, 2, 3, 4, 5 } };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> std::array&lt;size_t, TensorShape::num_max_dimensions&gt; coords = { { i, j, k, l, m, n } };</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">auto</span> is_padding_area = [&amp;](<span class="keywordtype">size_t</span> i)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> (coords[i] &lt; paddings_extended[i].first || coords[i] &gt; orig_shape[i] + paddings_extended[i].first - 1);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">auto</span> orig_coord_reflect = [&amp;](<span class="keywordtype">size_t</span> i)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span>(is_padding_area(i))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span>(coords[i] &lt; paddings_extended[i].first)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> paddings_extended[i].first - coords[i];</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> 2 * orig_shape[i] + paddings_extended[i].first - 2 - coords[i];</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> coords[i] - paddings_extended[i].first;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; };</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">auto</span> orig_coord_symm = [&amp;](<span class="keywordtype">size_t</span> i)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(is_padding_area(i))</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span>(coords[i] &lt; paddings_extended[i].first)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> paddings_extended[i].first - coords[i] - 1;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> 2 * orig_shape[i] + paddings_extended[i].first - 1 - coords[i];</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> coords[i] - paddings_extended[i].first;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="comment">// If the tuple [i,j,k,l,m] is in the padding area, then simply set the value</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span>(std::any_of(dims.begin(), dims.end(), is_padding_area))</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">switch</span>(mode)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">case</span> PaddingMode::CONSTANT:</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; const_value.get(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[idx]);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">case</span> PaddingMode::REFLECT:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">const</span> Coordinates orig_coords{ orig_coord_reflect(0),</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; orig_coord_reflect(1),</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; orig_coord_reflect(2),</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; orig_coord_reflect(3),</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; orig_coord_reflect(4),</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; orig_coord_reflect(5) };</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> idx_src = <a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(orig_shape, orig_coords);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[idx_src];</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">case</span> PaddingMode::SYMMETRIC:</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">const</span> Coordinates orig_coords{ orig_coord_symm(0),</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; orig_coord_symm(1),</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; orig_coord_symm(2),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; orig_coord_symm(3),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; orig_coord_symm(4),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; orig_coord_symm(5) };</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> idx_src = <a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(orig_shape, orig_coords);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[idx_src];</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Padding mode not supported.&quot;</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// If the tuple[i,j,k,l,m] is not in the padding area, then copy the input into the output</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">const</span> Coordinates orig_coords{ i - paddings_extended[0].first,</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; j - paddings_extended[1].first,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; k - paddings_extended[2].first,</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; l - paddings_extended[3].first,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; m - paddings_extended[4].first,</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; n - paddings_extended[5].first };</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> idx_src = <a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(orig_shape, orig_coords);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[idx_src];</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a9be4cb7e6ee20063a4a10bc3abb750b9"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">arm_compute::test::coord2index</a></div><div class="ttdeci">int coord2index(const TensorShape &amp;shape, const Coordinates &amp;coord)</div><div class="ttdoc">Linearise the given coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00480">Utils.h:480</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1misc_1_1shape__calculator_xhtml_a4e7f3187350db69156c1026860ace4e5"><div class="ttname"><a href="namespacearm__compute_1_1misc_1_1shape__calculator.xhtml#a4e7f3187350db69156c1026860ace4e5">arm_compute::misc::shape_calculator::compute_padded_shape</a></div><div class="ttdeci">TensorShape compute_padded_shape(const TensorShape &amp;input_shape, const PaddingList &amp;padding)</div><div class="ttdoc">Calculate the padded shape of a tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_shape_calculator_8h_source.xhtml#l01149">ShapeCalculator.h:1149</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a669b5d3c5994f9ae3be31df9a1014297"><div class="ttname"><a href="namespacearm__compute.xhtml#a669b5d3c5994f9ae3be31df9a1014297">arm_compute::PaddingInfo</a></div><div class="ttdeci">std::pair&lt; uint32_t, uint32_t &gt; PaddingInfo</div><div class="ttdoc">Padding information as a pair of unsigned int start/end.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00442">Types.h:442</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00074">Types.h:74</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_shape_calculator_8h_source.xhtml#l01149">arm_compute::misc::shape_calculator::compute_padded_shape()</a>, <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91a8d6b5cada83510220f59e00ce86d4d92">arm_compute::CONSTANT</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00480">arm_compute::test::coord2index()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_pixel_value_8h_source.xhtml#l00215">PixelValue::get()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00045">Dimensions&lt; size_t &gt;::num_max_dimensions</a>, <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91ae4f6a05f82ed398f984f4bc1a55838df">arm_compute::REFLECT</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91a161b3d9016563aba9ac190fc02ada9bb">arm_compute::SYMMETRIC</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00086">Dimensions&lt; T &gt;::y()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00091">Dimensions&lt; T &gt;::z()</a>.</p>
<p class="reference">Referenced by <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00374">conv2d_dft()</a>.</p>
</div>
</div>
<a id="a1c6d10ac572e0e39cc0db38a7189b735"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c6d10ac572e0e39cc0db38a7189b735">&#9670;&nbsp;</a></span>pad_layer() <span class="overload">[2/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::pad_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;&#160;</td>
<td class="paramname"><em>paddings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>&#160;</td>
<td class="paramname"><em>const_value</em> = <code><a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a>&#160;</td>
<td class="paramname"><em>mode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac61c0f6a22ce0e0a510885846d816a8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac61c0f6a22ce0e0a510885846d816a8a">&#9670;&nbsp;</a></span>pad_layer() <span class="overload">[3/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::pad_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;&#160;</td>
<td class="paramname"><em>paddings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>&#160;</td>
<td class="paramname"><em>const_value</em> = <code><a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a>&#160;</td>
<td class="paramname"><em>mode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a69ae4f317cfc7d0072b675531a33ab74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a69ae4f317cfc7d0072b675531a33ab74">&#9670;&nbsp;</a></span>pad_layer() <span class="overload">[4/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint32_t&gt; arm_compute::test::validation::reference::pad_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;&#160;</td>
<td class="paramname"><em>paddings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>&#160;</td>
<td class="paramname"><em>const_value</em> = <code><a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a>&#160;</td>
<td class="paramname"><em>mode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa8e8ae306295259138783d243ba61fae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8e8ae306295259138783d243ba61fae">&#9670;&nbsp;</a></span>pad_layer() <span class="overload">[5/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::pad_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;&#160;</td>
<td class="paramname"><em>paddings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>&#160;</td>
<td class="paramname"><em>const_value</em> = <code><a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a>&#160;</td>
<td class="paramname"><em>mode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a460474cb174ada8ad1e60774ff0846cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a460474cb174ada8ad1e60774ff0846cd">&#9670;&nbsp;</a></span>pad_layer() <span class="overload">[6/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int8_t&gt; arm_compute::test::validation::reference::pad_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;&#160;</td>
<td class="paramname"><em>paddings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>&#160;</td>
<td class="paramname"><em>const_value</em> = <code><a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a>&#160;</td>
<td class="paramname"><em>mode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab8e373726765a023b352c03745932aa9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8e373726765a023b352c03745932aa9">&#9670;&nbsp;</a></span>pad_layer() <span class="overload">[7/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint16_t&gt; arm_compute::test::validation::reference::pad_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;&#160;</td>
<td class="paramname"><em>paddings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>&#160;</td>
<td class="paramname"><em>const_value</em> = <code><a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a>&#160;</td>
<td class="paramname"><em>mode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4eeee531cd0113e10932db991d4221c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4eeee531cd0113e10932db991d4221c6">&#9670;&nbsp;</a></span>pad_layer() <span class="overload">[8/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::pad_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ac1a1b012674e0f1de071a611391828ad">PaddingList</a> &amp;&#160;</td>
<td class="paramname"><em>paddings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>&#160;</td>
<td class="paramname"><em>const_value</em> = <code><a class="el" href="classarm__compute_1_1_pixel_value.xhtml">PixelValue</a>()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91">PaddingMode</a>&#160;</td>
<td class="paramname"><em>mode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afb5244bc67431a8ed627e8b2e2d6d460"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb5244bc67431a8ed627e8b2e2d6d460">&#9670;&nbsp;</a></span>permute() <span class="overload">[1/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; permute </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>&#160;</td>
<td class="paramname"><em>perm</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_permute_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_permute_8cpp_source.xhtml">Permute.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// Permute shapes</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; TensorShape <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0ef6952054605dc92cdd08f7306889af">permute</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, perm);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info() };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> Coordinates src_coords = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), i);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; Coordinates dst_coords = src_coords;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0ef6952054605dc92cdd08f7306889af">permute</a>(dst_coords, perm);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; std::copy_n(static_cast&lt;const T *&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>(src_coords)), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels(), static_cast&lt;T *&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(dst_coords)));</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a0ef6952054605dc92cdd08f7306889af"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a0ef6952054605dc92cdd08f7306889af">arm_compute::test::validation::reference::permute</a></div><div class="ttdeci">template SimpleTensor&lt; half &gt; permute(const SimpleTensor&lt; half &gt; &amp;src, PermutationVector perm)</div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00348">dft_2d()</a>, <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00320">rdft_2d()</a>, and <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00332">ridft_2d()</a>.</p>
</div>
</div>
<a id="a5a1560ffa53b6e7ac695e357d8d58bbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a1560ffa53b6e7ac695e357d8d58bbd">&#9670;&nbsp;</a></span>permute() <span class="overload">[2/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int8_t&gt; arm_compute::test::validation::reference::permute </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>&#160;</td>
<td class="paramname"><em>perm</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4b107aca8287064043bae890e8fa326b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4b107aca8287064043bae890e8fa326b">&#9670;&nbsp;</a></span>permute() <span class="overload">[3/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::permute </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>&#160;</td>
<td class="paramname"><em>perm</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9658582deedb7a0bc04968bbbb9ec414"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9658582deedb7a0bc04968bbbb9ec414">&#9670;&nbsp;</a></span>permute() <span class="overload">[4/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::permute </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>&#160;</td>
<td class="paramname"><em>perm</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a03e463730fd831157e634c1ec0e95316"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a03e463730fd831157e634c1ec0e95316">&#9670;&nbsp;</a></span>permute() <span class="overload">[5/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint16_t&gt; arm_compute::test::validation::reference::permute </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>&#160;</td>
<td class="paramname"><em>perm</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8c5ed6a7e94da6c172a9ddd508a423c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c5ed6a7e94da6c172a9ddd508a423c8">&#9670;&nbsp;</a></span>permute() <span class="overload">[6/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint32_t&gt; arm_compute::test::validation::reference::permute </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>&#160;</td>
<td class="paramname"><em>perm</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4b56a65406301c50d2272804e8748f50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4b56a65406301c50d2272804e8748f50">&#9670;&nbsp;</a></span>permute() <span class="overload">[7/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::permute </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>&#160;</td>
<td class="paramname"><em>perm</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0ef6952054605dc92cdd08f7306889af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ef6952054605dc92cdd08f7306889af">&#9670;&nbsp;</a></span>permute() <span class="overload">[8/8]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::permute </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>&#160;</td>
<td class="paramname"><em>perm</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a74991bda4fcca3ce5dcf8afdccdbafff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74991bda4fcca3ce5dcf8afdccdbafff">&#9670;&nbsp;</a></span>phase() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; phase </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>gx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>gy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72">PhaseType</a>&#160;</td>
<td class="paramname"><em>phase_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_phase_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="validation_2reference_2_phase_8cpp_source.xhtml">Phase.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> PI = std::atan(1) * 4;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa2ef542d37d8078c125ffed2bc7a01f0">phase</a>(gx.shape(), DataType::U8);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span>(phase_type == PhaseType::UNSIGNED) <span class="comment">// unsigned: map to [0-255)</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; gx.num_elements(); ++i)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">float</span> angle_deg = (std::atan2(<span class="keywordtype">float</span>(gy[i]), <span class="keywordtype">float</span>(gx[i])) / PI) * 180.0f;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa2ef542d37d8078c125ffed2bc7a01f0">phase</a>[i] = (angle_deg &lt; 0.0f) ? 180.f + angle_deg : angle_deg;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">else</span> <span class="comment">// signed: map to [0-180) degrees</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; gx.num_elements(); ++i)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">float</span> angle_pi = std::atan2(gy[i], gx[i]) / PI;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; angle_pi = (angle_pi &lt; 0.0f) ? 2 + angle_pi : angle_pi;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa2ef542d37d8078c125ffed2bc7a01f0">phase</a>[i] = lround(angle_pi * 128) &amp; 0xFFu;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa2ef542d37d8078c125ffed2bc7a01f0">phase</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_aa2ef542d37d8078c125ffed2bc7a01f0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa2ef542d37d8078c125ffed2bc7a01f0">arm_compute::test::validation::reference::phase</a></div><div class="ttdeci">template SimpleTensor&lt; uint8_t &gt; phase(const SimpleTensor&lt; int32_t &gt; &amp;gx, const SimpleTensor&lt; int32_t &gt; &amp;gy, PhaseType phase_type)</div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_simple_tensor_8h_source.xhtml#l00407">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">arm_compute::U8</a>, and <a class="el" href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72aaf36b47f395cd01f48b8fc1013665054">arm_compute::UNSIGNED</a>.</p>
<p class="reference">Referenced by <a class="el" href="_c_l_canny_edge_kernel_8cpp_source.xhtml#l00040">CLGradientKernel::configure()</a>, <a class="el" href="_c_l_magnitude_phase_kernel_8cpp_source.xhtml#l00046">CLMagnitudePhaseKernel::configure()</a>, <a class="el" href="_n_e_magnitude_phase_kernel_8cpp_source.xhtml#l00250">NEMagnitudePhaseKernel&lt; mag_type, phase_type &gt;::configure()</a>, <a class="el" href="_n_e_canny_edge_kernel_8cpp_source.xhtml#l00877">NEGradientKernel::configure()</a>, <a class="el" href="_c_l_canny_edge_kernel_8cpp_source.xhtml#l00120">CLEdgeNonMaxSuppressionKernel::configure()</a>, <a class="el" href="_n_e_canny_edge_kernel_8cpp_source.xhtml#l00970">NEEdgeNonMaxSuppressionKernel::configure()</a>, <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00226">hog_descriptor()</a>, <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml#l00138">hog_multi_detection()</a>, <a class="el" href="validation_2reference_2_h_o_g_descriptor_8cpp_source.xhtml#l00117">hog_orientation_binning()</a>, <a class="el" href="magnitude__phase_8cl_source.xhtml#l00130">magnitude_phase()</a>, <a class="el" href="_n_e_h_o_g_descriptor_kernel_8cpp_source.xhtml#l00678">NEHOGOrientationBinningKernel::run()</a>, <a class="el" href="_n_e_canny_edge_kernel_8cpp_source.xhtml#l00942">NEGradientKernel::run()</a>, and <a class="el" href="_n_e_canny_edge_kernel_8cpp_source.xhtml#l01024">NEEdgeNonMaxSuppressionKernel::run()</a>.</p>
</div>
</div>
<a id="a07cef8bbf0ddee4b39e682f3543ad3e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07cef8bbf0ddee4b39e682f3543ad3e4">&#9670;&nbsp;</a></span>phase() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::phase </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>gx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>gy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72">PhaseType</a>&#160;</td>
<td class="paramname"><em>phase_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa2ef542d37d8078c125ffed2bc7a01f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2ef542d37d8078c125ffed2bc7a01f0">&#9670;&nbsp;</a></span>phase() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::phase </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>gx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>gy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72">PhaseType</a>&#160;</td>
<td class="paramname"><em>phase_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a40df785bef26dd73b2b0e685828fbd3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40df785bef26dd73b2b0e685828fbd3d">&#9670;&nbsp;</a></span>pixel_wise_multiplication() <span class="overload">[1/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; pixel_wise_multiplication </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T1 &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T2 &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a>&#160;</td>
<td class="paramname"><em>rounding_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>qout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_pixel_wise_multiplication_8cpp_source.xhtml#l00131">131</a> of file <a class="el" href="reference_2_pixel_wise_multiplication_8cpp_source.xhtml">PixelWiseMultiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;{</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a>(qout);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; SimpleTensor&lt;T2&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(TensorShape::broadcast_shape(src1.shape(), src2.shape()), src2.data_type());</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a> &lt; 0)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Scale of pixel-wise multiplication must be non-negative&quot;</span>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; Coordinates id_src1{};</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; Coordinates id_src2{};</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; Coordinates id_dst{};</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; BroadcastUnroll&lt;Coordinates::num_max_dimensions&gt;::unroll(src1, src2, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">rounding_policy</a>, id_src1, id_src2, id_dst);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d58c32bff63e4c34b3234f884a4da58"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">arm_compute::test::validation::convert_policy</a></div><div class="ttdeci">convert_policy</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a6dc630a6ae9cc063b3924bcea8dee9d6"><div class="ttname"><a href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(...)</div><div class="ttdoc">To avoid unused variables warnings.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00160">Error.h:160</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a60ad1078faeaf3f59266d69ad937339f"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">arm_compute::test::validation::rounding_policy</a></div><div class="ttdeci">rounding_policy</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_error_8h_source.xhtml#l00160">ARM_COMPUTE_UNUSED</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00210">TensorShape::broadcast_shape()</a>, <a class="el" href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">arm_compute::test::validation::convert_policy</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">arm_compute::test::validation::rounding_policy</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="af3650f78a89603dc97eaf8c694893cb7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3650f78a89603dc97eaf8c694893cb7">&#9670;&nbsp;</a></span>pixel_wise_multiplication() <span class="overload">[2/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::pixel_wise_multiplication </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a>&#160;</td>
<td class="paramname"><em>rounding_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>qout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_pixel_wise_multiplication_8cpp_source.xhtml#l00153">153</a> of file <a class="el" href="reference_2_pixel_wise_multiplication_8cpp_source.xhtml">PixelWiseMultiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;{</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(TensorShape::broadcast_shape(src1.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">shape</a>(), src2.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">shape</a>()), src2.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#a9a3e72153aeb3ed212e9c3698774e881">data_type</a>(), 1, qout);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span>(src1.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#a9a3e72153aeb3ed212e9c3698774e881">data_type</a>() == DataType::QASYMM8 &amp;&amp; src2.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#a9a3e72153aeb3ed212e9c3698774e881">data_type</a>() == DataType::QASYMM8)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; SimpleTensor&lt;float&gt; src1_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(src1);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; SimpleTensor&lt;float&gt; src2_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(src2);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; SimpleTensor&lt;float&gt; dst_tmp = pixel_wise_multiplication&lt;float&gt;(src1_tmp, src2_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">rounding_policy</a>, qout);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">convert_to_asymmetric</a>(dst_tmp, qout);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a> &lt; 0)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Scale of pixel-wise multiplication must be non-negative&quot;</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; Coordinates id_src1{};</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; Coordinates id_src2{};</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; Coordinates id_dst{};</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; BroadcastUnroll&lt;Coordinates::num_max_dimensions&gt;::unroll(src1, src2, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">rounding_policy</a>, id_src1, id_src2, id_dst);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="classarm__compute_1_1test_1_1_simple_tensor_xhtml_a9a3e72153aeb3ed212e9c3698774e881"><div class="ttname"><a href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#a9a3e72153aeb3ed212e9c3698774e881">arm_compute::test::SimpleTensor::data_type</a></div><div class="ttdeci">DataType data_type() const override</div><div class="ttdoc">Data type of the tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor.h:358</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d58c32bff63e4c34b3234f884a4da58"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">arm_compute::test::validation::convert_policy</a></div><div class="ttdeci">convert_policy</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="classarm__compute_1_1test_1_1_simple_tensor_xhtml_aba5871b3e4a65d057ec1c28fce8b00ba"><div class="ttname"><a href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">arm_compute::test::SimpleTensor::shape</a></div><div class="ttdeci">TensorShape shape() const override</div><div class="ttdoc">Shape of the tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor.h:321</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a291a16e64b05bdf4d08e1240d5bb286a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">arm_compute::test::validation::convert_to_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; convert_to_asymmetric(const SimpleTensor&lt; float &gt; &amp;src, const QuantizationInfo &amp;quantization_info)</div><div class="ttdoc">Convert float simple tensor into quantized using specified quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">Helpers.cpp:123</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab24849be91cfb00a72f7a61a7e00fdb7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">arm_compute::test::validation::convert_from_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; convert_from_asymmetric(const SimpleTensor&lt; uint8_t &gt; &amp;src)</div><div class="ttdoc">Convert quantized simple tensor into float using tensor quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">Helpers.cpp:111</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a60ad1078faeaf3f59266d69ad937339f"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">arm_compute::test::validation::rounding_policy</a></div><div class="ttdeci">rounding_policy</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00210">TensorShape::broadcast_shape()</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">arm_compute::test::validation::convert_from_asymmetric()</a>, <a class="el" href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">arm_compute::test::validation::convert_policy</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">arm_compute::test::validation::convert_to_asymmetric()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6af14462d71aa842202c3e4b272c7ec924">arm_compute::QASYMM8</a>, <a class="el" href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">arm_compute::test::validation::rounding_policy</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="ad25b73a58f4ea86083a6184ef500f1a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad25b73a58f4ea86083a6184ef500f1a4">&#9670;&nbsp;</a></span>pixel_wise_multiplication() <span class="overload">[3/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::pixel_wise_multiplication </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a>&#160;</td>
<td class="paramname"><em>rounding_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>qout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_pixel_wise_multiplication_8cpp_source.xhtml#l00181">181</a> of file <a class="el" href="reference_2_pixel_wise_multiplication_8cpp_source.xhtml">PixelWiseMultiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; SimpleTensor&lt;int16_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(TensorShape::broadcast_shape(src1.shape(), src2.shape()), src2.data_type(), 1, qout);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span>(src1.data_type() == DataType::QSYMM16 &amp;&amp; src2.data_type() == DataType::QSYMM16)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; SimpleTensor&lt;float&gt; src1_tmp = convert_from_symmetric&lt;int16_t&gt;(src1);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; SimpleTensor&lt;float&gt; src2_tmp = convert_from_symmetric&lt;int16_t&gt;(src2);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; SimpleTensor&lt;float&gt; dst_tmp = pixel_wise_multiplication&lt;float&gt;(src1_tmp, src2_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">rounding_policy</a>, qout);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = convert_to_symmetric&lt;int16_t&gt;(dst_tmp, qout);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a> &lt; 0)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Scale of pixel-wise multiplication must be non-negative&quot;</span>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; Coordinates id_src1{};</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; Coordinates id_src2{};</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; Coordinates id_dst{};</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; BroadcastUnroll&lt;Coordinates::num_max_dimensions&gt;::unroll(src1, src2, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">convert_policy</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">rounding_policy</a>, id_src1, id_src2, id_dst);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d58c32bff63e4c34b3234f884a4da58"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d58c32bff63e4c34b3234f884a4da58">arm_compute::test::validation::convert_policy</a></div><div class="ttdeci">convert_policy</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a60ad1078faeaf3f59266d69ad937339f"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a60ad1078faeaf3f59266d69ad937339f">arm_compute::test::validation::rounding_policy</a></div><div class="ttdeci">rounding_policy</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00210">TensorShape::broadcast_shape()</a>, <a class="el" href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">arm_compute::test::validation::convert_policy</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a3ca8a4ea8f992df3b462bc7b24d097c6">arm_compute::QSYMM16</a>, <a class="el" href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">arm_compute::test::validation::rounding_policy</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
</div>
</div>
<a id="a4d007c8afacba2681bf5545d909ba352"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d007c8afacba2681bf5545d909ba352">&#9670;&nbsp;</a></span>pixel_wise_multiplication() <span class="overload">[4/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::pixel_wise_multiplication </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a>&#160;</td>
<td class="paramname"><em>rounding_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>qout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae2ca90d16f64ee4c422271cae83b020d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2ca90d16f64ee4c422271cae83b020d">&#9670;&nbsp;</a></span>pixel_wise_multiplication() <span class="overload">[5/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::pixel_wise_multiplication </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a>&#160;</td>
<td class="paramname"><em>rounding_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>qout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a37f0c88b8282108375ca9f94fdf05ba2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37f0c88b8282108375ca9f94fdf05ba2">&#9670;&nbsp;</a></span>pixel_wise_multiplication() <span class="overload">[6/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;half_float::half&gt; arm_compute::test::validation::reference::pixel_wise_multiplication </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a>&#160;</td>
<td class="paramname"><em>convert_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a>&#160;</td>
<td class="paramname"><em>rounding_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>qout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa38db3b299b350b91320f4e3a39ee437"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa38db3b299b350b91320f4e3a39ee437">&#9670;&nbsp;</a></span>pooling_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; pooling_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output_qinfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_pooling_layer_8cpp_source.xhtml#l00041">41</a> of file <a class="el" href="validation_2reference_2_pooling_layer_8cpp_source.xhtml">PoolingLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a>(output_qinfo); <span class="comment">// requantization occurs in pooling_layer&lt;uint8_t&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.is_global_pooling() &amp;&amp; (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x() != <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y()));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1misc_1_1shape__calculator.xhtml#ad242bedd6845b8fc13ade41cfc062c83">compute_pool_shape</a>(TensorInfo(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), 1, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type()), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1 };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pool_size_x = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.is_global_pooling() ? <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x() : <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pool_size().width;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pool_size_y = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.is_global_pooling() ? <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y() : <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pool_size().height;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93">PoolingType</a> type = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pool_type();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">int</span> pool_stride_x = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pad_stride_info().stride().first;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">int</span> pool_stride_y = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pad_stride_info().stride().second;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">int</span> pad_left = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pad_stride_info().pad_left();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">int</span> pad_top = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pad_stride_info().pad_top();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">int</span> pad_right = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pad_stride_info().pad_right();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">int</span> pad_bottom = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.pad_stride_info().pad_bottom();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">bool</span> exclude_padding = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.exclude_padding();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> w_src = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0]);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> h_src = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1]);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> upper_dims = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size() / (w_src * h_src);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> w_dst = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape()[0]);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> h_dst = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape()[1]);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span>(type == <a class="code" href="elementwise__operation_8cl.xhtml#aacc3ee1a7f283f8ef65cea31f4436a95">PoolingType::MAX</a>)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; upper_dims; ++r)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> h = 0; h &lt; h_dst; ++h)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> &lt; w_dst; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">int</span> wstart = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> * pool_stride_x - pad_left;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">int</span> hstart = h * pool_stride_y - pad_top;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">int</span> wend = std::min(wstart + pool_size_x, w_src);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">int</span> hend = std::min(hstart + pool_size_y, h_src);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; wstart = std::max(wstart, 0);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; hstart = std::max(hstart, 0);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; T max_val = <a class="code" href="namespacearm__compute_1_1support_1_1cpp11.xhtml#a73e352c61baaf9c1178da2d30105b04e">std::numeric_limits&lt;T&gt;::lowest</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = hstart; y &lt; hend; ++y)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = wstart; x &lt; wend; ++x)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">const</span> T val = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[r * h_src * w_src + y * w_src + x];</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span>(val &gt; max_val)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; max_val = val;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[r * h_dst * w_dst + h * w_dst + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>] = max_val;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">else</span> <span class="comment">// Average or l2 pooling</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; upper_dims; ++r)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> h = 0; h &lt; h_dst; ++h)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> &lt; w_dst; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; T avg_val(0);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">int</span> wstart = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> * pool_stride_x - pad_left;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">int</span> hstart = h * pool_stride_y - pad_top;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordtype">int</span> wend = std::min(wstart + pool_size_x, w_src + pad_right);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordtype">int</span> hend = std::min(hstart + pool_size_y, h_src + pad_bottom);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordtype">int</span> pool = (hend - hstart) * (wend - wstart);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; wstart = std::max(wstart, 0);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; hstart = std::max(hstart, 0);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; wend = std::min(wend, w_src);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; hend = std::min(hend, h_src);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// Exclude padding pixels from the average</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(exclude_padding)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; pool = (hend - hstart) * (wend - wstart);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span>(type == PoolingType::AVG)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = hstart; y &lt; hend; ++y)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = wstart; x &lt; wend; ++x)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; avg_val += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[r * h_src * w_src + y * w_src + x];</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[r * h_dst * w_dst + h * w_dst + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>] = avg_val / pool;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = hstart; y &lt; hend; ++y)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = wstart; x &lt; wend; ++x)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">const</span> T val = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[r * h_src * w_src + y * w_src + x];</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; avg_val += val * val;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[r * h_dst * w_dst + h * w_dst + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>] = std::sqrt(avg_val / pool);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1a367830ae09bf6138df822888ec1d71"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">arm_compute::test::validation::w</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; w</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">DFT.cpp:156</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1support_1_1cpp11_xhtml_a73e352c61baaf9c1178da2d30105b04e"><div class="ttname"><a href="namespacearm__compute_1_1support_1_1cpp11.xhtml#a73e352c61baaf9c1178da2d30105b04e">arm_compute::support::cpp11::lowest</a></div><div class="ttdeci">T lowest()</div><div class="ttdef"><b>Definition:</b> <a href="_toolchain_support_8h_source.xhtml#l00384">ToolchainSupport.h:384</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1misc_1_1shape__calculator_xhtml_ad242bedd6845b8fc13ade41cfc062c83"><div class="ttname"><a href="namespacearm__compute_1_1misc_1_1shape__calculator.xhtml#ad242bedd6845b8fc13ade41cfc062c83">arm_compute::misc::shape_calculator::compute_pool_shape</a></div><div class="ttdeci">TensorShape compute_pool_shape(const ITensorInfo &amp;input, PoolingLayerInfo pool_info)</div><div class="ttdoc">Calculate the output pool shape of a tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_shape_calculator_8h_source.xhtml#l00751">ShapeCalculator.h:751</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a6dc630a6ae9cc063b3924bcea8dee9d6"><div class="ttname"><a href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(...)</div><div class="ttdoc">To avoid unused variables warnings.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00160">Error.h:160</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a9172da722f0a434e5cc07c0a3c115d93"><div class="ttname"><a href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93">arm_compute::PoolingType</a></div><div class="ttdeci">PoolingType</div><div class="ttdoc">Available pooling types.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00564">Types.h:564</a></div></div>
<div class="ttc" id="elementwise__operation_8cl_xhtml_aacc3ee1a7f283f8ef65cea31f4436a95"><div class="ttname"><a href="elementwise__operation_8cl.xhtml#aacc3ee1a7f283f8ef65cea31f4436a95">MAX</a></div><div class="ttdeci">#define MAX(x, y)</div><div class="ttdef"><b>Definition:</b> <a href="elementwise__operation_8cl_source.xhtml#l00036">elementwise_operation.cl:36</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_error_8h_source.xhtml#l00160">ARM_COMPUTE_UNUSED</a>, <a class="el" href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93afcefd647d6a866603c627b11347c707a">arm_compute::AVG</a>, <a class="el" href="_shape_calculator_8h_source.xhtml#l00751">arm_compute::misc::shape_calculator::compute_pool_shape()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, <a class="el" href="_toolchain_support_8h_source.xhtml#l00384">arm_compute::support::cpp11::lowest()</a>, <a class="el" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5">arm_compute::MAX</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">arm_compute::test::validation::w</a>.</p>
</div>
</div>
<a id="a0beab02ef175107dcfd9dc3611d3f2ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0beab02ef175107dcfd9dc3611d3f2ac">&#9670;&nbsp;</a></span>pooling_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::pooling_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output_qinfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5ac7877012c2099a41b4d916ddf71505"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ac7877012c2099a41b4d916ddf71505">&#9670;&nbsp;</a></span>pooling_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::pooling_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output_qinfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a917e9b0539263f775435cac95a8836a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a917e9b0539263f775435cac95a8836a9">&#9670;&nbsp;</a></span>pooling_layer&lt; uint8_t &gt;()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aa38db3b299b350b91320f4e3a39ee437">arm_compute::test::validation::reference::pooling_layer</a>&lt; uint8_t &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>output_qinfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_pooling_layer_8cpp_source.xhtml#l00156">156</a> of file <a class="el" href="validation_2reference_2_pooling_layer_8cpp_source.xhtml">PoolingLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;{</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; SimpleTensor&lt;float&gt; src_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; SimpleTensor&lt;float&gt; dst_tmp = pooling_layer&lt;float&gt;(src_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, output_qinfo);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">convert_to_asymmetric</a>(dst_tmp, output_qinfo);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a291a16e64b05bdf4d08e1240d5bb286a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">arm_compute::test::validation::convert_to_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; convert_to_asymmetric(const SimpleTensor&lt; float &gt; &amp;src, const QuantizationInfo &amp;quantization_info)</div><div class="ttdoc">Convert float simple tensor into quantized using specified quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">Helpers.cpp:123</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab24849be91cfb00a72f7a61a7e00fdb7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">arm_compute::test::validation::convert_from_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; convert_from_asymmetric(const SimpleTensor&lt; uint8_t &gt; &amp;src)</div><div class="ttdoc">Convert quantized simple tensor into float using tensor quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">Helpers.cpp:111</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">arm_compute::test::validation::convert_from_asymmetric()</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">arm_compute::test::validation::convert_to_asymmetric()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="ae818153eecc4ec9cf48a982e155ed954"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae818153eecc4ec9cf48a982e155ed954">&#9670;&nbsp;</a></span>prior_box_layer() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; prior_box_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_prior_box_layer_info.xhtml">PriorBoxLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_prior_box_layer_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="reference_2_prior_box_layer_8cpp_source.xhtml">PriorBoxLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> layer_width = static_cast&lt;int&gt;(src1.shape()[0]);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> layer_height = static_cast&lt;int&gt;(src1.shape()[1]);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">int</span> img_width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.img_size().x;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">int</span> img_height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.img_size().y;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span>(img_width == 0 || img_height == 0)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; img_width = static_cast&lt;int&gt;(src2.shape()[0]);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; img_height = static_cast&lt;int&gt;(src2.shape()[1]);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">float</span> step_x = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.steps()[0];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">float</span> step_y = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.steps()[1];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span>(step_x == 0.f || step_y == 0.f)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; step_x = static_cast&lt;float&gt;(img_width) / layer_width;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; step_x = static_cast&lt;float&gt;(img_height) / layer_height;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">// Calculate number of aspect ratios</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_priors = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.aspect_ratios().size() * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.min_sizes().size() + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.max_sizes().size();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> total_elements = layer_width * layer_height * num_priors * 4;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; SimpleTensor&lt;T&gt; result(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, src1.data_type());</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">int</span> idx = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = 0; y &lt; layer_height; ++y)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = 0; x &lt; layer_width; ++x)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> center_x = (x + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.offset()) * step_x;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> center_y = (y + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.offset()) * step_y;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">float</span> box_width;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">float</span> box_height;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.min_sizes().size(); ++i)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> min_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.min_sizes().at(i);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; box_width = min_size;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; box_height = min_size;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// (xmin, ymin, xmax, ymax)</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; result[idx++] = (center_x - box_width / 2.f) / img_width;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; result[idx++] = (center_y - box_height / 2.f) / img_height;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; result[idx++] = (center_x + box_width / 2.f) / img_width;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; result[idx++] = (center_y + box_height / 2.f) / img_height;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.max_sizes().empty())</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> max_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.max_sizes().at(i);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; box_width = sqrt(min_size * max_size);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; box_height = box_width;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// (xmin, ymin, xmax, ymax)</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; result[idx++] = (center_x - box_width / 2.f) / img_width;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; result[idx++] = (center_y - box_height / 2.f) / img_height;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; result[idx++] = (center_x + box_width / 2.f) / img_width;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; result[idx++] = (center_y + box_height / 2.f) / img_height;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// rest of priors</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> ar : <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.aspect_ratios())</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span>(fabs(ar - 1.) &lt; 1e-6)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; box_width = min_size * sqrt(ar);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; box_height = min_size / sqrt(ar);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="comment">// (xmin, ymin, xmax, ymax)</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; result[idx++] = (center_x - box_width / 2.f) / img_width;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; result[idx++] = (center_y - box_height / 2.f) / img_height;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; result[idx++] = (center_x + box_width / 2.f) / img_width;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; result[idx++] = (center_y + box_height / 2.f) / img_height;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// clip the coordinates</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.clip())</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; total_elements; ++i)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; result[i] = std::min&lt;T&gt;(std::max&lt;T&gt;(result[i], 0.f), 1.f);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// set the variance.</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.variances().size() == 1)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; std::fill_n(result.data() + idx, total_elements, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.variances().at(0));</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> h = 0; h &lt; layer_height; ++h)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> &lt; layer_width; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; num_priors; ++i)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j &lt; 4; ++j)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; result[idx++] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.variances().at(j);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1a367830ae09bf6138df822888ec1d71"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">arm_compute::test::validation::w</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; w</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">DFT.cpp:156</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">arm_compute::test::validation::w</a>.</p>
</div>
</div>
<a id="a5c109a38e30fffa792941d8812c03aa2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c109a38e30fffa792941d8812c03aa2">&#9670;&nbsp;</a></span>prior_box_layer() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::prior_box_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_prior_box_layer_info.xhtml">PriorBoxLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4ca6df865d7c7b1ef0863135de905560"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ca6df865d7c7b1ef0863135de905560">&#9670;&nbsp;</a></span>quantization_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; quantization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>quantization_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_quantization_layer_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="validation_2reference_2_quantization_layer_8cpp_source.xhtml">QuantizationLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), DataType::QASYMM8, 1, quantization_info };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> UniformQuantizationInfo <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad85d7becf0c6e3cffbc255489808e219">qinfo</a> = quantization_info.<a class="code" href="classarm__compute_1_1_quantization_info.xhtml#a706fc156bcd4c45441bcaad05884b57d">uniform</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#ifdef __aarch64__</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = <a class="code" href="namespacearm__compute.xhtml#a25591070cf041aff512719050c39e5ee">quantize_qasymm8</a>((<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad85d7becf0c6e3cffbc255489808e219">qinfo</a>, RoundingPolicy::TO_NEAREST_EVEN);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#else // __aarch64__</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = <a class="code" href="namespacearm__compute.xhtml#a25591070cf041aff512719050c39e5ee">quantize_qasymm8</a>((<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad85d7becf0c6e3cffbc255489808e219">qinfo</a>, RoundingPolicy::TO_ZERO);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#endif // __aarch64__</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="ttc" id="classarm__compute_1_1_quantization_info_xhtml_a706fc156bcd4c45441bcaad05884b57d"><div class="ttname"><a href="classarm__compute_1_1_quantization_info.xhtml#a706fc156bcd4c45441bcaad05884b57d">arm_compute::QuantizationInfo::uniform</a></div><div class="ttdeci">UniformQuantizationInfo uniform() const</div><div class="ttdoc">Return per layer quantization info.</div><div class="ttdef"><b>Definition:</b> <a href="_quantization_info_8h_source.xhtml#l00134">QuantizationInfo.h:134</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad85d7becf0c6e3cffbc255489808e219"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad85d7becf0c6e3cffbc255489808e219">arm_compute::test::validation::qinfo</a></div><div class="ttdeci">const QuantizationInfo qinfo</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00150">Im2Col.cpp:150</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a25591070cf041aff512719050c39e5ee"><div class="ttname"><a href="namespacearm__compute.xhtml#a25591070cf041aff512719050c39e5ee">arm_compute::quantize_qasymm8</a></div><div class="ttdeci">uint8_t quantize_qasymm8(float value, const UniformQuantizationInfo &amp;qinfo, RoundingPolicy rounding_policy=RoundingPolicy::TO_NEAREST_UP)</div><div class="ttdoc">Quantize a value given a asymmetric quantization scheme.</div><div class="ttdef"><b>Definition:</b> <a href="_quantization_info_8h_source.xhtml#l00204">QuantizationInfo.h:204</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6af14462d71aa842202c3e4b272c7ec924">arm_compute::QASYMM8</a>, <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00150">arm_compute::test::validation::qinfo</a>, <a class="el" href="_quantization_info_8h_source.xhtml#l00204">arm_compute::quantize_qasymm8()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea02ff1fff1812f84c89547fcd6c176150">arm_compute::TO_NEAREST_EVEN</a>, <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea5631ad8e27788edfca7e13535d862c06">arm_compute::TO_ZERO</a>, and <a class="el" href="_quantization_info_8h_source.xhtml#l00134">QuantizationInfo::uniform()</a>.</p>
</div>
</div>
<a id="ae4d272c20d8e0a0602f09fc47e5ce8b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae4d272c20d8e0a0602f09fc47e5ce8b2">&#9670;&nbsp;</a></span>quantization_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::quantization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>quantization_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5e4ff6559d8b4605b79f7de733802ed5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5e4ff6559d8b4605b79f7de733802ed5">&#9670;&nbsp;</a></span>quantization_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::quantization_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_quantization_info.xhtml">QuantizationInfo</a> &amp;&#160;</td>
<td class="paramname"><em>quantization_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a87f09c74765be18a99038478f96daf9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a87f09c74765be18a99038478f96daf9b">&#9670;&nbsp;</a></span>range() <span class="overload">[1/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; range </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>num_of_elements</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>step</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_range_8cpp_source.xhtml#l00050">50</a> of file <a class="el" href="reference_2_range_8cpp_source.xhtml">Range.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; generate_range(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, start, num_of_elements, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a75b73e17c4ebe901e44af3b2b9846ab3">step</a>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a75b73e17c4ebe901e44af3b2b9846ab3"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a75b73e17c4ebe901e44af3b2b9846ab3">arm_compute::test::validation::step</a></div><div class="ttdeci">const int step</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_select_8cpp_source.xhtml#l00172">Select.cpp:172</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, and <a class="el" href="_c_l_2_select_8cpp_source.xhtml#l00172">arm_compute::test::validation::step</a>.</p>
<p class="reference">Referenced by <a class="el" href="tensor__transform_8cpp_source.xhtml#l00132">arm_compute::helpers::tensor_transform::compute_strided_slice_output_shape()</a>, <a class="el" href="_c_l_histogram_kernel_8cpp_source.xhtml#l00053">CLHistogramKernel::configure()</a>, <a class="el" href="_c_l_histogram_kernel_8cpp_source.xhtml#l00158">CLHistogramBorderKernel::configure()</a>, <a class="el" href="validation_2_c_l_2_histogram_8cpp_source.xhtml#l00048">arm_compute::test::validation::DATA_TEST_CASE()</a>, <a class="el" href="histogram_8cl_source.xhtml#l00141">hist_border_kernel()</a>, <a class="el" href="histogram_8cl_source.xhtml#l00068">hist_local_kernel()</a>, <a class="el" href="validation_2reference_2_histogram_8cpp_source.xhtml#l00038">histogram()</a>, <a class="el" href="_test_filter_8cpp_source.xhtml#l00043">TestFilter::is_selected()</a>, and <a class="el" href="_graph_utils_8cpp_source.xhtml#l00064">TFPreproccessor::preprocess()</a>.</p>
</div>
</div>
<a id="ad7059348bb7b955422375b8759747abb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7059348bb7b955422375b8759747abb">&#9670;&nbsp;</a></span>range() <span class="overload">[2/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::range </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>num_of_elements</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>step</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_range_8cpp_source.xhtml#l00057">57</a> of file <a class="el" href="reference_2_range_8cpp_source.xhtml">Range.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data_type() == DataType::QASYMM8)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; SimpleTensor&lt;float&gt; dst_tmp{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape(), DataType::F32, 1 };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; generate_range(dst_tmp, start, num_of_elements, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a75b73e17c4ebe901e44af3b2b9846ab3">step</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">convert_to_asymmetric</a>(dst_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.quantization_info());</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; generate_range(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, start, num_of_elements, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a75b73e17c4ebe901e44af3b2b9846ab3">step</a>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a75b73e17c4ebe901e44af3b2b9846ab3"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a75b73e17c4ebe901e44af3b2b9846ab3">arm_compute::test::validation::step</a></div><div class="ttdeci">const int step</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_select_8cpp_source.xhtml#l00172">Select.cpp:172</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a291a16e64b05bdf4d08e1240d5bb286a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">arm_compute::test::validation::convert_to_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; convert_to_asymmetric(const SimpleTensor&lt; float &gt; &amp;src, const QuantizationInfo &amp;quantization_info)</div><div class="ttdoc">Convert float simple tensor into quantized using specified quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">Helpers.cpp:123</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">arm_compute::test::validation::convert_to_asymmetric()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::F32</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6af14462d71aa842202c3e4b272c7ec924">arm_compute::QASYMM8</a>, and <a class="el" href="_c_l_2_select_8cpp_source.xhtml#l00172">arm_compute::test::validation::step</a>.</p>
</div>
</div>
<a id="a212bceee8ca9a28470ed0b9576f8f0da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a212bceee8ca9a28470ed0b9576f8f0da">&#9670;&nbsp;</a></span>range() <span class="overload">[3/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::range </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>num_of_elements</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>step</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af736e2b03b30fa5c7c98b387d3625f7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af736e2b03b30fa5c7c98b387d3625f7c">&#9670;&nbsp;</a></span>range() <span class="overload">[4/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::range </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>num_of_elements</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>step</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7addbd608f3a8bc3d6b7bcd8bf31d6c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7addbd608f3a8bc3d6b7bcd8bf31d6c6">&#9670;&nbsp;</a></span>range() <span class="overload">[5/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int8_t&gt; arm_compute::test::validation::reference::range </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>num_of_elements</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>step</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6683ba7c5a30679bc9d47a6a67cd85ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6683ba7c5a30679bc9d47a6a67cd85ac">&#9670;&nbsp;</a></span>range() <span class="overload">[6/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint16_t&gt; arm_compute::test::validation::reference::range </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>num_of_elements</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>step</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3ab673882fe9a507e864e4cf0377ef33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ab673882fe9a507e864e4cf0377ef33">&#9670;&nbsp;</a></span>range() <span class="overload">[7/7]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::range </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>num_of_elements</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>step</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9b8dffeef6fede89bb1d53aa94821357"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b8dffeef6fede89bb1d53aa94821357">&#9670;&nbsp;</a></span>rdft_1d() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; rdft_1d </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs an one dimensional DFT on a real input. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source tensor.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Complex output of length n/2 + 1 due to symmetry. </dd></dl>
<p class="definition">Definition at line <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00291">291</a> of file <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml">DFT.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;{</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> rdft_1d_core(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, FFTDirection::Forward, <span class="keyword">false</span>);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564a67d2f6740a8eaebf4d5c6f79be8da481">Forward</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00077">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="a0bf45a393588a4696b3c828dcffb2581"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0bf45a393588a4696b3c828dcffb2581">&#9670;&nbsp;</a></span>rdft_1d() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::rdft_1d </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad12f9453958fc91c32e2ba138bbe85c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad12f9453958fc91c32e2ba138bbe85c2">&#9670;&nbsp;</a></span>rdft_2d() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; rdft_2d </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a two dimensional DFT on a real input. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source tensor.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Complex output of length n/2 + 1 across width due to symmetry and height of same size as the input. </dd></dl>
<p class="definition">Definition at line <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00320">320</a> of file <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml">DFT.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;{</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels() != 1);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; constexpr <a class="code" href="namespacearm__compute.xhtml#a86a0c8e195c900a895c249662cfaa564">FFTDirection</a> direction = FFTDirection::Forward;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">auto</span> first_pass = rdft_1d_core(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, direction, <span class="keyword">false</span>);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keyword">auto</span> transposed = <a class="code" href="namespacearm__compute.xhtml#a21c3e11887f3acf9284ca763372c7da0">permute</a>(first_pass, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keyword">auto</span> second_pass = dft_1d_core(transposed, direction);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#a21c3e11887f3acf9284ca763372c7da0">permute</a>(second_pass, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;}</div><div class="ttc" id="namespacearm__compute_xhtml_a33e65be485104e2e9e69fca551d6f492"><div class="ttname"><a href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">arm_compute::PermutationVector</a></div><div class="ttdeci">Strides PermutationVector</div><div class="ttdoc">Permutation vector.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00047">Types.h:47</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a21c3e11887f3acf9284ca763372c7da0"><div class="ttname"><a href="namespacearm__compute.xhtml#a21c3e11887f3acf9284ca763372c7da0">arm_compute::permute</a></div><div class="ttdeci">void permute(Dimensions&lt; T &gt; &amp;dimensions, const PermutationVector &amp;perm)</div><div class="ttdoc">Permutes given Dimensions according to a permutation vector.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00570">Helpers.h:570</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_1_1cast_xhtml_a2ea3d1fc01a3a442900249ca182ffa5e"><div class="ttname"><a href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">arm_compute::utils::cast::U</a></div><div class="ttdeci">U</div><div class="ttdef"><b>Definition:</b> <a href="_saturate_cast_8h_source.xhtml#l00057">SaturateCast.h:57</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a86a0c8e195c900a895c249662cfaa564"><div class="ttname"><a href="namespacearm__compute.xhtml#a86a0c8e195c900a895c249662cfaa564">arm_compute::FFTDirection</a></div><div class="ttdeci">FFTDirection</div><div class="ttdoc">FFT direction to use.</div><div class="ttdef"><b>Definition:</b> <a href="_function_descriptors_8h_source.xhtml#l00031">FunctionDescriptors.h:31</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564a67d2f6740a8eaebf4d5c6f79be8da481">Forward</a>, <a class="el" href="reference_2_permute_8cpp_source.xhtml#l00038">permute()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00374">conv2d_dft()</a>.</p>
</div>
</div>
<a id="a8ecde15afcabe3298032697a97f633ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ecde15afcabe3298032697a97f633ee">&#9670;&nbsp;</a></span>rdft_2d() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::rdft_2d </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af60a1dac48760822d607c1063ebbe6a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af60a1dac48760822d607c1063ebbe6a7">&#9670;&nbsp;</a></span>reduction_operation() <span class="overload">[1/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; OT &gt; reduction_operation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a>&#160;</td>
<td class="paramname"><em>op</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_reduction_operation_8cpp_source.xhtml#l00272">272</a> of file <a class="el" href="reference_2_reduction_operation_8cpp_source.xhtml">ReductionOperation.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;{</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">return</span> compute_reduction_operation&lt;T, OT&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, op);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_accc088009d44c521706aa98d6387ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">arm_compute::test::validation::axis</a></div><div class="ttdeci">axis</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">StackLayer.cpp:226</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">arm_compute::test::validation::axis</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="ab30b1e08a80af30bfd156b37a1abb1cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab30b1e08a80af30bfd156b37a1abb1cb">&#9670;&nbsp;</a></span>reduction_operation() <span class="overload">[2/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; reduction_operation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a>&#160;</td>
<td class="paramname"><em>op</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_reduction_operation_8cpp_source.xhtml#l00278">278</a> of file <a class="el" href="reference_2_reduction_operation_8cpp_source.xhtml">ReductionOperation.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;{</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type() == DataType::QASYMM8 &amp;&amp; op != ReductionOperation::MEAN_SUM)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; SimpleTensor&lt;float&gt; src_f = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; SimpleTensor&lt;float&gt; dst_f = reference::reduction_operation&lt;float, float&gt;(src_f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, op);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">convert_to_asymmetric</a>(dst_f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info());</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">return</span> compute_reduction_operation&lt;uint8_t, uint8_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, op);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a291a16e64b05bdf4d08e1240d5bb286a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">arm_compute::test::validation::convert_to_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; convert_to_asymmetric(const SimpleTensor&lt; float &gt; &amp;src, const QuantizationInfo &amp;quantization_info)</div><div class="ttdoc">Convert float simple tensor into quantized using specified quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">Helpers.cpp:123</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_accc088009d44c521706aa98d6387ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">arm_compute::test::validation::axis</a></div><div class="ttdeci">axis</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">StackLayer.cpp:226</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab24849be91cfb00a72f7a61a7e00fdb7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">arm_compute::test::validation::convert_from_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; convert_from_asymmetric(const SimpleTensor&lt; uint8_t &gt; &amp;src)</div><div class="ttdoc">Convert quantized simple tensor into float using tensor quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">Helpers.cpp:111</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">arm_compute::test::validation::axis</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">arm_compute::test::validation::convert_from_asymmetric()</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">arm_compute::test::validation::convert_to_asymmetric()</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45bafc54513dae613e117ffc4169e48bfce5">arm_compute::MEAN_SUM</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6af14462d71aa842202c3e4b272c7ec924">arm_compute::QASYMM8</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a932891a0376da4e0e9f241198510579a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a932891a0376da4e0e9f241198510579a">&#9670;&nbsp;</a></span>reduction_operation() <span class="overload">[3/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; reduction_operation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a>&#160;</td>
<td class="paramname"><em>op</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abd88464f51da580f28e4bf4331d7971f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd88464f51da580f28e4bf4331d7971f">&#9670;&nbsp;</a></span>reduction_operation() <span class="overload">[4/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; reduction_operation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a>&#160;</td>
<td class="paramname"><em>op</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac5d5dccca0cbb8321afb54ca05e26334"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5d5dccca0cbb8321afb54ca05e26334">&#9670;&nbsp;</a></span>reduction_operation() <span class="overload">[5/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint32_t&gt; arm_compute::test::validation::reference::reduction_operation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a>&#160;</td>
<td class="paramname"><em>op</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aed42c1608aca814177de65bc078660c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed42c1608aca814177de65bc078660c9">&#9670;&nbsp;</a></span>remap() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; remap </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>map_x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>map_y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>valid_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_remap_8cpp_source.xhtml#l00041">41</a> of file <a class="el" href="validation_2reference_2_remap_8cpp_source.xhtml">Remap.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::REPLICATE, <span class="stringliteral">&quot;BorderMode not supported&quot;</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; SimpleTensor&lt;T&gt; out(in.shape(), in.data_type());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(out.num_elements() != map_x.num_elements());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width = in.shape().x();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height = in.shape().y();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> idx = 0; idx &lt; out.num_elements(); idx++)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> Coordinates id_out = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(out.shape(), idx);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; valid_mask[idx] = 1;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; Coordinates src_idx = id_out; <span class="comment">// need to setup all coordinates and not just xy</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; src_idx.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#a982730e6f0da5f9490f59bc5f6bb3f27">set</a>(0, static_cast&lt;int&gt;(std::floor(map_x[idx])));</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; src_idx.set(1, static_cast&lt;int&gt;(std::floor(map_y[idx])));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span>((0 &lt;= map_y[idx]) &amp;&amp; (map_y[idx] &lt; height) &amp;&amp; (0 &lt;= map_x[idx]) &amp;&amp; (map_x[idx] &lt; width))</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::NEAREST_NEIGHBOR:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; out[idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(in, src_idx, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::BILINEAR:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a997c20c740c2cf8dd5676ad55ad8a1a6">valid_bilinear_policy</a>(map_x[idx], map_y[idx], width, height, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>)) ?</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; out[idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">bilinear_policy</a>(in, src_idx, map_x[idx], map_y[idx], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value) :</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; valid_mask[idx] = 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::AREA:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Interpolation not supported&quot;</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::UNDEFINED)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; valid_mask[idx] = 0;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::NEAREST_NEIGHBOR:</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; out[idx] = constant_border_value;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::BILINEAR:</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; out[idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">bilinear_policy</a>(in, src_idx, map_x[idx], map_y[idx], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::AREA:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad986b73e9d5f47a623a9b6d773c25e34"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">arm_compute::test::validation::policy</a></div><div class="ttdeci">policy</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">ArithmeticAddition.cpp:136</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_a982730e6f0da5f9490f59bc5f6bb3f27"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#a982730e6f0da5f9490f59bc5f6bb3f27">arm_compute::Dimensions::set</a></div><div class="ttdeci">void set(size_t dimension, T value)</div><div class="ttdoc">Accessor to set the value of one of the dimensions.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00074">Dimensions.h:74</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a92fd4059750cbbeecd8ad03f279200e1"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">arm_compute::test::validation::bilinear_policy</a></div><div class="ttdeci">T bilinear_policy(const SimpleTensor&lt; T &gt; &amp;in, Coordinates id, float xn, float yn, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8cpp_source.xhtml#l00036">Utils.cpp:36</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a997c20c740c2cf8dd5676ad55ad8a1a6"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a997c20c740c2cf8dd5676ad55ad8a1a6">arm_compute::test::validation::valid_bilinear_policy</a></div><div class="ttdeci">bool valid_bilinear_policy(float xn, float yn, int width, int height, BorderMode border_mode)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8cpp_source.xhtml#l00098">Utils.cpp:98</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a5bbdcf574d3f5e412fa6a1117911e67b"><div class="ttname"><a href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_MSG(cond,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00328">Error.h:328</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a639aaa22a784d5e5cb03a522267e79c4">arm_compute::AREA</a>, <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_error_8h_source.xhtml#l00328">ARM_COMPUTE_ERROR_ON_MSG</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65">arm_compute::BILINEAR</a>, <a class="el" href="tests_2validation_2reference_2_utils_8cpp_source.xhtml#l00036">arm_compute::test::validation::bilinear_policy()</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">arm_compute::NEAREST_NEIGHBOR</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00407">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">arm_compute::test::validation::policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa">arm_compute::REPLICATE</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00074">Dimensions&lt; T &gt;::set()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::UNDEFINED</a>, and <a class="el" href="validation_2reference_2_warp_affine_8cpp_source.xhtml#l00036">valid_bilinear_policy()</a>.</p>
</div>
</div>
<a id="ae76991329781f552c3a2d66a9dd5af79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae76991329781f552c3a2d66a9dd5af79">&#9670;&nbsp;</a></span>remap() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::remap </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>map_x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>map_y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>valid_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae1f5beb81386b778b885aff723e6ebac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1f5beb81386b778b885aff723e6ebac">&#9670;&nbsp;</a></span>reorg_layer() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; reorg_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>stride</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_reorg_layer_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_reorg_layer_8cpp_source.xhtml">ReorgLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().num_dimensions() &gt; 4);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_layout() != DataLayout::NCHW);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; TensorInfo <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ae008e90eb6906fa3526213bc860f6cc5">input_info</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), 1, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> TensorShape <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a> = <a class="code" href="namespacearm__compute_1_1misc_1_1shape__calculator.xhtml#afbc83cd4145d161da4c026e1f5743e1d">misc::shape_calculator::compute_reorg_output_shape</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ae008e90eb6906fa3526213bc860f6cc5">input_info</a>, stride);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// Create destination tensor</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type() };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> W = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().x();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> H = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().y();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> C = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().z();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> out_c = C / (stride * stride);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outer_dims = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape().total_size() / (W * H * C);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// Calculate layer reorg in NCHW</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; Coordinates map_coords;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> &lt; outer_dims; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; map_coords.set(3, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; C; ++c)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; map_coords.set(2, c % out_c);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a> = c / out_c;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; H; ++h)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; map_coords.set(1, h * stride + <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a> / stride);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> &lt; W; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dst_idx = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> + W * (h + H * (c + C * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; map_coords.set(0, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> * stride + <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a> % stride);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[dst_idx] = *reinterpret_cast&lt;const T *&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>(map_coords));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div><div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">helpers.h:328</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1a367830ae09bf6138df822888ec1d71"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">arm_compute::test::validation::w</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; w</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">DFT.cpp:156</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1misc_1_1shape__calculator_xhtml_afbc83cd4145d161da4c026e1f5743e1d"><div class="ttname"><a href="namespacearm__compute_1_1misc_1_1shape__calculator.xhtml#afbc83cd4145d161da4c026e1f5743e1d">arm_compute::misc::shape_calculator::compute_reorg_output_shape</a></div><div class="ttdeci">TensorShape compute_reorg_output_shape(const ITensorInfo &amp;input, int32_t stride)</div><div class="ttdoc">Calculate the output shape of the reorg layer given a stride.</div><div class="ttdef"><b>Definition:</b> <a href="_shape_calculator_8h_source.xhtml#l00086">ShapeCalculator.h:86</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ae008e90eb6906fa3526213bc860f6cc5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ae008e90eb6906fa3526213bc860f6cc5">arm_compute::test::validation::input_info</a></div><div class="ttdeci">input_info</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_winograd_8cpp_source.xhtml#l00330">Winograd.cpp:330</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="_shape_calculator_8h_source.xhtml#l00086">arm_compute::misc::shape_calculator::compute_reorg_output_shape()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00330">arm_compute::test::validation::input_info</a>, <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">arm_compute::NCHW</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">offset()</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00074">Dimensions&lt; T &gt;::set()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">arm_compute::test::validation::w</a>.</p>
</div>
</div>
<a id="a686f6c85f504943e52d8c31bf0901cfc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a686f6c85f504943e52d8c31bf0901cfc">&#9670;&nbsp;</a></span>reorg_layer() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int32_t&gt; arm_compute::test::validation::reference::reorg_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>stride</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae45075f9ad201b87cfb3b13ceb238e97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae45075f9ad201b87cfb3b13ceb238e97">&#9670;&nbsp;</a></span>reorg_layer() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::reorg_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>stride</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a200c0a6470a0c4163afd69c527d2b12d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a200c0a6470a0c4163afd69c527d2b12d">&#9670;&nbsp;</a></span>reorg_layer() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int8_t&gt; arm_compute::test::validation::reference::reorg_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>stride</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="adeeeba93b83ffdad47f4357c08cfea0e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adeeeba93b83ffdad47f4357c08cfea0e">&#9670;&nbsp;</a></span>reshape_layer() <span class="overload">[1/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; reshape_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>[ReshapeLayer] </p>
<p class="definition">Definition at line <a class="el" href="tests_2validation_2reference_2_reshape_layer_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="tests_2validation_2reference_2_reshape_layer_8cpp_source.xhtml">ReshapeLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size() != <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>.total_size());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; std::copy_n(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="afea45dc2b397b75108739c4300aa18ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afea45dc2b397b75108739c4300aa18ad">&#9670;&nbsp;</a></span>reshape_layer() <span class="overload">[2/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::reshape_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a572f373a0f24d9e7d749454280411318"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a572f373a0f24d9e7d749454280411318">&#9670;&nbsp;</a></span>reshape_layer() <span class="overload">[3/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int8_t&gt; arm_compute::test::validation::reference::reshape_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a79a315f543d17f87f44d7b142e1efbbe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a79a315f543d17f87f44d7b142e1efbbe">&#9670;&nbsp;</a></span>reshape_layer() <span class="overload">[4/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint16_t&gt; arm_compute::test::validation::reference::reshape_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1b2ecbb6f4180bb42c65ed575c8fd313"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b2ecbb6f4180bb42c65ed575c8fd313">&#9670;&nbsp;</a></span>reshape_layer() <span class="overload">[5/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::reshape_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a42623cecebd86038ac287252a1ead241"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42623cecebd86038ac287252a1ead241">&#9670;&nbsp;</a></span>reshape_layer() <span class="overload">[6/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint32_t&gt; arm_compute::test::validation::reference::reshape_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1406fe85a6bec4007f13cc57c4e99767"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1406fe85a6bec4007f13cc57c4e99767">&#9670;&nbsp;</a></span>reshape_layer() <span class="overload">[7/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int32_t&gt; arm_compute::test::validation::reference::reshape_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a60d98374b4adcd883653831e70b13b4c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60d98374b4adcd883653831e70b13b4c">&#9670;&nbsp;</a></span>reshape_layer() <span class="overload">[8/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::reshape_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac3850e0704ba9d6ef260170e87ca1e66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac3850e0704ba9d6ef260170e87ca1e66">&#9670;&nbsp;</a></span>reshape_layer() <span class="overload">[9/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::reshape_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1936f5feb8c9357acc4555686d4e5cf2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1936f5feb8c9357acc4555686d4e5cf2">&#9670;&nbsp;</a></span>reverse() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; reverse </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_reverse_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_reverse_8cpp_source.xhtml">Reverse.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>.shape().num_dimensions() &gt; 1);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>.shape().x() &gt; 4);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info() };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depth = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batches = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[3];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; std::array&lt;bool, 4&gt; to_reverse = { { <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span> } };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>.num_elements(); ++i)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; to_reverse[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>[i]] = <span class="keyword">true</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> Coordinates src_coord = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), i);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dst_x = to_reverse[0] ? width - src_coord[0] - 1 : src_coord[0];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dst_y = to_reverse[1] ? height - src_coord[1] - 1 : src_coord[1];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dst_z = to_reverse[2] ? depth - src_coord[2] - 1 : src_coord[2];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dst_w = to_reverse[3] ? batches - src_coord[3] - 1 : src_coord[3];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[<a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), Coordinates(dst_x, dst_y, dst_z, dst_w))] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i];</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a9be4cb7e6ee20063a4a10bc3abb750b9"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">arm_compute::test::coord2index</a></div><div class="ttdeci">int coord2index(const TensorShape &amp;shape, const Coordinates &amp;coord)</div><div class="ttdoc">Linearise the given coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00480">Utils.h:480</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_accc088009d44c521706aa98d6387ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">arm_compute::test::validation::axis</a></div><div class="ttdeci">axis</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">StackLayer.cpp:226</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">arm_compute::test::validation::axis</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00480">arm_compute::test::coord2index()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00374">conv2d_dft()</a>, and <a class="el" href="utils_2_utils_8cpp_source.xhtml#l00224">arm_compute::utils::parse_npy_header()</a>.</p>
</div>
</div>
<a id="a919cf3591c7a0a86389412346be0b295"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a919cf3591c7a0a86389412346be0b295">&#9670;&nbsp;</a></span>reverse() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::reverse </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3092826e827607da8aa2799f2a231118"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3092826e827607da8aa2799f2a231118">&#9670;&nbsp;</a></span>reverse() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::reverse </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8b105426832fc39c634bdcaf8d5d9a1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b105426832fc39c634bdcaf8d5d9a1b">&#9670;&nbsp;</a></span>reverse() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::reverse </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a913f2b2a80ba620a225ab364822702b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a913f2b2a80ba620a225ab364822702b6">&#9670;&nbsp;</a></span>ridft_1d() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; ridft_1d </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>is_odd</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs an one dimensional inverse DFT on a real input. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source tensor. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">is_odd</td><td>(Optional) Specifies if the output has odd dimensions. Is used by the inverse variant to reconstruct odd sequences.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Complex output of length n/2 + 1 due to symmetry. </dd></dl>
<p class="definition">Definition at line <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00297">297</a> of file <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml">DFT.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;{</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">auto</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = rdft_1d_core(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, FFTDirection::Inverse, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a78f90e18c925576e2bd4d196a72e201f">is_odd</a>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">const</span> T scaling_factor = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape()[0];</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, scaling_factor);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a78f90e18c925576e2bd4d196a72e201f"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a78f90e18c925576e2bd4d196a72e201f">arm_compute::test::validation::is_odd</a></div><div class="ttdeci">const bool is_odd</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00120">DFT.cpp:120</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564a9f87f02f2da8f99c571b2a1c2a96132b">Inverse</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00120">arm_compute::test::validation::is_odd</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00077">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="a8ed62e13b9cf7f6b3eda27029dba2446"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ed62e13b9cf7f6b3eda27029dba2446">&#9670;&nbsp;</a></span>ridft_1d() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::ridft_1d </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>is_odd</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a381efef2cd1cc9b5fde49437b91db230"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a381efef2cd1cc9b5fde49437b91db230">&#9670;&nbsp;</a></span>ridft_2d() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; ridft_2d </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>is_odd</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a two dimensional inverse DFT on a real input. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Source tensor. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">is_odd</td><td>(Optional) Specifies if the output has odd dimensions across width. Is used by the inverse variant to reconstruct odd sequences.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Complex output of length n/2 + 1 across width due to symmetry and height of same size as the input. </dd></dl>
<p class="definition">Definition at line <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00332">332</a> of file <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml">DFT.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels() != 2);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; constexpr <a class="code" href="namespacearm__compute.xhtml#a86a0c8e195c900a895c249662cfaa564">FFTDirection</a> direction = FFTDirection::Inverse;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keyword">auto</span> transposed = <a class="code" href="namespacearm__compute.xhtml#a21c3e11887f3acf9284ca763372c7da0">permute</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keyword">auto</span> first_pass = dft_1d_core(transposed, direction);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">auto</span> transposed_2 = <a class="code" href="namespacearm__compute.xhtml#a21c3e11887f3acf9284ca763372c7da0">permute</a>(first_pass, <a class="code" href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">PermutationVector</a>(1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>, 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>));</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keyword">auto</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = rdft_1d_core(transposed_2, direction, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a78f90e18c925576e2bd4d196a72e201f">is_odd</a>);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">const</span> T scaling_factor = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape()[0] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape()[1];</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>, scaling_factor);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;}</div><div class="ttc" id="namespacearm__compute_xhtml_a33e65be485104e2e9e69fca551d6f492"><div class="ttname"><a href="namespacearm__compute.xhtml#a33e65be485104e2e9e69fca551d6f492">arm_compute::PermutationVector</a></div><div class="ttdeci">Strides PermutationVector</div><div class="ttdoc">Permutation vector.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00047">Types.h:47</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a21c3e11887f3acf9284ca763372c7da0"><div class="ttname"><a href="namespacearm__compute.xhtml#a21c3e11887f3acf9284ca763372c7da0">arm_compute::permute</a></div><div class="ttdeci">void permute(Dimensions&lt; T &gt; &amp;dimensions, const PermutationVector &amp;perm)</div><div class="ttdoc">Permutes given Dimensions according to a permutation vector.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00570">Helpers.h:570</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_1_1cast_xhtml_a2ea3d1fc01a3a442900249ca182ffa5e"><div class="ttname"><a href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">arm_compute::utils::cast::U</a></div><div class="ttdeci">U</div><div class="ttdef"><b>Definition:</b> <a href="_saturate_cast_8h_source.xhtml#l00057">SaturateCast.h:57</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a86a0c8e195c900a895c249662cfaa564"><div class="ttname"><a href="namespacearm__compute.xhtml#a86a0c8e195c900a895c249662cfaa564">arm_compute::FFTDirection</a></div><div class="ttdeci">FFTDirection</div><div class="ttdoc">FFT direction to use.</div><div class="ttdef"><b>Definition:</b> <a href="_function_descriptors_8h_source.xhtml#l00031">FunctionDescriptors.h:31</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a78f90e18c925576e2bd4d196a72e201f"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a78f90e18c925576e2bd4d196a72e201f">arm_compute::test::validation::is_odd</a></div><div class="ttdeci">const bool is_odd</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00120">DFT.cpp:120</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00317">PixelWiseMultiplication.cpp:317</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a86a0c8e195c900a895c249662cfaa564a9f87f02f2da8f99c571b2a1c2a96132b">Inverse</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00120">arm_compute::test::validation::is_odd</a>, <a class="el" href="reference_2_permute_8cpp_source.xhtml#l00038">permute()</a>, <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">scale()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00374">conv2d_dft()</a>.</p>
</div>
</div>
<a id="ae8285d2e58ae1ee57e5e45c23d35dc30"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8285d2e58ae1ee57e5e45c23d35dc30">&#9670;&nbsp;</a></span>ridft_2d() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::ridft_2d </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>is_odd</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae10aca11c62e91fcb01059cc7849ada6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae10aca11c62e91fcb01059cc7849ada6">&#9670;&nbsp;</a></span>roi_align_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; roi_align_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>rois</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_r_o_i_pooling_layer_info.xhtml">ROIPoolingLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>pool_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_r_o_i_align_layer_8cpp_source.xhtml#l00117">117</a> of file <a class="el" href="reference_2_r_o_i_align_layer_8cpp_source.xhtml">ROIAlignLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> values_per_roi = rois.shape()[0];</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_rois = rois.shape()[1];</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_data_type = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> *rois_ptr = static_cast&lt;const T *&gt;(rois.data());</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; TensorShape <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a865514e30baa11b11c8fa65f944532fb">input_shape</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; TensorShape <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>(pool_info.pooled_width(), pool_info.pooled_height(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2], num_rois);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, dst_data_type);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// Iterate over every pixel of the input image</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> px = 0; px &lt; pool_info.pooled_width(); ++px)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> py = 0; py &lt; pool_info.pooled_height(); ++py)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> pw = 0; pw &lt; num_rois; ++pw)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> roi_batch = rois_ptr[values_per_roi * pw];</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> x1 = float(rois_ptr[values_per_roi * pw + 1]);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> y1 = float(rois_ptr[values_per_roi * pw + 2]);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> x2 = float(rois_ptr[values_per_roi * pw + 3]);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> y2 = float(rois_ptr[values_per_roi * pw + 4]);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> roi_anchor_x = x1 * pool_info.spatial_scale();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> roi_anchor_y = y1 * pool_info.spatial_scale();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> roi_dims_x = std::max((x2 - x1) * pool_info.spatial_scale(), 1.0f);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> roi_dims_y = std::max((y2 - y1) * pool_info.spatial_scale(), 1.0f);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordtype">float</span> bin_size_x = roi_dims_x / pool_info.pooled_width();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordtype">float</span> bin_size_y = roi_dims_y / pool_info.pooled_height();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">float</span> region_start_x = px * bin_size_x + roi_anchor_x;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">float</span> region_start_y = py * bin_size_y + roi_anchor_y;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordtype">float</span> region_end_x = (px + 1) * bin_size_x + roi_anchor_x;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordtype">float</span> region_end_y = (py + 1) * bin_size_y + roi_anchor_y;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; region_start_x = <a class="code" href="namespacearm__compute_1_1utility.xhtml#a96efecf997f13a914609ddf1eb67f624">clamp</a>(region_start_x, 0.0f, <span class="keywordtype">float</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a865514e30baa11b11c8fa65f944532fb">input_shape</a>[0]));</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; region_start_y = <a class="code" href="namespacearm__compute_1_1utility.xhtml#a96efecf997f13a914609ddf1eb67f624">clamp</a>(region_start_y, 0.0f, <span class="keywordtype">float</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a865514e30baa11b11c8fa65f944532fb">input_shape</a>[1]));</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; region_end_x = <a class="code" href="namespacearm__compute_1_1utility.xhtml#a96efecf997f13a914609ddf1eb67f624">clamp</a>(region_end_x, 0.0f, <span class="keywordtype">float</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a865514e30baa11b11c8fa65f944532fb">input_shape</a>[0]));</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; region_end_y = <a class="code" href="namespacearm__compute_1_1utility.xhtml#a96efecf997f13a914609ddf1eb67f624">clamp</a>(region_end_y, 0.0f, <span class="keywordtype">float</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a865514e30baa11b11c8fa65f944532fb">input_shape</a>[1]));</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> roi_bin_grid_x = (pool_info.sampling_ratio() &gt; 0) ? pool_info.sampling_ratio() : int(ceil(bin_size_x));</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> roi_bin_grid_y = (pool_info.sampling_ratio() &gt; 0) ? pool_info.sampling_ratio() : int(ceil(bin_size_y));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="comment">// Move input and output pointer across the fourth dimension</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> input_stride_w = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a865514e30baa11b11c8fa65f944532fb">input_shape</a>[0] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a865514e30baa11b11c8fa65f944532fb">input_shape</a>[1] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a865514e30baa11b11c8fa65f944532fb">input_shape</a>[2];</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> output_stride_w = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>[0] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>[1] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>[2];</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> T *input_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data() + roi_batch * input_stride_w;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; T *output_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data() + px + py * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>[0] + pw * output_stride_w;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> pz = 0; pz &lt; int(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a865514e30baa11b11c8fa65f944532fb">input_shape</a>[2]); ++pz)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="comment">// For every pixel pool over an aligned region</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; *(output_ptr + pz * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>[0] * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>[1]) = roi_align_1x1(input_ptr, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a865514e30baa11b11c8fa65f944532fb">input_shape</a>,</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; region_start_x,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; bin_size_x,</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; roi_bin_grid_x,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; region_end_x,</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; region_start_y,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; bin_size_y,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; roi_bin_grid_y,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; region_end_y, pz);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a865514e30baa11b11c8fa65f944532fb"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a865514e30baa11b11c8fa65f944532fb">arm_compute::test::validation::input_shape</a></div><div class="ttdeci">input_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utility_xhtml_a96efecf997f13a914609ddf1eb67f624"><div class="ttname"><a href="namespacearm__compute_1_1utility.xhtml#a96efecf997f13a914609ddf1eb67f624">arm_compute::utility::clamp</a></div><div class="ttdeci">DataType clamp(const DataType &amp;n, const DataType &amp;lower=std::numeric_limits&lt; RangeType &gt;::lowest(), const DataType &amp;upper=std::numeric_limits&lt; RangeType &gt;::max())</div><div class="ttdoc">Performs clamping among a lower and upper value.</div><div class="ttdef"><b>Definition:</b> <a href="_utility_8h_source.xhtml#l00084">Utility.h:84</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00074">Types.h:74</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_utility_8h_source.xhtml#l00084">arm_compute::utility::clamp()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::input_shape</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01296">ROIPoolingLayerInfo::pooled_height()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01291">ROIPoolingLayerInfo::pooled_width()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01306">ROIPoolingLayerInfo::sampling_ratio()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l01301">ROIPoolingLayerInfo::spatial_scale()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="ade5dbd67630e7e979b7f2c24c1fa1fa3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade5dbd67630e7e979b7f2c24c1fa1fa3">&#9670;&nbsp;</a></span>roi_align_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::roi_align_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>rois</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_r_o_i_pooling_layer_info.xhtml">ROIPoolingLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>pool_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4a4d037e9f0f69fde36a5ca107aa587a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a4d037e9f0f69fde36a5ca107aa587a">&#9670;&nbsp;</a></span>roi_align_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::roi_align_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>rois</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_r_o_i_pooling_layer_info.xhtml">ROIPoolingLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>pool_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a590054c13a2fe6eddcb35bbe11129a9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a590054c13a2fe6eddcb35bbe11129a9d">&#9670;&nbsp;</a></span>safe_read()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">T arm_compute::test::validation::reference::safe_read </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>x</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_g_e_m_m_interleave_blocked_8h_source.xhtml#l00037">37</a> of file <a class="el" href="_g_e_m_m_interleave_blocked_8h_source.xhtml">GEMMInterleaveBlocked.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride = t.shape().x();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> M = t.shape().y();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> N = t.shape().x();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span>((y &lt; M) &amp;&amp; (x &lt; N))</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> t[y * stride + x];</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;}</div></div><!-- fragment -->
<p class="reference">References <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_g_e_m_m_interleave_blocked_8h_source.xhtml#l00050">gemm_interleave_blocked()</a>.</p>
</div>
</div>
<a id="a6d1214c8e51d5c216c257b8c1ce14525"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d1214c8e51d5c216c257b8c1ce14525">&#9670;&nbsp;</a></span>scale() <span class="overload">[1/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale_x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale_y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7b">SamplingPolicy</a>&#160;</td>
<td class="paramname"><em>sampling_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>ceil_policy_scale</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00183">183</a> of file <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml">Scale.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;{</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> scale_core&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, scale_x, scale_y, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, sampling_policy, ceil_policy_scale);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad986b73e9d5f47a623a9b6d773c25e34"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">arm_compute::test::validation::policy</a></div><div class="ttdeci">policy</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">ArithmeticAddition.cpp:136</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">arm_compute::test::validation::policy</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="reference_2_box3x3_8cpp_source.xhtml#l00038">box3x3()</a>, <a class="el" href="validation_2reference_2_convolution_8cpp_source.xhtml#l00038">convolution()</a>, <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00308">dft_1d()</a>, <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00348">dft_2d()</a>, <a class="el" href="reference_2_gaussian3x3_8cpp_source.xhtml#l00038">gaussian3x3()</a>, <a class="el" href="reference_2_gaussian5x5_8cpp_source.xhtml#l00038">gaussian5x5()</a>, <a class="el" href="_gaussian_pyramid_half_8cpp_source.xhtml#l00041">gaussian_pyramid_half()</a>, <a class="el" href="validation_2reference_2_laplacian_reconstruct_8cpp_source.xhtml#l00040">laplacian_reconstruct()</a>, <a class="el" href="reference_2_pixel_wise_multiplication_8cpp_source.xhtml#l00131">pixel_wise_multiplication()</a>, <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00297">ridft_1d()</a>, and <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00332">ridft_2d()</a>.</p>
</div>
</div>
<a id="ab5d62ae2ebf51dcab81a1b15781faebc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5d62ae2ebf51dcab81a1b15781faebc">&#9670;&nbsp;</a></span>scale() <span class="overload">[2/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale_x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale_y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7b">SamplingPolicy</a>&#160;</td>
<td class="paramname"><em>sampling_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>ceil_policy_scale</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00190">190</a> of file <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml">Scale.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info().uniform().scale != 0.f)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; SimpleTensor&lt;float&gt; src_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">float</span> constant_border_value_f = <a class="code" href="namespacearm__compute.xhtml#a34725aa0412e6cc99193ceb6c8a8e439">dequantize_qasymm8</a>(constant_border_value, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info());</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; SimpleTensor&lt;float&gt; dst_tmp = scale_core&lt;float&gt;(src_tmp, scale_x, scale_y, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value_f, sampling_policy, ceil_policy_scale);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">convert_to_asymmetric</a>(dst_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info());</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = scale_core&lt;uint8_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, scale_x, scale_y, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value, sampling_policy, ceil_policy_scale);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad986b73e9d5f47a623a9b6d773c25e34"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">arm_compute::test::validation::policy</a></div><div class="ttdeci">policy</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">ArithmeticAddition.cpp:136</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a34725aa0412e6cc99193ceb6c8a8e439"><div class="ttname"><a href="namespacearm__compute.xhtml#a34725aa0412e6cc99193ceb6c8a8e439">arm_compute::dequantize_qasymm8</a></div><div class="ttdeci">float dequantize_qasymm8(uint8_t value, const UniformQuantizationInfo &amp;qinfo)</div><div class="ttdoc">Dequantize a value given a asymmetric quantization scheme.</div><div class="ttdef"><b>Definition:</b> <a href="_quantization_info_8h_source.xhtml#l00248">QuantizationInfo.h:248</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a291a16e64b05bdf4d08e1240d5bb286a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">arm_compute::test::validation::convert_to_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; convert_to_asymmetric(const SimpleTensor&lt; float &gt; &amp;src, const QuantizationInfo &amp;quantization_info)</div><div class="ttdoc">Convert float simple tensor into quantized using specified quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">Helpers.cpp:123</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab24849be91cfb00a72f7a61a7e00fdb7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">arm_compute::test::validation::convert_from_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; convert_from_asymmetric(const SimpleTensor&lt; uint8_t &gt; &amp;src)</div><div class="ttdoc">Convert quantized simple tensor into float using tensor quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">Helpers.cpp:111</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">arm_compute::test::validation::convert_from_asymmetric()</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">arm_compute::test::validation::convert_to_asymmetric()</a>, <a class="el" href="_quantization_info_8h_source.xhtml#l00248">arm_compute::dequantize_qasymm8()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">arm_compute::test::validation::policy</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a507aed1b65b543eae5adafff1f2b8965"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a507aed1b65b543eae5adafff1f2b8965">&#9670;&nbsp;</a></span>scale() <span class="overload">[3/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale_x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale_y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int16_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7b">SamplingPolicy</a>&#160;</td>
<td class="paramname"><em>sampling_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>ceil_policy_scale</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a19c2e3dbf2874675782c224032106d80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19c2e3dbf2874675782c224032106d80">&#9670;&nbsp;</a></span>scale() <span class="overload">[4/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale_x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale_y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7b">SamplingPolicy</a>&#160;</td>
<td class="paramname"><em>sampling_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>ceil_policy_scale</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab5ae0844c074ff20b13924b7f145d4e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5ae0844c074ff20b13924b7f145d4e2">&#9670;&nbsp;</a></span>scale() <span class="overload">[5/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale_x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale_y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7b">SamplingPolicy</a>&#160;</td>
<td class="paramname"><em>sampling_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>ceil_policy_scale</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa390c8750cce2de4fd49d7a3d9e6ba5c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa390c8750cce2de4fd49d7a3d9e6ba5c">&#9670;&nbsp;</a></span>scale_core()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;T&gt; arm_compute::test::validation::reference::scale_core </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale_x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>scale_y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7b">SamplingPolicy</a>&#160;</td>
<td class="paramname"><em>sampling_policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>ceil_policy_scale</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml#l00040">40</a> of file <a class="el" href="validation_2reference_2_scale_8cpp_source.xhtml">Scale.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Add 1 if ceil_policy_scale is true</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> round_value = ceil_policy_scale ? 1<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a> : 0<a class="code" href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">U</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; TensorShape shape_scaled(in.shape());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; shape_scaled.set(0, (in.shape()[0] + round_value) * scale_x);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; shape_scaled.set(1, (in.shape()[1] + round_value) * scale_y);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; SimpleTensor&lt;T&gt; out(shape_scaled, in.data_type());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// Compute the ratio between source width/height and destination width/height</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wr = static_cast&lt;float&gt;(in.shape()[0]) / static_cast&lt;float&gt;(out.shape()[0]);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> hr = static_cast&lt;float&gt;(in.shape()[1]) / static_cast&lt;float&gt;(out.shape()[1]);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> width = static_cast&lt;int&gt;(in.shape().x());</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> height = static_cast&lt;int&gt;(in.shape().y());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Determine border size</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> border_size = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::UNDEFINED) ? 0 : 1;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">// Area interpolation behaves as Nearest Neighbour in case of up-sampling</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a> == InterpolationPolicy::AREA &amp;&amp; wr &lt;= 1.f &amp;&amp; hr &lt;= 1.f)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a> = InterpolationPolicy::NEAREST_NEIGHBOR;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> element_idx = 0, count = 0; element_idx &lt; out.num_elements(); ++element_idx, ++count)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; Coordinates <span class="keywordtype">id</span> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(out.shape(), element_idx);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">int</span> idx = <span class="keywordtype">id</span>.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">x</a>();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">int</span> idy = <span class="keywordtype">id</span>.y();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">float</span> x_src = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordtype">float</span> y_src = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::NEAREST_NEIGHBOR:</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">switch</span>(sampling_policy)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">case</span> SamplingPolicy::TOP_LEFT:</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; x_src = std::floor(idx * wr);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; y_src = std::floor(idy * hr);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">case</span> SamplingPolicy::CENTER:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">//Calculate the source coords without -0.5f is equivalent to round the x_scr/y_src coords</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; x_src = (idx + 0.5f) * wr;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; y_src = (idy + 0.5f) * hr;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Unsupported sampling policy.&quot;</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">id</span>.set(0, x_src);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">id</span>.set(1, y_src);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// If coordinates in range of tensor&#39;s width or height</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab50b3b23d5b3e67cca71a12b91c2a8db">is_valid_pixel_index</a>(x_src, y_src, width, height, border_size))</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; out[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(in, <span class="keywordtype">id</span>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::BILINEAR:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">switch</span>(sampling_policy)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">case</span> SamplingPolicy::TOP_LEFT:</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; x_src = idx * wr;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; y_src = idy * hr;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">case</span> SamplingPolicy::CENTER:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; x_src = (idx + 0.5f) * wr - 0.5f;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; y_src = (idy + 0.5f) * hr - 0.5f;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Unsupported sampling policy.&quot;</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">id</span>.set(0, std::floor(x_src));</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">id</span>.set(1, std::floor(y_src));</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab50b3b23d5b3e67cca71a12b91c2a8db">is_valid_pixel_index</a>(x_src, y_src, width, height, border_size))</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; out[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">bilinear_policy</a>(in, <span class="keywordtype">id</span>, x_src, y_src, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::CONSTANT)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; out[element_idx] = constant_border_value;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::REPLICATE)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordtype">id</span>.set(0, utility::clamp&lt;int&gt;(x_src, 0, width - 1));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordtype">id</span>.set(1, utility::clamp&lt;int&gt;(y_src, 0, height - 1));</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; out[element_idx] = in[<a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(in.shape(), id)];</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::AREA:</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordtype">int</span> x_from = std::floor(idx * wr - 0.5f - x_src);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordtype">int</span> y_from = std::floor(idy * hr - 0.5f - y_src);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">int</span> x_to = std::ceil((idx + 1) * wr - 0.5f - x_src);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">int</span> y_to = std::ceil((idy + 1) * hr - 0.5f - y_src);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xi = std::floor(x_src);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yi = std::floor(y_src);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// Clamp position to borders</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; x_src = std::max(-static_cast&lt;float&gt;(border_size), std::min(x_src, static_cast&lt;float&gt;(width - 1 + border_size)));</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; y_src = std::max(-static_cast&lt;float&gt;(border_size), std::min(y_src, static_cast&lt;float&gt;(height - 1 + border_size)));</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="comment">// Clamp bounding box offsets to borders</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; x_from = ((x_src + x_from) &lt; -border_size) ? -border_size : x_from;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; y_from = ((y_src + y_from) &lt; -border_size) ? -border_size : y_from;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; x_to = ((x_src + x_to) &gt;= (width + border_size)) ? (width - 1 + border_size) : x_to;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; y_to = ((y_src + y_to) &gt;= (height + border_size)) ? (height - 1 + border_size) : y_to;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>((x_to - x_from + 1) == 0 || (y_to - y_from + 1) == 0);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordtype">float</span> <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a> = 0;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = yi + y_from, je = yi + y_to; j &lt;= je; ++j)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = xi + x_from, ie = xi + x_to; i &lt;= ie; ++i)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordtype">id</span>.set(0, static_cast&lt;int&gt;(i));</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordtype">id</span>.set(1, static_cast&lt;int&gt;(j));</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a> += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(in, <span class="keywordtype">id</span>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; out[element_idx] = <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a> / ((x_to - x_from + 1) * (y_to - y_from + 1));</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Unsupported interpolation mode&quot;</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad986b73e9d5f47a623a9b6d773c25e34"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">arm_compute::test::validation::policy</a></div><div class="ttdeci">policy</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">ArithmeticAddition.cpp:136</a></div></div>
<div class="ttc" id="reduction__operation_8cl_xhtml_ab0df00f5333da51860deb93deb44a782"><div class="ttname"><a href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a></div><div class="ttdeci">DATA_TYPE sum(__global const DATA_TYPE *input)</div><div class="ttdoc">Calculate sum of a vector.</div><div class="ttdef"><b>Definition:</b> <a href="reduction__operation_8cl_source.xhtml#l00065">reduction_operation.cl:65</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab50b3b23d5b3e67cca71a12b91c2a8db"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab50b3b23d5b3e67cca71a12b91c2a8db">arm_compute::test::validation::is_valid_pixel_index</a></div><div class="ttdeci">bool is_valid_pixel_index(int x, int y, int width, int height, int border_size)</div><div class="ttdoc">Checks if a pixel has valid coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00054">Utils.h:54</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a9be4cb7e6ee20063a4a10bc3abb750b9"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">arm_compute::test::coord2index</a></div><div class="ttdeci">int coord2index(const TensorShape &amp;shape, const Coordinates &amp;coord)</div><div class="ttdoc">Linearise the given coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00480">Utils.h:480</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_aa87f8fc26981b0f3228a78c83b95b802"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">arm_compute::Dimensions::x</a></div><div class="ttdeci">T x() const</div><div class="ttdoc">Alias to access the size of the first dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00081">Dimensions.h:81</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_1_1cast_xhtml_a2ea3d1fc01a3a442900249ca182ffa5e"><div class="ttname"><a href="namespacearm__compute_1_1utils_1_1cast.xhtml#a2ea3d1fc01a3a442900249ca182ffa5e">arm_compute::utils::cast::U</a></div><div class="ttdeci">U</div><div class="ttdef"><b>Definition:</b> <a href="_saturate_cast_8h_source.xhtml#l00057">SaturateCast.h:57</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a92fd4059750cbbeecd8ad03f279200e1"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">arm_compute::test::validation::bilinear_policy</a></div><div class="ttdeci">T bilinear_policy(const SimpleTensor&lt; T &gt; &amp;in, Coordinates id, float xn, float yn, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8cpp_source.xhtml#l00036">Utils.cpp:36</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a639aaa22a784d5e5cb03a522267e79c4">arm_compute::AREA</a>, <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65">arm_compute::BILINEAR</a>, <a class="el" href="tests_2validation_2reference_2_utils_8cpp_source.xhtml#l00036">arm_compute::test::validation::bilinear_policy()</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7bac397289ee45877be0cd49811fe245b4e">arm_compute::CENTER</a>, <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91a8d6b5cada83510220f59e00ce86d4d92">arm_compute::CONSTANT</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00480">arm_compute::test::coord2index()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00054">arm_compute::test::validation::is_valid_pixel_index()</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">arm_compute::NEAREST_NEIGHBOR</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">arm_compute::test::validation::policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa">arm_compute::REPLICATE</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00078">TensorShape::set()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="reduction__operation_8cl_source.xhtml#l00065">sum()</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, <a class="el" href="namespacearm__compute.xhtml#a16a59381d4d74d17d86d69eb4d286d7ba747385047b85ae751f83adb36435a3c1">arm_compute::TOP_LEFT</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::UNDEFINED</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>.</p>
</div>
</div>
<a id="a4578c34605a48d4b85ec0d0e6ab4b530"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4578c34605a48d4b85ec0d0e6ab4b530">&#9670;&nbsp;</a></span>scharr() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::pair&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt; scharr </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>filter_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7">GradientDimension</a>&#160;</td>
<td class="paramname"><em>gradient_dimension</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_scharr_8cpp_source.xhtml#l00062">62</a> of file <a class="el" href="reference_2_scharr_8cpp_source.xhtml">Scharr.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;{</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> shape_size = static_cast&lt;unsigned int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; SimpleTensor&lt;T&gt; dst_x(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), data_type&lt;T&gt;::value, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels());</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; SimpleTensor&lt;T&gt; dst_y(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), data_type&lt;T&gt;::value, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels());</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; ValidRegion <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">shape_to_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::UNDEFINED, BorderSize(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a> / 2));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; Coordinates coord = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), i);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">is_in_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a>, coord))</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">switch</span>(gradient_dimension)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">case</span> GradientDimension::GRAD_X:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, dst_x, TensorShape{ shape_size, shape_size }, masks.at(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>).first, 1.f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">case</span> GradientDimension::GRAD_Y:</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, dst_y, TensorShape{ shape_size, shape_size }, masks.at(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>).second, 1.f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">case</span> GradientDimension::GRAD_XY:</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, dst_x, TensorShape{ shape_size, shape_size }, masks.at(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>).first, 1.f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, dst_y, TensorShape{ shape_size, shape_size }, masks.at(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>).second, 1.f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Gradient dimension not supported&quot;</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> std::make_pair(dst_x, dst_y);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d1175c32ed7ea771e8ea46c936ea5c7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">arm_compute::test::validation::apply_2d_spatial_filter</a></div><div class="ttdeci">void apply_2d_spatial_filter(Coordinates coord, const SimpleTensor&lt; T &gt; &amp;src, SimpleTensor&lt; U &gt; &amp;dst, const TensorShape &amp;filter_shape, const V *filter_itr, double scale, BorderMode border_mode, T constant_border_value=T(0))</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00098">Utils.h:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a2237230a1357685ba2472c2d6fca17fa"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">arm_compute::test::validation::filter_size</a></div><div class="ttdeci">filter_size</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00119">Convolution.cpp:119</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a856b55fc20ddcbdbeb84c35ae27bedac"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">arm_compute::test::is_in_valid_region</a></div><div class="ttdeci">bool is_in_valid_region(const ValidRegion &amp;valid_region, Coordinates coord)</div><div class="ttdoc">Check if a coordinate is within a valid region.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00498">Utils.h:498</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7819bcbbf45c2e7c1396a137dce54422"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">arm_compute::test::validation::valid_region</a></div><div class="ttdeci">const ValidRegion valid_region</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00109">AbsoluteDifference.cpp:109</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a8103df0e6c416f55f40106aa49072b42"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">arm_compute::test::shape_to_valid_region</a></div><div class="ttdeci">ValidRegion shape_to_valid_region(const TensorShape &amp;a_shape, bool border_undefined=false, BorderSize border_size=BorderSize(0))</div><div class="ttdoc">Create a valid region based on tensor shape, border mode and border size.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00221">Utils.h:221</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00119">arm_compute::test::validation::filter_size</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="_schaar_8cpp_source.xhtml#l00047">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="a206eea7bc9a9c8b98cd4a6e7f6d0a8be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a206eea7bc9a9c8b98cd4a6e7f6d0a8be">&#9670;&nbsp;</a></span>scharr() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::pair&lt;<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt;, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; &gt; arm_compute::test::validation::reference::scharr </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>filter_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7">GradientDimension</a>&#160;</td>
<td class="paramname"><em>gradient_dimension</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a27e22718d532b621774aca14ce8b1101"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27e22718d532b621774aca14ce8b1101">&#9670;&nbsp;</a></span>select() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; select </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>y</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_select_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_select_8cpp_source.xhtml">Select.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// Check if condition has the same rank as c</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> is_same_rank = (c.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">shape</a>().<a class="code" href="classarm__compute_1_1_dimensions.xhtml#a80a5f2d6e3a697c9aad893a3b4242615">num_dimensions</a>() == x.shape().num_dimensions());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Check shapes</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(x.shape() != y.shape());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(is_same_rank &amp;&amp; (x.shape() != c.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">shape</a>()));</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(!is_same_rank &amp;&amp; (c.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">shape</a>().<a class="code" href="classarm__compute_1_1_dimensions.xhtml#a80a5f2d6e3a697c9aad893a3b4242615">num_dimensions</a>() &gt; 1) &amp;&amp; (c.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">shape</a>().<a class="code" href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">x</a>() != x.shape()[x.shape().num_dimensions() - 1]));</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ x.shape(), x.data_type(), 1 };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// Run select core</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span>(is_same_rank)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; x.num_elements(); ++i)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = c[i] &gt; 0 ? x[i] : y[i];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; T *output_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> outer_size = c.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aedcfdd4c3b92fe0d63b5463c7ad1d21e">num_elements</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> inner_size = x.num_elements() / outer_size;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a> = 0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; outer_size; ++i)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> T *input_ptr = c[i] &gt; 0 ? x.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#a4ae7e1f6885eb47c11062cc74e6a6e19">data</a>() : y.data();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; memcpy(output_ptr + <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>, input_ptr + <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>, inner_size * <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a> += inner_size;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;}</div><div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">helpers.h:328</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="classarm__compute_1_1test_1_1_simple_tensor_xhtml_aba5871b3e4a65d057ec1c28fce8b00ba"><div class="ttname"><a href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">arm_compute::test::SimpleTensor::shape</a></div><div class="ttdeci">TensorShape shape() const override</div><div class="ttdoc">Shape of the tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor.h:321</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_aa87f8fc26981b0f3228a78c83b95b802"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">arm_compute::Dimensions::x</a></div><div class="ttdeci">T x() const</div><div class="ttdoc">Alias to access the size of the first dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00081">Dimensions.h:81</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_a80a5f2d6e3a697c9aad893a3b4242615"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#a80a5f2d6e3a697c9aad893a3b4242615">arm_compute::Dimensions::num_dimensions</a></div><div class="ttdeci">unsigned int num_dimensions() const</div><div class="ttdoc">Returns the effective dimensionality of the tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00122">Dimensions.h:122</a></div></div>
<div class="ttc" id="classarm__compute_1_1test_1_1_simple_tensor_xhtml_aedcfdd4c3b92fe0d63b5463c7ad1d21e"><div class="ttname"><a href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aedcfdd4c3b92fe0d63b5463c7ad1d21e">arm_compute::test::SimpleTensor::num_elements</a></div><div class="ttdeci">int num_elements() const override</div><div class="ttdoc">Number of elements of the tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_simple_tensor_8h_source.xhtml#l00407">SimpleTensor.h:407</a></div></div>
<div class="ttc" id="classarm__compute_1_1test_1_1_simple_tensor_xhtml_a4ae7e1f6885eb47c11062cc74e6a6e19"><div class="ttname"><a href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#a4ae7e1f6885eb47c11062cc74e6a6e19">arm_compute::test::SimpleTensor::data</a></div><div class="ttdeci">const T * data() const</div><div class="ttdoc">Constant pointer to the underlying buffer.</div><div class="ttdef"><b>Definition:</b> <a href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor.h:419</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00419">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00122">Dimensions&lt; T &gt;::num_dimensions()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00407">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">offset()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>.</p>
</div>
</div>
<a id="a0331e853139eaf23282e0ca0a53b90b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0331e853139eaf23282e0ca0a53b90b8">&#9670;&nbsp;</a></span>select() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::select </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>y</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a95fd10c561d7b438f46d34441ac4c494"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95fd10c561d7b438f46d34441ac4c494">&#9670;&nbsp;</a></span>select() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::select </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>y</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6d2d7deaeaac223161f2a13d155b58f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d2d7deaeaac223161f2a13d155b58f7">&#9670;&nbsp;</a></span>select() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::select </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>y</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a548131b3d37da47a2e9d32111c88dfe1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a548131b3d37da47a2e9d32111c88dfe1">&#9670;&nbsp;</a></span>slice() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; slice </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a>&#160;</td>
<td class="paramname"><em>starts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a>&#160;</td>
<td class="paramname"><em>ends</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_slice_operations_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_slice_operations_8cpp_source.xhtml">SliceOperations.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">using namespace </span><a class="code" href="namespacearm__compute_1_1helpers_1_1tensor__transform.xhtml">arm_compute::helpers::tensor_transform</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Validation checks</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().num_dimensions() &gt; 4);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(starts.num_dimensions() &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().num_dimensions());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(std::any_of(starts.cbegin(), starts.cbegin() + starts.num_dimensions(), [](<span class="keywordtype">int</span> i)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> i &lt; 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(ends.num_dimensions() &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().num_dimensions());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// Get source shape</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> TensorShape &amp;src_shape = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Get destination shape</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; TensorShape <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a> = <a class="code" href="namespacearm__compute_1_1misc_1_1shape__calculator.xhtml#a30c67d11c15378ffe67ca3c31e848917">arm_compute::misc::shape_calculator::compute_slice_shape</a>(src_shape, starts, ends);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Create destination tensor</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1 };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">// Perform slice</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; Window win;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; win.use_tensor_dimensions(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a5002bf7ec46d52971f9526e94172cfee">execute_window_loop</a>(win, [&amp;](<span class="keyword">const</span> Coordinates &amp; <span class="keywordtype">id</span>)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; Coordinates <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <span class="keywordtype">id</span>.num_dimensions(); ++i)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>.set(i, starts[i] + <span class="keywordtype">id</span>[i]);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; *reinterpret_cast&lt;T *&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<span class="keywordtype">id</span>)) = *reinterpret_cast&lt;const T *&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>(<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; });</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div><div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">helpers.h:328</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1misc_1_1shape__calculator_xhtml_a30c67d11c15378ffe67ca3c31e848917"><div class="ttname"><a href="namespacearm__compute_1_1misc_1_1shape__calculator.xhtml#a30c67d11c15378ffe67ca3c31e848917">arm_compute::misc::shape_calculator::compute_slice_shape</a></div><div class="ttdeci">TensorShape compute_slice_shape(const TensorShape &amp;input_shape, const Coordinates &amp;starts, const Coordinates &amp;ends)</div><div class="ttdoc">Calculate the slice output shape of a tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_shape_calculator_8h_source.xhtml#l00981">ShapeCalculator.h:981</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1helpers_1_1tensor__transform_xhtml"><div class="ttname"><a href="namespacearm__compute_1_1helpers_1_1tensor__transform.xhtml">arm_compute::helpers::tensor_transform</a></div><div class="ttdef"><b>Definition:</b> <a href="tensor__transform_8h_source.xhtml#l00033">tensor_transform.h:33</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a5002bf7ec46d52971f9526e94172cfee"><div class="ttname"><a href="namespacearm__compute.xhtml#a5002bf7ec46d52971f9526e94172cfee">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &amp;w, L &amp;&amp;lambda_function, Ts &amp;&amp;... iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00122">Helpers.inl:122</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00210">Dimensions&lt; T &gt;::cbegin()</a>, <a class="el" href="_shape_calculator_8h_source.xhtml#l00981">arm_compute::misc::shape_calculator::compute_slice_shape()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00122">arm_compute::execute_window_loop()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00122">Dimensions&lt; T &gt;::num_dimensions()</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">offset()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="_window_8inl_source.xhtml#l00250">Window::use_tensor_dimensions()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_n_e_unstack_8cpp_source.xhtml#l00062">NEUnstack::configure()</a>, <a class="el" href="_c_l_unstack_8cpp_source.xhtml#l00062">CLUnstack::configure()</a>, <a class="el" href="reference_2_d_f_t_8cpp_source.xhtml#l00374">conv2d_dft()</a>, <a class="el" href="reference_2_deconvolution_layer_8cpp_source.xhtml#l00037">deconvolution_layer()</a>, <a class="el" href="validation_2reference_2_depth_concatenate_layer_8cpp_source.xhtml#l00037">depthconcatenate_layer()</a>, <a class="el" href="_i_c_l_simple2_d_kernel_8cpp_source.xhtml#l00033">ICLSimple2DKernel::run()</a>, <a class="el" href="_i_g_c_simple2_d_kernel_8cpp_source.xhtml#l00033">IGCSimple2DKernel::run()</a>, <a class="el" href="_i_c_l_simple3_d_kernel_8cpp_source.xhtml#l00033">ICLSimple3DKernel::run()</a>, <a class="el" href="_i_g_c_simple3_d_kernel_8cpp_source.xhtml#l00033">IGCSimple3DKernel::run()</a>, <a class="el" href="_g_c_transpose_kernel_8cpp_source.xhtml#l00123">GCTransposeKernel::run()</a>, <a class="el" href="_g_c_scale_kernel_8cpp_source.xhtml#l00145">GCScaleKernel::run()</a>, <a class="el" href="_c_l_elementwise_operation_kernel_8cpp_source.xhtml#l00263">CLElementwiseOperationKernel::run()</a>, <a class="el" href="_c_l_histogram_kernel_8cpp_source.xhtml#l00122">CLHistogramKernel::run()</a>, <a class="el" href="_c_l_canny_edge_kernel_8cpp_source.xhtml#l00092">CLGradientKernel::run()</a>, <a class="el" href="_c_l_bitwise_and_kernel_8cpp_source.xhtml#l00072">CLBitwiseAndKernel::run()</a>, <a class="el" href="_c_l_min_max_location_kernel_8cpp_source.xhtml#l00124">CLMinMaxKernel::run()</a>, <a class="el" href="_c_l_remap_kernel_8cpp_source.xhtml#l00094">CLRemapKernel::run()</a>, <a class="el" href="_c_l_bitwise_or_kernel_8cpp_source.xhtml#l00073">CLBitwiseOrKernel::run()</a>, <a class="el" href="_c_l_bitwise_xor_kernel_8cpp_source.xhtml#l00073">CLBitwiseXorKernel::run()</a>, <a class="el" href="_c_l_sobel3x3_kernel_8cpp_source.xhtml#l00120">CLSobel3x3Kernel::run()</a>, <a class="el" href="_g_c_activation_layer_kernel_8cpp_source.xhtml#l00104">GCActivationLayerKernel::run()</a>, <a class="el" href="_g_c_pixel_wise_multiplication_kernel_8cpp_source.xhtml#l00101">GCPixelWiseMultiplicationKernel::run()</a>, <a class="el" href="_c_l_derivative_kernel_8cpp_source.xhtml#l00135">CLDerivativeKernel::run()</a>, <a class="el" href="_c_l_sobel5x5_kernel_8cpp_source.xhtml#l00120">CLSobel5x5HorKernel::run()</a>, <a class="el" href="_c_l_sobel7x7_kernel_8cpp_source.xhtml#l00122">CLSobel7x7HorKernel::run()</a>, <a class="el" href="_g_c_g_e_m_m_matrix_addition_kernel_8cpp_source.xhtml#l00080">GCGEMMMatrixAdditionKernel::run()</a>, <a class="el" href="_g_c_normalization_layer_kernel_8cpp_source.xhtml#l00098">GCNormalizationLayerKernel::run()</a>, <a class="el" href="_c_l_h_o_g_descriptor_kernel_8cpp_source.xhtml#l00111">CLHOGOrientationBinningKernel::run()</a>, <a class="el" href="_g_c_absolute_difference_kernel_8cpp_source.xhtml#l00086">GCAbsoluteDifferenceKernel::run()</a>, <a class="el" href="_c_l_absolute_difference_kernel_8cpp_source.xhtml#l00087">CLAbsoluteDifferenceKernel::run()</a>, <a class="el" href="_c_l_magnitude_phase_kernel_8cpp_source.xhtml#l00153">CLMagnitudePhaseKernel::run()</a>, <a class="el" href="_c_l_floor_kernel_8cpp_source.xhtml#l00114">CLFloorKernel::run()</a>, <a class="el" href="_c_l_dequantization_layer_kernel_8cpp_source.xhtml#l00121">CLDequantizationLayerKernel::run()</a>, <a class="el" href="_c_l_integral_image_kernel_8cpp_source.xhtml#l00119">CLIntegralImageVertKernel::run()</a>, <a class="el" href="_c_l_reshape_layer_kernel_8cpp_source.xhtml#l00113">CLReshapeLayerKernel::run()</a>, <a class="el" href="_c_l_quantization_layer_kernel_8cpp_source.xhtml#l00116">CLQuantizationLayerKernel::run()</a>, <a class="el" href="_c_l_reverse_kernel_8cpp_source.xhtml#l00130">CLReverseKernel::run()</a>, <a class="el" href="_c_l_r_o_i_pooling_layer_kernel_8cpp_source.xhtml#l00127">CLROIPoolingLayerKernel::run()</a>, <a class="el" href="_c_l_copy_kernel_8cpp_source.xhtml#l00246">CLCopyKernel::run()</a>, <a class="el" href="_c_l_locally_connected_matrix_multiply_kernel_8cpp_source.xhtml#l00129">CLLocallyConnectedMatrixMultiplyKernel::run()</a>, <a class="el" href="_g_c_dropout_layer_kernel_8cpp_source.xhtml#l00086">GCDropoutLayerKernel::run()</a>, <a class="el" href="_g_c_softmax_layer_kernel_8cpp_source.xhtml#l00171">GCLogits1DShiftExpSumKernel::run()</a>, <a class="el" href="_c_l_channel_extract_kernel_8cpp_source.xhtml#l00168">CLChannelExtractKernel::run()</a>, <a class="el" href="_c_l_memset_kernel_8cpp_source.xhtml#l00093">CLMemsetKernel::run()</a>, <a class="el" href="_c_l_f_f_t_scale_kernel_8cpp_source.xhtml#l00123">CLFFTScaleKernel::run()</a>, <a class="el" href="_c_l_normalization_layer_kernel_8cpp_source.xhtml#l00186">CLNormalizationLayerKernel::run()</a>, <a class="el" href="_c_l_fill_border_kernel_8cpp_source.xhtml#l00165">CLFillBorderKernel::run()</a>, <a class="el" href="_g_c_direct_convolution_layer_kernel_8cpp_source.xhtml#l00401">GCDirectConvolutionLayerKernel&lt; kernel_size &gt;::run()</a>, <a class="el" href="_g_c_fill_border_kernel_8cpp_source.xhtml#l00141">GCFillBorderKernel::run()</a>, <a class="el" href="_c_l_mean_std_dev_normalization_kernel_8cpp_source.xhtml#l00130">CLMeanStdDevNormalizationKernel::run()</a>, <a class="el" href="_c_l_fast_corners_kernel_8cpp_source.xhtml#l00111">CLFastCornersKernel::run()</a>, <a class="el" href="_c_l_pooling_layer_kernel_8cpp_source.xhtml#l00324">CLPoolingLayerKernel::run()</a>, <a class="el" href="_c_l_activation_layer_kernel_8cpp_source.xhtml#l00237">CLActivationLayerKernel::run()</a>, <a class="el" href="_c_l_comparison_kernel_8cpp_source.xhtml#l00173">CLComparisonKernel::run()</a>, <a class="el" href="_c_l_tile_kernel_8cpp_source.xhtml#l00135">CLTileKernel::run()</a>, <a class="el" href="_c_l_width_concatenate2_tensors_kernel_8cpp_source.xhtml#l00164">CLWidthConcatenate2TensorsKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_matrix_addition_kernel_8cpp_source.xhtml#l00110">CLGEMMMatrixAdditionKernel::run()</a>, <a class="el" href="_c_l_depthwise_convolution_layer_reshape_weights_generic_kernel_8cpp_source.xhtml#l00108">CLDepthwiseConvolutionLayerReshapeWeightsGenericKernel::run()</a>, <a class="el" href="_g_c_pooling_layer_kernel_8cpp_source.xhtml#l00331">GCPoolingLayerKernel::run()</a>, <a class="el" href="_c_l_depthwise_vector_to_tensor_kernel_8cpp_source.xhtml#l00100">CLDepthwiseVectorToTensorKernel::run()</a>, <a class="el" href="_c_l_min_max_layer_kernel_8cpp_source.xhtml#l00141">CLMinMaxLayerKernel::run()</a>, <a class="el" href="_c_l_f_f_t_digit_reverse_kernel_8cpp_source.xhtml#l00114">CLFFTDigitReverseKernel::run()</a>, <a class="el" href="_c_l_reorg_layer_kernel_8cpp_source.xhtml#l00124">CLReorgLayerKernel::run()</a>, <a class="el" href="_c_l_harris_corners_kernel_8cpp_source.xhtml#l00127">CLHarrisScoreKernel::run()</a>, <a class="el" href="_c_l_channel_combine_kernel_8cpp_source.xhtml#l00239">CLChannelCombineKernel::run()</a>, <a class="el" href="_c_l_prior_box_layer_kernel_8cpp_source.xhtml#l00200">CLPriorBoxLayerKernel::run()</a>, <a class="el" href="_c_l_h_o_g_detector_kernel_8cpp_source.xhtml#l00126">CLHOGDetectorKernel::run()</a>, <a class="el" href="_c_l_normalize_planar_y_u_v_layer_kernel_8cpp_source.xhtml#l00162">CLNormalizePlanarYUVLayerKernel::run()</a>, <a class="el" href="_c_l_scale_kernel_8cpp_source.xhtml#l00247">CLScaleKernel::run()</a>, <a class="el" href="_g_c_arithmetic_addition_kernel_8cpp_source.xhtml#l00131">GCArithmeticAdditionKernel::run()</a>, <a class="el" href="_c_l_mean_std_dev_kernel_8cpp_source.xhtml#l00112">CLMeanStdDevKernel::run()</a>, <a class="el" href="_c_l_batch_concatenate_layer_kernel_8cpp_source.xhtml#l00152">CLBatchConcatenateLayerKernel::run()</a>, <a class="el" href="_c_l_select_kernel_8cpp_source.xhtml#l00172">CLSelectKernel::run()</a>, <a class="el" href="_g_c_normalize_planar_y_u_v_layer_kernel_8cpp_source.xhtml#l00132">GCNormalizePlanarYUVLayerKernel::run()</a>, <a class="el" href="_c_l_scharr3x3_kernel_8cpp_source.xhtml#l00108">CLScharr3x3Kernel::run()</a>, <a class="el" href="_c_l_width_concatenate4_tensors_kernel_8cpp_source.xhtml#l00213">CLWidthConcatenate4TensorsKernel::run()</a>, <a class="el" href="_c_l_depth_concatenate_layer_kernel_8cpp_source.xhtml#l00133">CLDepthConcatenateLayerKernel::run()</a>, <a class="el" href="_c_l_bounding_box_transform_kernel_8cpp_source.xhtml#l00116">CLBoundingBoxTransformKernel::run()</a>, <a class="el" href="_g_c_tensor_shift_kernel_8cpp_source.xhtml#l00077">GCTensorShiftKernel::run()</a>, <a class="el" href="_c_l_pixel_wise_multiplication_kernel_8cpp_source.xhtml#l00242">CLPixelWiseMultiplicationKernel::run()</a>, <a class="el" href="_c_l_y_o_l_o_layer_kernel_8cpp_source.xhtml#l00161">CLYOLOLayerKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_lowp_matrix_multiply_kernel_8cpp_source.xhtml#l00247">CLGEMMLowpMatrixMultiplyKernel::run()</a>, <a class="el" href="_c_l_f_f_t_radix_stage_kernel_8cpp_source.xhtml#l00148">CLFFTRadixStageKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_reshape_r_h_s_matrix_kernel_8cpp_source.xhtml#l00157">CLGEMMReshapeRHSMatrixKernel::run()</a>, <a class="el" href="_c_l_direct_convolution_output_stage_kernel_8cpp_source.xhtml#l00182">CLDirectConvolutionLayerOutputStageKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_lowp_matrix_multiply_native_kernel_8cpp_source.xhtml#l00267">CLGEMMLowpMatrixMultiplyNativeKernel::run()</a>, <a class="el" href="_c_l_color_convert_kernel_8cpp_source.xhtml#l00432">CLColorConvertKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_reshape_l_h_s_matrix_kernel_8cpp_source.xhtml#l00199">CLGEMMReshapeLHSMatrixKernel::run()</a>, <a class="el" href="_g_c_col2_im_kernel_8cpp_source.xhtml#l00097">GCCol2ImKernel::run()</a>, <a class="el" href="_c_l_r_o_i_align_layer_kernel_8cpp_source.xhtml#l00133">CLROIAlignLayerKernel::run()</a>, <a class="el" href="_c_l_depthwise_im2_col_kernel_8cpp_source.xhtml#l00121">CLDepthwiseIm2ColKernel::run()</a>, <a class="el" href="_g_c_g_e_m_m_matrix_multiply_kernel_8cpp_source.xhtml#l00303">GCGEMMMatrixMultiplyKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_lowp_matrix_multiply_reshaped_only_r_h_s_kernel_8cpp_source.xhtml#l00272">CLGEMMLowpMatrixMultiplyReshapedOnlyRHSKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_lowp_quantize_down_int32_to_int16_scale_by_fixed_point_kernel_8cpp_source.xhtml#l00153">CLGEMMLowpQuantizeDownInt32ToInt16ScaleByFixedPointKernel::run()</a>, <a class="el" href="_g_c_batch_normalization_layer_kernel_8cpp_source.xhtml#l00205">GCBatchNormalizationLayerKernel::run()</a>, <a class="el" href="_n_e_pixel_wise_multiplication_kernel_8cpp_source.xhtml#l00694">NEPixelWiseMultiplicationKernel::run()</a>, <a class="el" href="_c_l_winograd_input_transform_kernel_8cpp_source.xhtml#l00227">CLWinogradInputTransformKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_lowp_quantize_down_int32_to_uint8_scale_by_float_kernel_8cpp_source.xhtml#l00152">CLGEMMLowpQuantizeDownInt32ToUint8ScaleByFloatKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_lowp_quantize_down_int32_to_uint8_scale_by_fixed_point_kernel_8cpp_source.xhtml#l00155">CLGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPointKernel::run()</a>, <a class="el" href="_c_l_col2_im_kernel_8cpp_source.xhtml#l00142">CLCol2ImKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_lowp_quantize_down_int32_to_uint8_scale_kernel_8cpp_source.xhtml#l00151">CLGEMMLowpQuantizeDownInt32ToUint8ScaleKernel::run()</a>, <a class="el" href="_c_l_batch_normalization_layer_kernel_8cpp_source.xhtml#l00223">CLBatchNormalizationLayerKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_lowp_offset_contribution_output_stage_kernel_8cpp_source.xhtml#l00257">CLGEMMLowpOffsetContributionOutputStageKernel::run()</a>, <a class="el" href="_c_l_direct_convolution_layer_kernel_8cpp_source.xhtml#l00553">CLDirectConvolutionLayerKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_lowp_offset_contribution_kernel_8cpp_source.xhtml#l00219">CLGEMMLowpOffsetContributionKernel::run()</a>, <a class="el" href="_c_l_strided_slice_kernel_8cpp_source.xhtml#l00194">CLStridedSliceKernel::run()</a>, <a class="el" href="_c_l_histogram_kernel_8cpp_source.xhtml#l00222">CLHistogramBorderKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_lowp_matrix_multiply_reshaped_kernel_8cpp_source.xhtml#l00267">CLGEMMLowpMatrixMultiplyReshapedKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_matrix_multiply_native_kernel_8cpp_source.xhtml#l00321">CLGEMMMatrixMultiplyNativeKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_matrix_multiply_kernel_8cpp_source.xhtml#l00476">CLGEMMMatrixMultiplyKernel::run()</a>, <a class="el" href="_c_l_winograd_output_transform_kernel_8cpp_source.xhtml#l00230">CLWinogradOutputTransformKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_matrix_multiply_reshaped_only_r_h_s_kernel_8cpp_source.xhtml#l00331">CLGEMMMatrixMultiplyReshapedOnlyRHSKernel::run()</a>, <a class="el" href="_c_l_canny_edge_kernel_8cpp_source.xhtml#l00172">CLEdgeNonMaxSuppressionKernel::run()</a>, <a class="el" href="_c_l_min_max_location_kernel_8cpp_source.xhtml#l00215">CLMinMaxLocationKernel::run()</a>, <a class="el" href="_c_l_h_o_g_descriptor_kernel_8cpp_source.xhtml#l00208">CLHOGBlockNormalizationKernel::run()</a>, <a class="el" href="_c_l_im2_col_kernel_8cpp_source.xhtml#l00353">CLIm2ColKernel::run()</a>, <a class="el" href="_g_c_softmax_layer_kernel_8cpp_source.xhtml#l00249">GCLogits1DNormKernel::run()</a>, <a class="el" href="_c_l_g_e_m_m_matrix_multiply_reshaped_kernel_8cpp_source.xhtml#l00326">CLGEMMMatrixMultiplyReshapedKernel::run()</a>, <a class="el" href="_c_l_sobel5x5_kernel_8cpp_source.xhtml#l00223">CLSobel5x5VertKernel::run()</a>, <a class="el" href="_c_l_sobel7x7_kernel_8cpp_source.xhtml#l00225">CLSobel7x7VertKernel::run()</a>, <a class="el" href="_c_l_fast_corners_kernel_8cpp_source.xhtml#l00182">CLCopyToArrayKernel::run()</a>, <a class="el" href="_c_l_pixel_wise_multiplication_kernel_8cpp_source.xhtml#l00377">CLComplexPixelWiseMultiplicationKernel::run()</a>, <a class="el" href="_c_l_canny_edge_kernel_8cpp_source.xhtml#l00273">CLEdgeTraceKernel::run()</a>, <a class="el" href="_c_l_softmax_layer_kernel_8cpp_source.xhtml#l00300">CLLogits1DMaxShiftExpSumKernel::run()</a>, <a class="el" href="_c_l_convolution_kernel_8cpp_source.xhtml#l00339">CLConvolutionRectangleKernel::run()</a>, <a class="el" href="_c_l_softmax_layer_kernel_8cpp_source.xhtml#l00382">CLLogits1DNormKernel::run()</a>, <a class="el" href="_n_e_reverse_kernel_8cpp_source.xhtml#l00102">arm_compute::run_reverse()</a>, <a class="el" href="_window_8h_source.xhtml#l00295">Window::slide_window_slice_1D()</a>, <a class="el" href="_window_8h_source.xhtml#l00307">Window::slide_window_slice_2D()</a>, <a class="el" href="_window_8h_source.xhtml#l00319">Window::slide_window_slice_3D()</a>, and <a class="el" href="_window_8h_source.xhtml#l00331">Window::slide_window_slice_4D()</a>.</p>
</div>
</div>
<a id="aa29a68ae51222595dbe5069d4e082c24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa29a68ae51222595dbe5069d4e082c24">&#9670;&nbsp;</a></span>slice() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::slice </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a>&#160;</td>
<td class="paramname"><em>starts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a>&#160;</td>
<td class="paramname"><em>ends</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a69e42a64983665cb7451016d3ca66e34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a69e42a64983665cb7451016d3ca66e34">&#9670;&nbsp;</a></span>slice() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;half_float::half&gt; arm_compute::test::validation::reference::slice </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a>&#160;</td>
<td class="paramname"><em>starts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a>&#160;</td>
<td class="paramname"><em>ends</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a49f4ade021d47be4a54eb343ee658c7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a49f4ade021d47be4a54eb343ee658c7c">&#9670;&nbsp;</a></span>sobel() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::pair&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt; sobel </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>filter_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7">GradientDimension</a>&#160;</td>
<td class="paramname"><em>gradient_dimension</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_sobel_8cpp_source.xhtml#l00106">106</a> of file <a class="el" href="validation_2reference_2_sobel_8cpp_source.xhtml">Sobel.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; SimpleTensor&lt;T&gt; dst_x(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), data_type&lt;T&gt;::value, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels());</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; SimpleTensor&lt;T&gt; dst_y(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), data_type&lt;T&gt;::value, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_channels());</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; ValidRegion <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">shape_to_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::UNDEFINED, BorderSize(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a> / 2));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; Coordinates coord = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), i);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">is_in_valid_region</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">valid_region</a>, coord))</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">switch</span>(gradient_dimension)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">case</span> GradientDimension::GRAD_X:</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, dst_x, TensorShape{ static_cast&lt;unsigned int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>), static_cast&lt;unsigned int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>) }, masks.at(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>).first, 1.f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; constant_border_value);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">case</span> GradientDimension::GRAD_Y:</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, dst_y, TensorShape{ static_cast&lt;unsigned int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>), static_cast&lt;unsigned int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>) }, masks.at(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>).second, 1.f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; constant_border_value);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">case</span> GradientDimension::GRAD_XY:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, dst_x, TensorShape{ static_cast&lt;unsigned int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>), static_cast&lt;unsigned int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>) }, masks.at(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>).first, 1.f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>,</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; constant_border_value);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, dst_y, TensorShape{ static_cast&lt;unsigned int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>), static_cast&lt;unsigned int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>) }, masks.at(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">filter_size</a>).second, 1.f, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; constant_border_value);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Gradient dimension not supported&quot;</span>);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span> std::make_pair(dst_x, dst_y);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5d1175c32ed7ea771e8ea46c936ea5c7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">arm_compute::test::validation::apply_2d_spatial_filter</a></div><div class="ttdeci">void apply_2d_spatial_filter(Coordinates coord, const SimpleTensor&lt; T &gt; &amp;src, SimpleTensor&lt; U &gt; &amp;dst, const TensorShape &amp;filter_shape, const V *filter_itr, double scale, BorderMode border_mode, T constant_border_value=T(0))</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00098">Utils.h:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a2237230a1357685ba2472c2d6fca17fa"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a2237230a1357685ba2472c2d6fca17fa">arm_compute::test::validation::filter_size</a></div><div class="ttdeci">filter_size</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00119">Convolution.cpp:119</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a856b55fc20ddcbdbeb84c35ae27bedac"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a856b55fc20ddcbdbeb84c35ae27bedac">arm_compute::test::is_in_valid_region</a></div><div class="ttdeci">bool is_in_valid_region(const ValidRegion &amp;valid_region, Coordinates coord)</div><div class="ttdoc">Check if a coordinate is within a valid region.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00498">Utils.h:498</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7819bcbbf45c2e7c1396a137dce54422"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7819bcbbf45c2e7c1396a137dce54422">arm_compute::test::validation::valid_region</a></div><div class="ttdeci">const ValidRegion valid_region</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00109">AbsoluteDifference.cpp:109</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a8103df0e6c416f55f40106aa49072b42"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a8103df0e6c416f55f40106aa49072b42">arm_compute::test::shape_to_valid_region</a></div><div class="ttdeci">ValidRegion shape_to_valid_region(const TensorShape &amp;a_shape, bool border_undefined=false, BorderSize border_size=BorderSize(0))</div><div class="ttdoc">Create a valid region based on tensor shape, border mode and border size.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00221">Utils.h:221</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a3525a4629519b21f52059c86c9048a80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3525a4629519b21f52059c86c9048a80">&#9670;&nbsp;</a></span>sobel() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::pair&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt;, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt; &gt; sobel </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>filter_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ae46abc5ecac309cbece5c06cb80daaf7">GradientDimension</a>&#160;</td>
<td class="paramname"><em>gradient_dimension</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5be8e137e2ace7ccaa059ca741f9fb95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5be8e137e2ace7ccaa059ca741f9fb95">&#9670;&nbsp;</a></span>softmax_layer() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; softmax_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_softmax_layer_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="validation_2reference_2_softmax_layer_8cpp_source.xhtml">SoftmaxLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1 };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Compute reference. Lower dims are the collapsing of the first axis</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// dimensions (i.e., the flattened dimension of each batch). The upper dims are</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// instead the batches we want to normalize</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">int</span> lower_dims = 1;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>; i++)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; lower_dims *= <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[i];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">int</span> upper_dims = 1;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>; i &lt; TensorShape::num_max_dimensions; i++)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; upper_dims *= <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[i];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; upper_dims; ++r)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> T *src_row_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data() + r * lower_dims;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; T *dst_row_ptr = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data() + r * lower_dims;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// Find max</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> T max = *std::max_element(src_row_ptr, src_row_ptr + lower_dims);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="comment">// Regularize</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; T <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>(0.f);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; std::transform(src_row_ptr, src_row_ptr + lower_dims, dst_row_ptr, [&amp;<a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>, max, beta](T val)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> T res(std::exp((val - max) * beta));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a> += res;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; });</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">// Normalize</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; std::transform(dst_row_ptr, dst_row_ptr + lower_dims, dst_row_ptr, [<a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>](T val)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> val / <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; });</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;}</div><div class="ttc" id="reduction__operation_8cl_xhtml_ab0df00f5333da51860deb93deb44a782"><div class="ttname"><a href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a></div><div class="ttdeci">DATA_TYPE sum(__global const DATA_TYPE *input)</div><div class="ttdoc">Calculate sum of a vector.</div><div class="ttdef"><b>Definition:</b> <a href="reduction__operation_8cl_source.xhtml#l00065">reduction_operation.cl:65</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_accc088009d44c521706aa98d6387ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">arm_compute::test::validation::axis</a></div><div class="ttdeci">axis</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">StackLayer.cpp:226</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">arm_compute::test::validation::axis</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00045">Dimensions&lt; size_t &gt;::num_max_dimensions</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="reduction__operation_8cl_source.xhtml#l00065">sum()</a>.</p>
</div>
</div>
<a id="a8547f81b97085bc5af17ea27ba7c18f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8547f81b97085bc5af17ea27ba7c18f0">&#9670;&nbsp;</a></span>softmax_layer() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::softmax_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4db13f79d26e9c1466a13ff930d31447"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4db13f79d26e9c1466a13ff930d31447">&#9670;&nbsp;</a></span>softmax_layer() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::softmax_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0b24305fe605098a988f71fdf15e5ad3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b24305fe605098a988f71fdf15e5ad3">&#9670;&nbsp;</a></span>softmax_layer() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::softmax_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a542fc60389c966ad25b15a53ac932ec0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a542fc60389c966ad25b15a53ac932ec0">&#9670;&nbsp;</a></span>space_to_batch() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; space_to_batch </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>block_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>paddings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_space_to_batch_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_space_to_batch_8cpp_source.xhtml">SpaceToBatch.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; result(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> width_out = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[0]);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> height_out = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[1]);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> batch_out = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[3]);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> width_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0]);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> height_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1]);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> batch_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[3]);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> channel = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2]);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> block_width = block_shape[0];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> block_height = block_shape[1];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> padding_left = paddings[0];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> padding_top = paddings[2];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// Pad value must be logic zero</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> pad_value = <a class="code" href="namespacearm__compute.xhtml#a0bee325b210f81bb89fe1f9e15badf9c">is_data_type_quantized</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type()) ? <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info().uniform().offset : 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">int</span> out_pos = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> outB = 0; outB &lt; batch_out; ++outB)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inB = outB % batch_in;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">int</span> shift_w = (outB / batch_in) % block_width;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">int</span> shift_h = (outB / batch_in) / block_width;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> c = 0; c &lt; channel; ++c)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> outH = 0; outH &lt; height_out; ++outH)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> outW = 0; outW &lt; width_out; ++outW)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> in_pos = ((inB * channel + c) * height_in + ((outH * block_height + shift_h) - padding_top)) * width_in + (outW * block_width + shift_w) - padding_left;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span>(outH * block_height + shift_h &lt; padding_top || outH * block_height + shift_h &gt;= padding_top + height_in || outW * block_width + shift_w &lt; padding_left</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; || outW * block_width + shift_w &gt;= padding_left + width_in)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; result[out_pos] = pad_value;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; result[out_pos] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[in_pos];</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; ++out_pos;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="ttc" id="namespacearm__compute_xhtml_a0bee325b210f81bb89fe1f9e15badf9c"><div class="ttname"><a href="namespacearm__compute.xhtml#a0bee325b210f81bb89fe1f9e15badf9c">arm_compute::is_data_type_quantized</a></div><div class="ttdeci">bool is_data_type_quantized(DataType dt)</div><div class="ttdoc">Check if a given data type is of quantized type.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_utils_8h_source.xhtml#l01010">Utils.h:1010</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l01010">arm_compute::is_data_type_quantized()</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a78ba0d6811573e8170a663728680dfcf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78ba0d6811573e8170a663728680dfcf">&#9670;&nbsp;</a></span>space_to_batch() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::space_to_batch </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>block_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>paddings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0349f5a3ee3a5d25bc50818a701e32eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0349f5a3ee3a5d25bc50818a701e32eb">&#9670;&nbsp;</a></span>space_to_batch() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::space_to_batch </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>block_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>paddings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a422edd0f26551e4ef6eaa4e7bd2e481e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a422edd0f26551e4ef6eaa4e7bd2e481e">&#9670;&nbsp;</a></span>space_to_batch() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::space_to_batch </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>block_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>paddings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a05e1ae7538add5af2dfd02758c8445b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a05e1ae7538add5af2dfd02758c8445b5">&#9670;&nbsp;</a></span>space_to_depth() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; space_to_depth </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>block_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_space_to_depth_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_space_to_depth_8cpp_source.xhtml">SpaceToDepth.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; result(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> width_out = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[0]);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> height_out = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[1]);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> channel_out = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>[2]);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> width_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[0]);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> height_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[1]);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> channel_in = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[2]);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> batch = static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[3]);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> block_width = block_shape;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> block_height = block_shape;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">int</span> out_pos = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ba = 0; ba &lt; batch; ++ba)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> outC = 0; outC &lt; channel_out; ++outC)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inC = outC % channel_in;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">int</span> shift_w = (outC / channel_in) % block_width;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">int</span> shift_h = (outC / channel_in) / block_width;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> outH = 0; outH &lt; height_out; ++outH)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> outW = 0; outW &lt; width_out; ++outW)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> in_pos = ((ba * channel_in + inC) * height_in + ((outH * block_height + shift_h))) * width_in + (outW * block_width + shift_w);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; result[out_pos] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[in_pos];</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; ++out_pos;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a50ba28466df871bbf6b38ccdd2817c4e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a50ba28466df871bbf6b38ccdd2817c4e">&#9670;&nbsp;</a></span>space_to_depth() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::space_to_depth </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>block_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7e94ae75a4a091ee96162879f7860ae0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e94ae75a4a091ee96162879f7860ae0">&#9670;&nbsp;</a></span>space_to_depth() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::space_to_depth </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>block_shape</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad85d74ccebfcf9cb1fe365106b1a8942"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad85d74ccebfcf9cb1fe365106b1a8942">&#9670;&nbsp;</a></span>stack_layer() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; stack_layer </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_stack_layer_8cpp_source.xhtml#l00041">41</a> of file <a class="el" href="reference_2_stack_layer_8cpp_source.xhtml">StackLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>.num_dimensions() &gt; 5);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(in.size() &lt; 2);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a> &gt; in[0].<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>().num_dimensions());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; SimpleTensor&lt;T&gt; out{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">data_type</a> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width = in[0].shape()[0];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height = in[0].shape()[1];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth = in[0].shape()[2];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> batch_size = in[0].shape()[3];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f2a0a7758d36198492af046c46ddbf5">num_tensors</a> = in.size();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// Array to store the input coordinates</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">// i_coordinates[0] = xi, i_coordinates[1] = yi, i_coordinates[2] = zi</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// i_coordinates[3] = bi, i_coordinates[4] = i, i_coordinates[5] = 0</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// i_coordinates[5] will be always zero and used for not incrementing the output when the input has less than 4 dimensions</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; std::array&lt;int, 6&gt; i_coordinates{ 0 };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// Array of pointers used to map the output coordinates to the input ones accordingly with the axis</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// This array is initialized with &amp;i_coordinates[5] since this will be always zero</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; std::array&lt;int *, 5&gt; o_coordinates = { &amp;i_coordinates[5], &amp;i_coordinates[5], &amp;i_coordinates[5], &amp;i_coordinates[5], &amp;i_coordinates[5] };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">// Set the axis coordinate</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; o_coordinates[<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>] = &amp;i_coordinates[4];</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k_shift = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// Map the output coordinates</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k = 0; k &lt; in[0].shape().num_dimensions(); ++k)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span>(k == <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; k_shift++;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; o_coordinates[k + k_shift] = &amp;i_coordinates[k];</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">// Use alias for the input coordinates</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">int</span> &amp;xi = i_coordinates[0];</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">int</span> &amp;yi = i_coordinates[1];</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">int</span> &amp;zi = i_coordinates[2];</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">int</span> &amp;bi = i_coordinates[3];</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordtype">int</span> &amp;i = i_coordinates[4];</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="comment">// Use alias for the output coordinates</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">int</span> &amp;xo = *(o_coordinates[0]);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">int</span> &amp;yo = *(o_coordinates[1]);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">int</span> &amp;zo = *(o_coordinates[2]);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">int</span> &amp;bo = *(o_coordinates[3]);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">int</span> &amp;wo = *(o_coordinates[4]);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// Stack tensors</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">for</span>(; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f2a0a7758d36198492af046c46ddbf5">num_tensors</a>; ++(i))</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; bi = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span>(; bi &lt; batch_size; ++(bi))</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; zi = 0;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">for</span>(; zi &lt; depth; ++(zi))</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; yi = 0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">for</span>(; yi &lt; height; ++(yi))</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; xi = 0;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">for</span>(; xi &lt; width; ++(xi))</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; *(reinterpret_cast&lt;T *&gt;(out(Coordinates(xo, yo, zo, bo, wo)))) = *(reinterpret_cast&lt;const T *&gt;(in[i](Coordinates(xi, yi, zi, bi))));</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a45cde9abb508c62d67c3bb2b9bf566a5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">arm_compute::test::validation::shape</a></div><div class="ttdeci">shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00097">AbsoluteDifference.cpp:97</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f2a0a7758d36198492af046c46ddbf5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f2a0a7758d36198492af046c46ddbf5">arm_compute::test::validation::num_tensors</a></div><div class="ttdeci">num_tensors</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00227">StackLayer.cpp:227</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_accc088009d44c521706aa98d6387ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">arm_compute::test::validation::axis</a></div><div class="ttdeci">axis</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">StackLayer.cpp:226</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5f5b6c4337eac9e2e0046ca2304d80dc"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5f5b6c4337eac9e2e0046ca2304d80dc">arm_compute::test::validation::data_type</a></div><div class="ttdeci">data_type</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00135">ArithmeticAddition.cpp:135</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">arm_compute::test::validation::axis</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00135">arm_compute::test::validation::data_type</a>, <a class="el" href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00227">arm_compute::test::validation::num_tensors</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, and <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00097">arm_compute::test::validation::shape</a>.</p>
</div>
</div>
<a id="af0c66df558c6d72fe52fdbb10a1a56ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0c66df558c6d72fe52fdbb10a1a56ac">&#9670;&nbsp;</a></span>stack_layer() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int&gt; arm_compute::test::validation::reference::stack_layer </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a36ab5c75947ea8e7c35973444255711d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36ab5c75947ea8e7c35973444255711d">&#9670;&nbsp;</a></span>stack_layer() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;short&gt; arm_compute::test::validation::reference::stack_layer </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; short &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac682fa5701bdf7949d8b5a26ef187e7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac682fa5701bdf7949d8b5a26ef187e7b">&#9670;&nbsp;</a></span>stack_layer() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;char&gt; arm_compute::test::validation::reference::stack_layer </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; char &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
<td class="paramname"><em>data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1cd4d70f0bab74b1aa3cb43b3e3a0be5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1cd4d70f0bab74b1aa3cb43b3e3a0be5">&#9670;&nbsp;</a></span>strided_slice() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; strided_slice </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a>&#160;</td>
<td class="paramname"><em>starts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a>&#160;</td>
<td class="paramname"><em>ends</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a11916d4148a39a67794050373f54825a">BiStrides</a>&#160;</td>
<td class="paramname"><em>strides</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>begin_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>end_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>shrink_axis_mask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_slice_operations_8cpp_source.xhtml#l00080">80</a> of file <a class="el" href="_slice_operations_8cpp_source.xhtml">SliceOperations.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">using namespace </span><a class="code" href="namespacearm__compute_1_1helpers_1_1tensor__transform.xhtml">arm_compute::helpers::tensor_transform</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// Validation checks</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().num_dimensions() &gt; 4);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(starts.num_dimensions() &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().num_dimensions());</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(ends.num_dimensions() &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().num_dimensions());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(strides.num_dimensions() &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().num_dimensions());</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(std::any_of(strides.cbegin(), strides.cbegin() + strides.num_dimensions(), [](<span class="keywordtype">int</span> i)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> i == 0;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }));</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// Get source shape</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">const</span> TensorShape &amp;src_shape = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// Get destination shape</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> TensorShape <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a> = <a class="code" href="namespacearm__compute_1_1helpers_1_1tensor__transform.xhtml#adb1ed814b11a751017250143fb1a9174">compute_strided_slice_output_shape</a>(src_shape, starts, ends, strides, begin_mask, end_mask, shrink_axis_mask);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="comment">// Create destination tensor</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1 };</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="comment">// Get coordinates</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; Coordinates starts_abs{};</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; Coordinates ends_abs{};</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; Coordinates final_strides{};</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; std::tie(starts_abs, ends_abs, final_strides) = <a class="code" href="namespacearm__compute_1_1helpers_1_1tensor__transform.xhtml#a6a03e096e644bb85ed26acafd1516339">calculate_strided_slice_coords</a>(src_shape,</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; starts, ends, strides,</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; begin_mask, end_mask, shrink_axis_mask);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// Perform strided slice</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; Window win;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; win.use_tensor_dimensions(<a class="code" href="namespacearm__compute_1_1helpers_1_1tensor__transform.xhtml#adb1ed814b11a751017250143fb1a9174">compute_strided_slice_output_shape</a>(src_shape,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; starts, ends, strides,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; begin_mask, end_mask, shrink_axis_mask, <span class="keyword">true</span>));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a5002bf7ec46d52971f9526e94172cfee">execute_window_loop</a>(win, [&amp;](<span class="keyword">const</span> Coordinates &amp; <span class="keywordtype">id</span>)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; Coordinates <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <span class="keywordtype">id</span>.num_dimensions(); ++i)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>.set(i, starts_abs[i] + <span class="keywordtype">id</span>[i] * final_strides[i]);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.data()[idx++] = *reinterpret_cast&lt;const T *&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>(<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>));</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; });</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div><div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">helpers.h:328</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1helpers_1_1tensor__transform_xhtml_a6a03e096e644bb85ed26acafd1516339"><div class="ttname"><a href="namespacearm__compute_1_1helpers_1_1tensor__transform.xhtml#a6a03e096e644bb85ed26acafd1516339">arm_compute::helpers::tensor_transform::calculate_strided_slice_coords</a></div><div class="ttdeci">std::tuple&lt; Coordinates, Coordinates, Coordinates &gt; calculate_strided_slice_coords(TensorShape input_shape, Coordinates starts, Coordinates ends, Coordinates strides, int32_t begin_mask=0, int32_t end_mask=0, int32_t shrink_axis_mask=0)</div><div class="ttdoc">Calculate start, end and stride coordinates for a strided slice.</div><div class="ttdef"><b>Definition:</b> <a href="tensor__transform_8cpp_source.xhtml#l00113">tensor_transform.cpp:113</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1helpers_1_1tensor__transform_xhtml"><div class="ttname"><a href="namespacearm__compute_1_1helpers_1_1tensor__transform.xhtml">arm_compute::helpers::tensor_transform</a></div><div class="ttdef"><b>Definition:</b> <a href="tensor__transform_8h_source.xhtml#l00033">tensor_transform.h:33</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a5002bf7ec46d52971f9526e94172cfee"><div class="ttname"><a href="namespacearm__compute.xhtml#a5002bf7ec46d52971f9526e94172cfee">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &amp;w, L &amp;&amp;lambda_function, Ts &amp;&amp;... iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00122">Helpers.inl:122</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1helpers_1_1tensor__transform_xhtml_adb1ed814b11a751017250143fb1a9174"><div class="ttname"><a href="namespacearm__compute_1_1helpers_1_1tensor__transform.xhtml#adb1ed814b11a751017250143fb1a9174">arm_compute::helpers::tensor_transform::compute_strided_slice_output_shape</a></div><div class="ttdeci">TensorShape compute_strided_slice_output_shape(TensorShape input_shape, Coordinates starts, Coordinates ends, Coordinates strides, int32_t begin_mask=0, int32_t end_mask=0, int32_t shrink_axis_mask=0, bool return_unshrinked=false)</div><div class="ttdoc">Computes output shape of strided slice.</div><div class="ttdef"><b>Definition:</b> <a href="tensor__transform_8cpp_source.xhtml#l00132">tensor_transform.cpp:132</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="tensor__transform_8cpp_source.xhtml#l00113">arm_compute::helpers::tensor_transform::calculate_strided_slice_coords()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00210">Dimensions&lt; T &gt;::cbegin()</a>, <a class="el" href="tensor__transform_8cpp_source.xhtml#l00132">arm_compute::helpers::tensor_transform::compute_strided_slice_output_shape()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00122">arm_compute::execute_window_loop()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00122">Dimensions&lt; T &gt;::num_dimensions()</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">offset()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="_window_8inl_source.xhtml#l00250">Window::use_tensor_dimensions()</a>.</p>
</div>
</div>
<a id="a6afd3ff048b88a08c17e61277bfd10cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6afd3ff048b88a08c17e61277bfd10cb">&#9670;&nbsp;</a></span>strided_slice() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::strided_slice </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a>&#160;</td>
<td class="paramname"><em>starts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a>&#160;</td>
<td class="paramname"><em>ends</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a11916d4148a39a67794050373f54825a">BiStrides</a>&#160;</td>
<td class="paramname"><em>strides</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>begin_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>end_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>shrink_axis_mask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a58bfd4f5ff4a8e1fc0999c6bb5ac5a15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58bfd4f5ff4a8e1fc0999c6bb5ac5a15">&#9670;&nbsp;</a></span>strided_slice() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;half_float::half&gt; arm_compute::test::validation::reference::strided_slice </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; half_float::half &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a>&#160;</td>
<td class="paramname"><em>starts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a>&#160;</td>
<td class="paramname"><em>ends</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a11916d4148a39a67794050373f54825a">BiStrides</a>&#160;</td>
<td class="paramname"><em>strides</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>begin_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>end_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>shrink_axis_mask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a935c4b1c0ddcd108097e6a4a7fd520e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a935c4b1c0ddcd108097e6a4a7fd520e8">&#9670;&nbsp;</a></span>table_lookup() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; table_lookup </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; T, T &gt; &amp;&#160;</td>
<td class="paramname"><em>rawlut</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_table_lookup_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="reference_2_table_lookup_8cpp_source.xhtml">TableLookup.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; SimpleTensor&lt;T&gt; result(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; result[i] = rawlut.at(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i]);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a3a87ef7fe41b158671d4cf7a511aebec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a87ef7fe41b158671d4cf7a511aebec">&#9670;&nbsp;</a></span>table_lookup() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::table_lookup </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; uint8_t, uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>rawlut</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2860e24e7982ebd58891aae4d0a90ad0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2860e24e7982ebd58891aae4d0a90ad0">&#9670;&nbsp;</a></span>table_lookup() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::table_lookup </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; int16_t, int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>rawlut</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6cae310822a46019ba25a00ddb0f7e62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6cae310822a46019ba25a00ddb0f7e62">&#9670;&nbsp;</a></span>threshold() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; threshold </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>threshold</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>false_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>true_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649">ThresholdType</a>&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>upper</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_threshold_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="reference_2_threshold_8cpp_source.xhtml">Threshold.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">switch</span>(type)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">case</span> ThresholdType::BINARY:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = ((<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8a56f5d40af92249b49b8fabc89cfcd3">threshold</a>) ? true_value : false_value);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> ThresholdType::RANGE:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &gt; upper)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = false_value;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i] &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8a56f5d40af92249b49b8fabc89cfcd3">threshold</a>)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = false_value;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = true_value;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Thresholding type not recognised&quot;</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a8a56f5d40af92249b49b8fabc89cfcd3"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a8a56f5d40af92249b49b8fabc89cfcd3">arm_compute::test::validation::reference::threshold</a></div><div class="ttdeci">template SimpleTensor&lt; uint8_t &gt; threshold(const SimpleTensor&lt; uint8_t &gt; &amp;src, uint8_t threshold, uint8_t false_value, uint8_t true_value, ThresholdType type, uint8_t upper)</div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649a98ad0e8750ae10ad556ed7a62affb452">arm_compute::BINARY</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649a01036ddcc971d02f6c32c3da31a119f2">arm_compute::RANGE</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
<p class="reference">Referenced by <a class="el" href="_utils_quantized_asymm_8h_source.xhtml#l00036">arm_compute::test::validation::asymm_rounding_divide_by_pow2()</a>, <a class="el" href="fast__corners_8cl_source.xhtml#l00098">compute_strength()</a>, <a class="el" href="_c_l_threshold_8cpp_source.xhtml#l00033">CLThreshold::configure()</a>, <a class="el" href="_n_e_threshold_8cpp_source.xhtml#l00033">NEThreshold::configure()</a>, <a class="el" href="_c_l_threshold_kernel_8cpp_source.xhtml#l00037">CLThresholdKernel::configure()</a>, <a class="el" href="_n_e_h_o_g_detector_8cpp_source.xhtml#l00031">NEHOGDetector::configure()</a>, <a class="el" href="_n_e_fast_corners_kernel_8cpp_source.xhtml#l00359">NEFastCornersKernel::configure()</a>, <a class="el" href="_n_e_threshold_kernel_8cpp_source.xhtml#l00042">NEThresholdKernel::configure()</a>, <a class="el" href="_n_e_fill_array_kernel_8cpp_source.xhtml#l00039">NEFillArrayKernel::configure()</a>, <a class="el" href="_c_l_h_o_g_detector_8cpp_source.xhtml#l00039">CLHOGDetector::configure()</a>, <a class="el" href="_n_e_fast_corners_8cpp_source.xhtml#l00050">NEFastCorners::configure()</a>, <a class="el" href="_n_e_h_o_g_detector_kernel_8cpp_source.xhtml#l00042">NEHOGDetectorKernel::configure()</a>, <a class="el" href="_c_l_fast_corners_kernel_8cpp_source.xhtml#l00050">CLFastCornersKernel::configure()</a>, <a class="el" href="_c_l_h_o_g_detector_kernel_8cpp_source.xhtml#l00044">CLHOGDetectorKernel::configure()</a>, <a class="el" href="_c_l_fast_corners_8cpp_source.xhtml#l00055">CLFastCorners::configure()</a>, <a class="el" href="_c_l_harris_corners_8cpp_source.xhtml#l00064">CLHarrisCorners::configure()</a>, <a class="el" href="_n_e_harris_corners_8cpp_source.xhtml#l00062">NEHarrisCorners::configure()</a>, <a class="el" href="_n_e_h_o_g_multi_detection_8cpp_source.xhtml#l00054">NEHOGMultiDetection::configure()</a>, <a class="el" href="_c_l_h_o_g_multi_detection_8cpp_source.xhtml#l00056">CLHOGMultiDetection::configure()</a>, <a class="el" href="validation_2_c_l_2_harris_corners_8cpp_source.xhtml#l00056">arm_compute::test::validation::DATA_TEST_CASE()</a>, <a class="el" href="validation_2reference_2_fast_corners_8cpp_source.xhtml#l00152">fast_corners()</a>, <a class="el" href="fast__corners_8cl_source.xhtml#l00155">fast_corners()</a>, <a class="el" href="_harris_corner_detector_8cpp_source.xhtml#l00187">harris_corner_detector()</a>, <a class="el" href="validation_2reference_2_h_o_g_detector_8cpp_source.xhtml#l00048">hog_detector()</a>, <a class="el" href="validation_2reference_2_h_o_g_multi_detection_8cpp_source.xhtml#l00138">hog_multi_detection()</a>, <a class="el" href="_n_e_math_8inl_source.xhtml#l00302">arm_compute::rounding_divide_by_pow2()</a>, and <a class="el" href="threshold_8cl_source.xhtml#l00044">threshold_binary()</a>.</p>
</div>
</div>
<a id="a8a56f5d40af92249b49b8fabc89cfcd3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a56f5d40af92249b49b8fabc89cfcd3">&#9670;&nbsp;</a></span>threshold() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::threshold </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>threshold</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>false_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>true_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649">ThresholdType</a>&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>upper</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="reference">Referenced by <a class="el" href="_c_l_2_threshold_8cpp_source.xhtml#l00042">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a id="a3744347976f5c2cb8f3ecd016a588454"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3744347976f5c2cb8f3ecd016a588454">&#9670;&nbsp;</a></span>tile() <span class="overload">[1/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; tile </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;&#160;</td>
<td class="paramname"><em>multiples</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_tile_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_tile_8cpp_source.xhtml">Tile.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> src_shape = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> tiled_shape = <a class="code" href="namespacearm__compute_1_1misc_1_1shape__calculator.xhtml#a626cdfbacb377ee26462155d421717d3">misc::shape_calculator::compute_tiled_shape</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), multiples);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ tiled_shape, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type() };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> idx = 0; idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.num_elements(); idx++)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; Coordinates coord = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(tiled_shape, idx);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> x = coord.x();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> y = coord.y();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> z = coord.z();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> = coord[3];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; Coordinates src_coords{ x % src_shape[0], y % src_shape[1], z % src_shape[2], <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> % src_shape[3] };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">int</span> src_idx = <a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(src_shape, src_coords);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[src_idx];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1a367830ae09bf6138df822888ec1d71"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">arm_compute::test::validation::w</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; w</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">DFT.cpp:156</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a9be4cb7e6ee20063a4a10bc3abb750b9"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">arm_compute::test::coord2index</a></div><div class="ttdeci">int coord2index(const TensorShape &amp;shape, const Coordinates &amp;coord)</div><div class="ttdoc">Linearise the given coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00480">Utils.h:480</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1misc_1_1shape__calculator_xhtml_a626cdfbacb377ee26462155d421717d3"><div class="ttname"><a href="namespacearm__compute_1_1misc_1_1shape__calculator.xhtml#a626cdfbacb377ee26462155d421717d3">arm_compute::misc::shape_calculator::compute_tiled_shape</a></div><div class="ttdeci">TensorShape compute_tiled_shape(const TensorShape &amp;input_shape, const Multiples &amp;multiples)</div><div class="ttdoc">Calculate the tiled shape of a tensor.</div><div class="ttdef"><b>Definition:</b> <a href="_shape_calculator_8h_source.xhtml#l01168">ShapeCalculator.h:1168</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_shape_calculator_8h_source.xhtml#l01168">arm_compute::misc::shape_calculator::compute_tiled_shape()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00480">arm_compute::test::coord2index()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">arm_compute::test::validation::w</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00086">Dimensions&lt; T &gt;::y()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00091">Dimensions&lt; T &gt;::z()</a>.</p>
<p class="reference">Referenced by <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00207">arm_compute::test::validation::get_tile()</a>.</p>
</div>
</div>
<a id="a9cb59283ffd29ef361fbd3cb3210969a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cb59283ffd29ef361fbd3cb3210969a">&#9670;&nbsp;</a></span>tile() <span class="overload">[2/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::tile </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;&#160;</td>
<td class="paramname"><em>multiples</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae596700e94d56a3c0bba0618cc8dfa77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae596700e94d56a3c0bba0618cc8dfa77">&#9670;&nbsp;</a></span>tile() <span class="overload">[3/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int8_t&gt; arm_compute::test::validation::reference::tile </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;&#160;</td>
<td class="paramname"><em>multiples</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aaa7eb6a776fe2f70b1a14ab10a2a328f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa7eb6a776fe2f70b1a14ab10a2a328f">&#9670;&nbsp;</a></span>tile() <span class="overload">[4/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint16_t&gt; arm_compute::test::validation::reference::tile </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;&#160;</td>
<td class="paramname"><em>multiples</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9f96416023f4be64c4121eeb5ccee762"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f96416023f4be64c4121eeb5ccee762">&#9670;&nbsp;</a></span>tile() <span class="overload">[5/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int16_t&gt; arm_compute::test::validation::reference::tile </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;&#160;</td>
<td class="paramname"><em>multiples</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a814c6cf20944d1f74831d755daebe165"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a814c6cf20944d1f74831d755daebe165">&#9670;&nbsp;</a></span>tile() <span class="overload">[6/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint32_t&gt; arm_compute::test::validation::reference::tile </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;&#160;</td>
<td class="paramname"><em>multiples</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a61f2f4b00eae513e610668cc1442ad2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a61f2f4b00eae513e610668cc1442ad2d">&#9670;&nbsp;</a></span>tile() <span class="overload">[7/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;int32_t&gt; arm_compute::test::validation::reference::tile </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;&#160;</td>
<td class="paramname"><em>multiples</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1c5026785894b871c99266c939e4a4f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c5026785894b871c99266c939e4a4f6">&#9670;&nbsp;</a></span>tile() <span class="overload">[8/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::tile </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;&#160;</td>
<td class="paramname"><em>multiples</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="adfbf8210332d2d06a04bde1aa6377a52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adfbf8210332d2d06a04bde1aa6377a52">&#9670;&nbsp;</a></span>tile() <span class="overload">[9/9]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::tile </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#afe9e10e5fdfd1e2665ac17c75c0cacd8">Multiples</a> &amp;&#160;</td>
<td class="paramname"><em>multiples</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acf9a40691cf4bd2c9af93bc806358a24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf9a40691cf4bd2c9af93bc806358a24">&#9670;&nbsp;</a></span>transpose() <span class="overload">[1/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; transpose </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_transpose_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="validation_2reference_2_transpose_8cpp_source.xhtml">Transpose.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// Make rows the columns of the original shape</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; TensorShape <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x() };</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type() };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> Coordinates coord = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), i);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> Coordinates dst_coord{ coord.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#ac4a1050be02b20b3f791b9a483f3abe2">y</a>(), coord.x() };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> dst_index = <a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape(), dst_coord);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[dst_index] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a9be4cb7e6ee20063a4a10bc3abb750b9"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">arm_compute::test::coord2index</a></div><div class="ttdeci">int coord2index(const TensorShape &amp;shape, const Coordinates &amp;coord)</div><div class="ttdoc">Linearise the given coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00480">Utils.h:480</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_ac4a1050be02b20b3f791b9a483f3abe2"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#ac4a1050be02b20b3f791b9a483f3abe2">arm_compute::Dimensions::y</a></div><div class="ttdeci">T y() const</div><div class="ttdoc">Alias to access the size of the second dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00086">Dimensions.h:86</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2_utils_8h_source.xhtml#l00480">arm_compute::test::coord2index()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00086">Dimensions&lt; T &gt;::y()</a>.</p>
</div>
</div>
<a id="a269f65a55705b60a0e42d5d277ff9ee3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a269f65a55705b60a0e42d5d277ff9ee3">&#9670;&nbsp;</a></span>transpose() <span class="overload">[2/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::transpose </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0954b58b92e7a6eb0f0d5f9d62fd207a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0954b58b92e7a6eb0f0d5f9d62fd207a">&#9670;&nbsp;</a></span>transpose() <span class="overload">[3/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint16_t&gt; arm_compute::test::validation::reference::transpose </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a438af3af37f59f35944cd276469bb0d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a438af3af37f59f35944cd276469bb0d5">&#9670;&nbsp;</a></span>transpose() <span class="overload">[4/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint32_t&gt; arm_compute::test::validation::reference::transpose </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint32_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af5f82318aa0982e38535d512accf3177"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5f82318aa0982e38535d512accf3177">&#9670;&nbsp;</a></span>transpose() <span class="overload">[5/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::transpose </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9f3ed5e09dcdb43d381a70aba1700bd4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f3ed5e09dcdb43d381a70aba1700bd4">&#9670;&nbsp;</a></span>transpose() <span class="overload">[6/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::transpose </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abe272472696bc4aa07058beae42c2706"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe272472696bc4aa07058beae42c2706">&#9670;&nbsp;</a></span>unstack() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &gt; unstack </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>input_tensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>output_tensors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_unstack_8cpp_source.xhtml#l00087">87</a> of file <a class="el" href="reference_2_unstack_8cpp_source.xhtml">Unstack.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="comment">// Wrap around negative values</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axis_u = <a class="code" href="namespacearm__compute.xhtml#aeb6881009f40f57d430752441ec5c4f4">wrap_around</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">axis</a>, static_cast&lt;int&gt;(input_tensor.shape().num_dimensions()));</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(axis_u &gt;= input_tensor.shape().num_dimensions());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> k = 0; k &lt; output_tensors.size(); ++k)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; SimpleTensor&lt;T&gt; &amp;output = output_tensors[k];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> SimpleTensor&lt;T&gt; kth_slice = get_slice(input_tensor, axis_u, k);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; output = copy_tensor&lt;T&gt;(kth_slice);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">return</span> output_tensors;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_aeb6881009f40f57d430752441ec5c4f4"><div class="ttname"><a href="namespacearm__compute.xhtml#aeb6881009f40f57d430752441ec5c4f4">arm_compute::wrap_around</a></div><div class="ttdeci">T wrap_around(T x, T m)</div><div class="ttdoc">Wrap-around a number within the range 0 &lt;= x &lt; m.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00764">Helpers.h:764</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_accc088009d44c521706aa98d6387ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#accc088009d44c521706aa98d6387ee21">arm_compute::test::validation::axis</a></div><div class="ttdeci">axis</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">StackLayer.cpp:226</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_n_e_o_n_2_stack_layer_8cpp_source.xhtml#l00226">arm_compute::test::validation::axis</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00764">arm_compute::wrap_around()</a>.</p>
</div>
</div>
<a id="a6875441960841feccd15a265409b6d7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6875441960841feccd15a265409b6d7f">&#9670;&nbsp;</a></span>unstack() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::vector&lt;<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; &gt; arm_compute::test::validation::reference::unstack </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>input_tensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>output_tensors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad1aa5278545903400c542ac3e2a8b497"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1aa5278545903400c542ac3e2a8b497">&#9670;&nbsp;</a></span>unstack() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::vector&lt;<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; &gt; arm_compute::test::validation::reference::unstack </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>input_tensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>output_tensors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab3cc70aa61afb1c147878c2c9e7646ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab3cc70aa61afb1c147878c2c9e7646ed">&#9670;&nbsp;</a></span>unstack() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template std::vector&lt;<a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; &gt; arm_compute::test::validation::reference::unstack </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>input_tensor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>output_tensors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1eba3d4a492c440c30fdffe8866bed51"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1eba3d4a492c440c30fdffe8866bed51">&#9670;&nbsp;</a></span>upsample_layer() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; upsample_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_upsample_layer_8cpp_source.xhtml#l00082">82</a> of file <a class="el" href="reference_2_upsample_layer_8cpp_source.xhtml">UpsampleLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> upsample_function&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad986b73e9d5f47a623a9b6d773c25e34"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">arm_compute::test::validation::policy</a></div><div class="ttdeci">policy</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">ArithmeticAddition.cpp:136</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">arm_compute::test::validation::policy</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a86b87d30de70aa352915398b5dee8301"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86b87d30de70aa352915398b5dee8301">&#9670;&nbsp;</a></span>upsample_layer() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::upsample_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_upsample_layer_8cpp_source.xhtml#l00088">88</a> of file <a class="el" href="reference_2_upsample_layer_8cpp_source.xhtml">UpsampleLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;{</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info());</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute.xhtml#a14f46283f316e7f0fad301d5c1507e9f">is_data_type_quantized_asymmetric</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type()))</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; SimpleTensor&lt;float&gt; src_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; SimpleTensor&lt;float&gt; dst_tmp = upsample_function&lt;float&gt;(src_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">convert_to_asymmetric</a>(dst_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = upsample_function&lt;uint8_t&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad986b73e9d5f47a623a9b6d773c25e34"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">arm_compute::test::validation::policy</a></div><div class="ttdeci">policy</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">ArithmeticAddition.cpp:136</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a291a16e64b05bdf4d08e1240d5bb286a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">arm_compute::test::validation::convert_to_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; convert_to_asymmetric(const SimpleTensor&lt; float &gt; &amp;src, const QuantizationInfo &amp;quantization_info)</div><div class="ttdoc">Convert float simple tensor into quantized using specified quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">Helpers.cpp:123</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a14f46283f316e7f0fad301d5c1507e9f"><div class="ttname"><a href="namespacearm__compute.xhtml#a14f46283f316e7f0fad301d5c1507e9f">arm_compute::is_data_type_quantized_asymmetric</a></div><div class="ttdeci">bool is_data_type_quantized_asymmetric(DataType dt)</div><div class="ttdoc">Check if a given data type is of asymmetric quantized type.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_utils_8h_source.xhtml#l01030">Utils.h:1030</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab24849be91cfb00a72f7a61a7e00fdb7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">arm_compute::test::validation::convert_from_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; convert_from_asymmetric(const SimpleTensor&lt; uint8_t &gt; &amp;src)</div><div class="ttdoc">Convert quantized simple tensor into float using tensor quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">Helpers.cpp:111</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">arm_compute::test::validation::convert_from_asymmetric()</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">arm_compute::test::validation::convert_to_asymmetric()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l01030">arm_compute::is_data_type_quantized_asymmetric()</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">arm_compute::test::validation::policy</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="a9f909e8f8b7cc9f9c2e81b0ce0f0fe97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f909e8f8b7cc9f9c2e81b0ce0f0fe97">&#9670;&nbsp;</a></span>upsample_layer() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::upsample_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6d93cd5068a511c7433c4f8f165b6773"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d93cd5068a511c7433c4f8f165b6773">&#9670;&nbsp;</a></span>upsample_layer() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::upsample_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3064cbee60ab97935e8d1df617f82b5c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3064cbee60ab97935e8d1df617f82b5c">&#9670;&nbsp;</a></span>valid_bilinear_policy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool arm_compute::test::validation::reference::valid_bilinear_policy </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>xn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>yn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>width</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>height</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_warp_affine_8cpp_source.xhtml#l00036">36</a> of file <a class="el" href="validation_2reference_2_warp_affine_8cpp_source.xhtml">WarpAffine.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> != BorderMode::UNDEFINED)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span>((0 &lt;= yn + 1) &amp;&amp; (yn + 1 &lt; height) &amp;&amp; (0 &lt;= xn + 1) &amp;&amp; (xn + 1 &lt; width))</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, and <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::UNDEFINED</a>.</p>
<p class="reference">Referenced by <a class="el" href="validation_2reference_2_remap_8cpp_source.xhtml#l00041">remap()</a>, <a class="el" href="validation_2reference_2_warp_affine_8cpp_source.xhtml#l00050">warp_affine()</a>, and <a class="el" href="reference_2_warp_perspective_8cpp_source.xhtml#l00038">warp_perspective()</a>.</p>
</div>
</div>
<a id="a97fb6802b7b8641c51fcc29aa03248ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97fb6802b7b8641c51fcc29aa03248ed">&#9670;&nbsp;</a></span>warp_affine() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; warp_affine </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>valid_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>matrix</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="validation_2reference_2_warp_affine_8cpp_source.xhtml#l00050">50</a> of file <a class="el" href="validation_2reference_2_warp_affine_8cpp_source.xhtml">WarpAffine.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// x0 = M00 * x + M01 * y + M02</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// y0 = M10 * x + M11 * y + M12</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M00 = matrix[0];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M10 = matrix[1];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M01 = matrix[0 + 1 * 2];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M11 = matrix[1 + 1 * 2];</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M02 = matrix[0 + 2 * 2];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M12 = matrix[1 + 2 * 2];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> element_idx = 0; element_idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++element_idx)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; valid_mask[element_idx] = 1;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; Coordinates <span class="keywordtype">id</span> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), element_idx);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">int</span> idx = <span class="keywordtype">id</span>.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">x</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">int</span> idy = <span class="keywordtype">id</span>.y();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">float</span> x0 = M00 * idx + M01 * idy + M02;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">float</span> y0 = M10 * idx + M11 * idy + M12;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">id</span>.set(0, static_cast&lt;int&gt;(std::floor(x0)));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">id</span>.set(1, static_cast&lt;int&gt;(std::floor(y0)));</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span>((0 &lt;= y0) &amp;&amp; (y0 &lt; height) &amp;&amp; (0 &lt;= x0) &amp;&amp; (x0 &lt; width))</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::NEAREST_NEIGHBOR:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <span class="keywordtype">id</span>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::BILINEAR:</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; (<a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3064cbee60ab97935e8d1df617f82b5c">valid_bilinear_policy</a>(x0, y0, width, height, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>)) ? <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">bilinear_policy</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <span class="keywordtype">id</span>, x0, y0, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value) :</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; valid_mask[element_idx] = 0;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::AREA:</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Interpolation not supported&quot;</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::UNDEFINED)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; valid_mask[element_idx] = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::NEAREST_NEIGHBOR:</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::CONSTANT)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = constant_border_value;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::REPLICATE)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordtype">id</span>.set(0, std::max(0, std::min(static_cast&lt;int&gt;(x0), width - 1)));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordtype">id</span>.set(1, std::max(0, std::min(static_cast&lt;int&gt;(y0), height - 1)));</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[<a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), id)];</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::BILINEAR:</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">bilinear_policy</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <span class="keywordtype">id</span>, x0, y0, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::AREA:</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Interpolation not supported&quot;</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad986b73e9d5f47a623a9b6d773c25e34"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">arm_compute::test::validation::policy</a></div><div class="ttdeci">policy</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">ArithmeticAddition.cpp:136</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a9be4cb7e6ee20063a4a10bc3abb750b9"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">arm_compute::test::coord2index</a></div><div class="ttdeci">int coord2index(const TensorShape &amp;shape, const Coordinates &amp;coord)</div><div class="ttdoc">Linearise the given coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00480">Utils.h:480</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_aa87f8fc26981b0f3228a78c83b95b802"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">arm_compute::Dimensions::x</a></div><div class="ttdeci">T x() const</div><div class="ttdoc">Alias to access the size of the first dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00081">Dimensions.h:81</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a92fd4059750cbbeecd8ad03f279200e1"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">arm_compute::test::validation::bilinear_policy</a></div><div class="ttdeci">T bilinear_policy(const SimpleTensor&lt; T &gt; &amp;in, Coordinates id, float xn, float yn, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8cpp_source.xhtml#l00036">Utils.cpp:36</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a3064cbee60ab97935e8d1df617f82b5c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3064cbee60ab97935e8d1df617f82b5c">arm_compute::test::validation::reference::valid_bilinear_policy</a></div><div class="ttdeci">bool valid_bilinear_policy(float xn, float yn, int width, int height, BorderMode border_mode)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2reference_2_warp_affine_8cpp_source.xhtml#l00036">WarpAffine.cpp:36</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a639aaa22a784d5e5cb03a522267e79c4">arm_compute::AREA</a>, <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65">arm_compute::BILINEAR</a>, <a class="el" href="tests_2validation_2reference_2_utils_8cpp_source.xhtml#l00036">arm_compute::test::validation::bilinear_policy()</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91a8d6b5cada83510220f59e00ce86d4d92">arm_compute::CONSTANT</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00480">arm_compute::test::coord2index()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">arm_compute::NEAREST_NEIGHBOR</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">arm_compute::test::validation::policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa">arm_compute::REPLICATE</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::UNDEFINED</a>, <a class="el" href="validation_2reference_2_warp_affine_8cpp_source.xhtml#l00036">valid_bilinear_policy()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>.</p>
</div>
</div>
<a id="acec59b1e80034018a6a0880bf29a130d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acec59b1e80034018a6a0880bf29a130d">&#9670;&nbsp;</a></span>warp_affine() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::warp_affine </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>valid_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>matrix</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a36be7020a6004680d96138fa8c300de7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36be7020a6004680d96138fa8c300de7">&#9670;&nbsp;</a></span>warp_perspective() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; warp_perspective </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>valid_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>matrix</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_warp_perspective_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_warp_perspective_8cpp_source.xhtml">WarpPerspective.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// x0 = M00 * x + M01 * y + M02</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// y0 = M10 * x + M11 * y + M12</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// z0 = M20 * x + M21 * y + M22</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// xn = x0 / z0</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// yn = y0 / z0</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M00 = matrix[0];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M10 = matrix[1];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M20 = matrix[2];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M01 = matrix[0 + 1 * 3];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M11 = matrix[1 + 1 * 3];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M21 = matrix[2 + 1 * 3];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M02 = matrix[0 + 2 * 3];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M12 = matrix[1 + 2 * 3];</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> M22 = matrix[2 + 2 * 3];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().x();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().y();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> element_idx = 0; element_idx &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++element_idx)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; valid_mask[element_idx] = 1;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; Coordinates <span class="keywordtype">id</span> = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), element_idx);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> idx = <span class="keywordtype">id</span>.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">x</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> idy = <span class="keywordtype">id</span>.y();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> z0 = M20 * idx + M21 * idy + M22;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> x0 = (M00 * idx + M01 * idy + M02);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> y0 = (M10 * idx + M11 * idy + M12);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> xn = x0 / z0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> yn = y0 / z0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">id</span>.set(0, static_cast&lt;int&gt;(std::floor(xn)));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">id</span>.set(1, static_cast&lt;int&gt;(std::floor(yn)));</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span>((0 &lt;= yn) &amp;&amp; (yn &lt; height) &amp;&amp; (0 &lt;= xn) &amp;&amp; (xn &lt; width))</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::NEAREST_NEIGHBOR:</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <span class="keywordtype">id</span>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::BILINEAR:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a997c20c740c2cf8dd5676ad55ad8a1a6">valid_bilinear_policy</a>(xn, yn, width, height, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>)) ? <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">bilinear_policy</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <span class="keywordtype">id</span>, xn, yn, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value) : valid_mask[element_idx] = 0;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::AREA:</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Interpolation not supported&quot;</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::UNDEFINED)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; valid_mask[element_idx] = 0;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">policy</a>)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::NEAREST_NEIGHBOR:</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::CONSTANT)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = constant_border_value;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a> == BorderMode::REPLICATE)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">id</span>.set(0, std::max(0, std::min(static_cast&lt;int&gt;(xn), width - 1)));</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">id</span>.set(1, std::max(0, std::min(static_cast&lt;int&gt;(yn), height - 1)));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[<a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), id)];</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::BILINEAR:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">bilinear_policy</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>, <span class="keywordtype">id</span>, xn, yn, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">border_mode</a>, constant_border_value);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">case</span> InterpolationPolicy::AREA:</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Interpolation not supported&quot;</span>);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00261">Error.h:261</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f489943d8618d47b1ad4611f0b9b7ff"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">arm_compute::test::validation::tensor_elem_at</a></div><div class="ttdeci">T tensor_elem_at(const SimpleTensor&lt; T &gt; &amp;src, Coordinates coord, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">Utils.h:61</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ad986b73e9d5f47a623a9b6d773c25e34"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ad986b73e9d5f47a623a9b6d773c25e34">arm_compute::test::validation::policy</a></div><div class="ttdeci">policy</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">ArithmeticAddition.cpp:136</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a9be4cb7e6ee20063a4a10bc3abb750b9"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">arm_compute::test::coord2index</a></div><div class="ttdeci">int coord2index(const TensorShape &amp;shape, const Coordinates &amp;coord)</div><div class="ttdoc">Linearise the given coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00480">Utils.h:480</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_aa87f8fc26981b0f3228a78c83b95b802"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#aa87f8fc26981b0f3228a78c83b95b802">arm_compute::Dimensions::x</a></div><div class="ttdeci">T x() const</div><div class="ttdoc">Alias to access the size of the first dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00081">Dimensions.h:81</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a5471e46933e7a9c4709972d91fc4ea65"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a5471e46933e7a9c4709972d91fc4ea65">arm_compute::test::validation::border_mode</a></div><div class="ttdeci">border_mode</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">Convolution.cpp:118</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a92fd4059750cbbeecd8ad03f279200e1"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">arm_compute::test::validation::bilinear_policy</a></div><div class="ttdeci">T bilinear_policy(const SimpleTensor&lt; T &gt; &amp;in, Coordinates id, float xn, float yn, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8cpp_source.xhtml#l00036">Utils.cpp:36</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a997c20c740c2cf8dd5676ad55ad8a1a6"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a997c20c740c2cf8dd5676ad55ad8a1a6">arm_compute::test::validation::valid_bilinear_policy</a></div><div class="ttdeci">bool valid_bilinear_policy(float xn, float yn, int width, int height, BorderMode border_mode)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2reference_2_utils_8cpp_source.xhtml#l00098">Utils.cpp:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a639aaa22a784d5e5cb03a522267e79c4">arm_compute::AREA</a>, <a class="el" href="_error_8h_source.xhtml#l00261">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65">arm_compute::BILINEAR</a>, <a class="el" href="tests_2validation_2reference_2_utils_8cpp_source.xhtml#l00036">arm_compute::test::validation::bilinear_policy()</a>, <a class="el" href="validation_2_c_l_2_convolution_8cpp_source.xhtml#l00118">arm_compute::test::validation::border_mode</a>, <a class="el" href="namespacearm__compute.xhtml#a14d24d90ab4ba2956e92e27890ba4c91a8d6b5cada83510220f59e00ce86d4d92">arm_compute::CONSTANT</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00480">arm_compute::test::coord2index()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">arm_compute::NEAREST_NEIGHBOR</a>, <a class="el" href="_c_l_2_arithmetic_addition_8cpp_source.xhtml#l00136">arm_compute::test::validation::policy</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa">arm_compute::REPLICATE</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, <a class="el" href="tests_2validation_2reference_2_utils_8h_source.xhtml#l00061">arm_compute::test::validation::tensor_elem_at()</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::UNDEFINED</a>, <a class="el" href="validation_2reference_2_warp_affine_8cpp_source.xhtml#l00036">valid_bilinear_policy()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</a>.</p>
</div>
</div>
<a id="a29ddb612c916a0cd4c57ec03ceffd9b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a29ddb612c916a0cd4c57ec03ceffd9b9">&#9670;&nbsp;</a></span>warp_perspective() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::warp_perspective </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>valid_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>matrix</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a>&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>constant_border_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5a2c33b365f0043e15e2db448fa3eb38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a2c33b365f0043e15e2db448fa3eb38">&#9670;&nbsp;</a></span>weights_reshape() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; weights_reshape </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_weights_reshape_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="reference_2_weights_reshape_8cpp_source.xhtml">WeightsReshape.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">dst_shape</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type(), 1 };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a> = biases.size() &gt; 0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> linear_sz = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape().total_size_lower(3);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> group_sz = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape()[3] / <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> g = 0; g &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">num_groups</a>; ++g)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> &lt; group_sz; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> curr_weight = g * group_sz + <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">size_t</span> i = 0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span>(; i &lt; linear_sz; ++i)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[<a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape(), Coordinates(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, i, g))] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[curr_weight * linear_sz + i];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">has_bias</a>)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[<a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape(), Coordinates(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, i, g))] = static_cast&lt;T&gt;(biases[curr_weight]);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1a367830ae09bf6138df822888ec1d71"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">arm_compute::test::validation::w</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; w</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">DFT.cpp:156</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_af22d91f65b56b795fd28f3b302cd3ad2"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#af22d91f65b56b795fd28f3b302cd3ad2">arm_compute::test::validation::dst_shape</a></div><div class="ttdeci">TensorShape dst_shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">DFT.cpp:164</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a9be4cb7e6ee20063a4a10bc3abb750b9"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">arm_compute::test::coord2index</a></div><div class="ttdeci">int coord2index(const TensorShape &amp;shape, const Coordinates &amp;coord)</div><div class="ttdoc">Linearise the given coordinate.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00480">Utils.h:480</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a2270b3e1d20651d2d8341c858c890830"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a2270b3e1d20651d2d8341c858c890830">arm_compute::test::validation::num_groups</a></div><div class="ttdeci">const unsigned int num_groups</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">Im2Col.cpp:148</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a9aeced5a5128f60a31ea3e327a45ee21"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a9aeced5a5128f60a31ea3e327a45ee21">arm_compute::test::validation::has_bias</a></div><div class="ttdeci">const bool has_bias</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00147">Im2Col.cpp:147</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2_utils_8h_source.xhtml#l00480">arm_compute::test::coord2index()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00164">arm_compute::test::validation::dst_shape</a>, <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00147">arm_compute::test::validation::has_bias</a>, <a class="el" href="_n_e_o_n_2_im2_col_8cpp_source.xhtml#l00148">arm_compute::test::validation::num_groups</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00339">SimpleTensor&lt; T &gt;::size()</a>, <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>, and <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">arm_compute::test::validation::w</a>.</p>
</div>
</div>
<a id="a0525545244e5dcca4676622297317241"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0525545244e5dcca4676622297317241">&#9670;&nbsp;</a></span>weights_reshape() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::weights_reshape </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae6b1f2785ef5769e8c5a74050defc2e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6b1f2785ef5769e8c5a74050defc2e3">&#9670;&nbsp;</a></span>weights_reshape() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::weights_reshape </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af2252b2b9141963b5a7342f157a5ddf5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af2252b2b9141963b5a7342f157a5ddf5">&#9670;&nbsp;</a></span>weights_reshape() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; arm_compute::test::validation::reference::weights_reshape </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>biases</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int&#160;</td>
<td class="paramname"><em>num_groups</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae1720f2a51d1415a9c5afbf2a5c2749f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1720f2a51d1415a9c5afbf2a5c2749f">&#9670;&nbsp;</a></span>winograd_filter_transform() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; winograd_filter_transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;&#160;</td>
<td class="paramname"><em>winograd_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_winograd_8cpp_source.xhtml#l00360">360</a> of file <a class="el" href="reference_2_winograd_8cpp_source.xhtml">Winograd.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;{</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a>(in.data_layout() != DataLayout::NCHW, <span class="stringliteral">&quot;Only supported NCHW data format&quot;</span>);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; SimpleTensor&lt;T&gt; out{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, in.data_type(), 1 };</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keyword">const</span> Size2D output_tile_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>.output_tile_size;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">const</span> Size2D kernel_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>.kernel_size;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="comment">// Calculate dimensions for the tile</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> input_tile_w = output_tile_size.width + kernel_size.width - 1;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> input_tile_h = output_tile_size.height + kernel_size.height - 1;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> input_tile_area = input_tile_w * input_tile_h;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="comment">// Get the maximum dimension from the filter size</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernel_max_dim = std::max(kernel_size.width, kernel_size.height);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="comment">// Get the maximum dimension from the input tile</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> input_tile_max_dim = std::max(input_tile_w, input_tile_h);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="comment">// Simple tensor for the input tile</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; SimpleTensor&lt;T&gt; input_tile{ TensorShape(kernel_max_dim, kernel_max_dim), in.data_type(), 1 };</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="comment">// Simple tensor for the transformation matrix</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; SimpleTensor&lt;T&gt; trans_matrix{ TensorShape(kernel_max_dim, input_tile_max_dim), in.data_type(), 1 };</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="comment">// Simple tensor for the transformation matrix transpose</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; SimpleTensor&lt;T&gt; trans_matrix_transposed{ TensorShape(input_tile_max_dim, kernel_max_dim), in.data_type(), 1 };</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="comment">// Simple tensor for the temporary tile</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; SimpleTensor&lt;T&gt; tmp_tile{ TensorShape(kernel_max_dim, input_tile_max_dim), in.data_type(), 1 };</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">// Simple tensor for the output tile</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; SimpleTensor&lt;T&gt; transf_tile{ TensorShape(input_tile_max_dim, input_tile_max_dim), in.data_type(), 1 };</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="comment">// Initialize matrix for the filter transform</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; initialize_matrix_transform(trans_matrix, output_tile_size, kernel_size, WinogradTransformType::FILTER);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="comment">// Transpose the transformation matrix</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; transpose_matrix&lt;T&gt;(trans_matrix, trans_matrix_transposed);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_channels = in.shape()[2];</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_filters = in.shape()[3];</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batches = in.shape().total_size() / (kernel_size.area() * num_channels * num_filters);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">// If we have a vertical filter (i.e. 1x3, 1x5,..), we need to take the elements along the y direction (step_y_transf_tile = width of the output tile)</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> step_y_transf_tile = kernel_size.width == 1 ? input_tile_max_dim : 1;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> n = 0; n &lt; num_batches; ++n)</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> &lt; num_filters; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> z = 0; z &lt; num_channels; ++z)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="comment">// Load the tile from the input tensor</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; get_tile&lt;T&gt;(in, input_tile, Coordinates(0, 0, z, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, n));</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="comment">// First transformation</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; matrix_multiply&lt;T&gt;(trans_matrix, input_tile, tmp_tile);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="comment">// Second transformation</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; matrix_multiply&lt;T&gt;(tmp_tile, trans_matrix_transposed, transf_tile);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="comment">// Store the output tile across the channels</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> output_offset = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a> + z * num_filters;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="comment">// Store the values across the channels</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; input_tile_area; ++i)</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; out[output_offset + i * num_filters * num_channels] = transf_tile[i * step_y_transf_tile];</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1a367830ae09bf6138df822888ec1d71"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">arm_compute::test::validation::w</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; w</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">DFT.cpp:156</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a809d18ccde99d938a68cb90ef53aa749"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">arm_compute::test::validation::winograd_info</a></div><div class="ttdeci">winograd_info</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_winograd_8cpp_source.xhtml#l00330">Winograd.cpp:330</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a5bbdcf574d3f5e412fa6a1117911e67b"><div class="ttname"><a href="_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_MSG(cond,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00328">Error.h:328</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_size2_d_8h_source.xhtml#l00053">Size2D::area()</a>, <a class="el" href="_error_8h_source.xhtml#l00328">ARM_COMPUTE_ERROR_ON_MSG</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00352">SimpleTensor&lt; T &gt;::data_layout()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871eae75ab17a550f46adbbe891b819cf951d">FILTER</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00093">Size2D::height</a>, <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">arm_compute::NCHW</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">arm_compute::test::validation::w</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00092">Size2D::width</a>, and <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00330">arm_compute::test::validation::winograd_info</a>.</p>
</div>
</div>
<a id="ad75aaeada9a22fadf0ba735bca1adcbc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad75aaeada9a22fadf0ba735bca1adcbc">&#9670;&nbsp;</a></span>winograd_filter_transform() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::winograd_filter_transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;&#160;</td>
<td class="paramname"><em>winograd_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a45caafa00e54ed470a87a918cddd85ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a45caafa00e54ed470a87a918cddd85ea">&#9670;&nbsp;</a></span>winograd_filter_transform() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::winograd_filter_transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;&#160;</td>
<td class="paramname"><em>winograd_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a09a73d5705389176ff8b7f95946dbc2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09a73d5705389176ff8b7f95946dbc2d">&#9670;&nbsp;</a></span>winograd_input_transform() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; winograd_input_transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;&#160;</td>
<td class="paramname"><em>winograd_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_winograd_8cpp_source.xhtml#l00236">236</a> of file <a class="el" href="reference_2_winograd_8cpp_source.xhtml">Winograd.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(in.data_layout() != DataLayout::NCHW);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keyword">const</span> PadStrideInfo <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>.convolution_info;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">const</span> Size2D output_tile_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>.output_tile_size;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">const</span> Size2D kernel_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>.kernel_size;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; SimpleTensor&lt;T&gt; out{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, in.data_type() };</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// Calculate dimensions for the tile</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> tile_w = output_tile_size.width + kernel_size.width - 1;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> tile_h = output_tile_size.height + kernel_size.height - 1;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">// Get the maximum dimension from the tile size</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> tile_max_dim = std::max(tile_w, tile_h);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; TensorShape tile_dims(tile_max_dim, tile_max_dim);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="comment">// Simple tensor for the input tile</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; SimpleTensor&lt;T&gt; src_tile{ tile_dims, in.data_type() };</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="comment">// Simple tensor for the temporary tile</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; SimpleTensor&lt;T&gt; tmp_tile{ tile_dims, in.data_type() };</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">// Simple tensor for the output tile</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; SimpleTensor&lt;T&gt; dst_tile{ tile_dims, in.data_type() };</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// Simple tensor for the transformation matrix</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; SimpleTensor&lt;T&gt; matrix{ tile_dims, in.data_type() };</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="comment">// Simple tensor for the transformation matrix transposed</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; SimpleTensor&lt;T&gt; matrix_transposed{ tile_dims, in.data_type() };</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="comment">// Initialize matrix for the input transform</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; initialize_matrix_transform(matrix, output_tile_size, kernel_size, WinogradTransformType::INPUT);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// Transpose matrix</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; transpose_matrix&lt;T&gt;(matrix, matrix_transposed);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> in_w = in.shape().x();</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> in_h = in.shape().y();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> in_d = in.shape().z();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_d = out.shape().z();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batches = in.shape().total_size() / (in_w * in_h * in_d);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> step_x = output_tile_size.width;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> step_y = output_tile_size.height;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// Compute the number of output tiles along the x and y direction of size &quot;output_tile_size&quot;</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">const</span> Size2D num_tiles = <a class="code" href="namespacearm__compute.xhtml#a3b0c016b53e97663b39c2f3875f46c24">compute_winograd_convolution_tiles</a>(Size2D(in_w, in_h),</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; kernel_size,</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; output_tile_size,</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_tiles_x = num_tiles.width;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_tiles_y = num_tiles.height;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="comment">// In case of 1D convolution, the input tile has to be partially filled with zeros</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">int</span> start_x_zero = 0;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordtype">int</span> start_y_zero = 0;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordtype">int</span> end_x_zero = 0;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">int</span> end_y_zero = 0;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span>(output_tile_size.width == 1)</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; start_x_zero = 1;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; start_y_zero = 0;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; end_x_zero = tile_max_dim - 1;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; end_y_zero = tile_max_dim;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(output_tile_size.height == 1)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; start_x_zero = 0;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; start_y_zero = 1;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; end_x_zero = tile_max_dim;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; end_y_zero = tile_max_dim - 1;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="comment">// Set the anchor and shape of the zeros area</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">const</span> Coordinates anchor_zeros(start_x_zero, start_y_zero);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">const</span> TensorShape shape_zeros(end_x_zero, end_y_zero);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="comment">// If we have a vertical filter (i.e. 1x3, 1x5,..), we need to take the elements along the y direction (step = width of the output tile)</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> step_y_transf_tile = kernel_size.width == 1 ? tile_max_dim : 1;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>((num_tiles_x * num_tiles_y) != static_cast&lt;int&gt;(out.shape().y()));</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> = 0; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a> &lt; num_batches; ++<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> z = 0; z &lt; in_d; ++z)</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = 0; y &lt; num_tiles_y; ++y)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = 0; x &lt; num_tiles_x; ++x)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordtype">int</span> xi = x * step_x - <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_left();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordtype">int</span> yi = y * step_y - <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>.pad_top();</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="comment">// Get the tile from the input tensor</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; get_tile&lt;T&gt;(in, src_tile, Coordinates(xi, yi, z, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>));</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="comment">// Fill partially with zeros in case of 1D convolution</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; zeros&lt;T&gt;(src_tile, anchor_zeros, shape_zeros);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="comment">// Compute the transformation</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; matrix_multiply&lt;T&gt;(matrix, src_tile, tmp_tile);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; matrix_multiply&lt;T&gt;(tmp_tile, matrix_transposed, dst_tile);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="comment">// Store the output tile across the channels</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; out_d; ++i)</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordtype">int</span> xo = z;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordtype">int</span> yo = x + y * num_tiles_x;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; out[<a class="code" href="namespacearm__compute.xhtml#ad95e1c14c3007ca18950bf8f4c5a5c93">coords2index</a>(out.shape(), Coordinates(xo, yo, i, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>))] = dst_tile[i * step_y_transf_tile];</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a00525ff582f16038a1d3819aa44a23a3"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">arm_compute::test::validation::conv_info</a></div><div class="ttdeci">conv_info</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_winograd_8cpp_source.xhtml#l00599">Winograd.cpp:599</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a809d18ccde99d938a68cb90ef53aa749"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">arm_compute::test::validation::winograd_info</a></div><div class="ttdeci">winograd_info</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_winograd_8cpp_source.xhtml#l00330">Winograd.cpp:330</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a3b0c016b53e97663b39c2f3875f46c24"><div class="ttname"><a href="namespacearm__compute.xhtml#a3b0c016b53e97663b39c2f3875f46c24">arm_compute::compute_winograd_convolution_tiles</a></div><div class="ttdeci">Size2D compute_winograd_convolution_tiles(const Size2D &amp;in_dims, const Size2D &amp;kernel_size, const Size2D &amp;output_tile_size, const PadStrideInfo &amp;conv_info)</div><div class="ttdoc">Calculate the number of output tiles required by Winograd Convolution layer.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00744">Helpers.h:744</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ad95e1c14c3007ca18950bf8f4c5a5c93"><div class="ttname"><a href="namespacearm__compute.xhtml#ad95e1c14c3007ca18950bf8f4c5a5c93">arm_compute::coords2index</a></div><div class="ttdeci">int coords2index(const TensorShape &amp;shape, const Coordinates &amp;coord)</div><div class="ttdoc">Convert n-dimensional coordinates into a linear index.</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00308">Helpers.inl:308</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00744">arm_compute::compute_winograd_convolution_tiles()</a>, <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00599">arm_compute::test::validation::conv_info</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00308">arm_compute::coords2index()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00352">SimpleTensor&lt; T &gt;::data_layout()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00093">Size2D::height</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871eaa84cc046d48610b05c21fd3670d0c829">INPUT</a>, <a class="el" href="namespacearm__compute.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">arm_compute::NCHW</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00092">Size2D::width</a>, and <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00330">arm_compute::test::validation::winograd_info</a>.</p>
</div>
</div>
<a id="aabf9a06c73c2e343234654ad65487cf8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aabf9a06c73c2e343234654ad65487cf8">&#9670;&nbsp;</a></span>winograd_input_transform() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::winograd_input_transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;&#160;</td>
<td class="paramname"><em>winograd_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad4f10ed9128a31cdf47c9f81453c4d51"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad4f10ed9128a31cdf47c9f81453c4d51">&#9670;&nbsp;</a></span>winograd_input_transform() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::winograd_input_transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;&#160;</td>
<td class="paramname"><em>winograd_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="adacc73fb5c03e7a1273c0c81c8f8dad5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adacc73fb5c03e7a1273c0c81c8f8dad5">&#9670;&nbsp;</a></span>winograd_output_transform() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; winograd_output_transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;&#160;</td>
<td class="paramname"><em>winograd_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_winograd_8cpp_source.xhtml#l00440">440</a> of file <a class="el" href="reference_2_winograd_8cpp_source.xhtml">Winograd.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;{</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">const</span> PadStrideInfo <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>.convolution_info;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">const</span> Size2D input_dimensions = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>.input_dimensions;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keyword">const</span> Size2D output_tile_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>.output_tile_size;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keyword">const</span> Size2D kernel_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>.kernel_size;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; SimpleTensor&lt;T&gt; out{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">output_shape</a>, in.data_type(), 1 };</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="comment">// Calculate dimensions for the tiles</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> in_tile_w = output_tile_size.width + kernel_size.width - 1;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> in_tile_h = output_tile_size.height + kernel_size.height - 1;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> out_tile_w = output_tile_size.width;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> out_tile_h = output_tile_size.height;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(in.shape()[2] != (in_tile_w * in_tile_h));</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(in.shape()[0] != out.shape()[<a class="code" href="namespacearm__compute.xhtml#a46e938020a3ac8c926d0590b7fe957db">get_data_layout_dimension_index</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">winograd_info</a>.output_data_layout, DataLayoutDimension::CHANNEL)]);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="comment">// Get the maximum dimension from the tile size</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> in_tile_max_dim = std::max(in_tile_w, in_tile_h);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> out_tile_max_dim = std::max(output_tile_size.width, output_tile_size.height);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="comment">// Compute tile dimensions</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="comment">// Input tile dimensions</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; TensorShape in_tile_dims(in_tile_max_dim, in_tile_max_dim);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="comment">// Output tile dimensions</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; TensorShape out_tile_dims(out_tile_max_dim, out_tile_max_dim);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="comment">// Transformation matrix dimensions</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; TensorShape tr_tile_dims(in_tile_max_dim, out_tile_max_dim);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="comment">// Create tensors</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="comment">// Simple tensor for the input tile</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; SimpleTensor&lt;T&gt; input_tile{ in_tile_dims, in.data_type(), 1 };</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="comment">// Simple tensor for the transformation matrix</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; SimpleTensor&lt;T&gt; trans_matrix{ tr_tile_dims, in.data_type(), 1 };</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="comment">// Simple tensor for the transformation matrix transpose</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; SimpleTensor&lt;T&gt; trans_matrix_transposed{ TensorShape(tr_tile_dims[1], tr_tile_dims[0]), in.data_type(), 1 };</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">// Simple tensor for the temporary tile</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; SimpleTensor&lt;T&gt; tmp_tile{ tr_tile_dims, in.data_type(), 1 };</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="comment">// Simple tensor for the output tile</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; SimpleTensor&lt;T&gt; output_tile{ out_tile_dims, in.data_type(), 1 };</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="comment">// Initialize matrix for the output transform</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; initialize_matrix_transform(trans_matrix, output_tile_size, kernel_size, WinogradTransformType::OUTPUT);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="comment">// Transpose the transformation matrix</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; transpose_matrix&lt;T&gt;(trans_matrix, trans_matrix_transposed);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> w_in = in.shape()[0];</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> h_in = in.shape()[1];</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> c_in = in.shape()[2];</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> w_out = out.shape()[0];</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> h_out = out.shape()[1];</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> c_out = out.shape()[2];</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batches = in.shape().total_size() / (w_in * h_in * c_in);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="comment">// Input strides</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stridey_in = w_in;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stridez_in = stridey_in * h_in;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stridew_in = stridez_in * c_in;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="comment">// Output strides</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stridey_out = w_out;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stridez_out = stridey_out * h_out;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stridew_out = stridez_out * c_out;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="comment">// Compute the number of output tiles along the x and y direction of size &quot;output_tile_size&quot;</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keyword">const</span> Size2D num_tiles = <a class="code" href="namespacearm__compute.xhtml#a3b0c016b53e97663b39c2f3875f46c24">compute_winograd_convolution_tiles</a>(Size2D(input_dimensions.width, input_dimensions.height),</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; kernel_size,</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; output_tile_size,</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">conv_info</a>);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_tiles_x = num_tiles.width;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_tiles_y = num_tiles.height;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <a class="code" href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a>(num_tiles_y);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(in.shape()[1] != static_cast&lt;unsigned int&gt;(num_tiles_x * num_tiles_y));</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="comment">// If we have a vertical filter (i.e. 1x3, 1x5,..), we still need to take the elements along the x direction (step_y_transf_tile = 1)</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> step_y_transf_tile = kernel_size.width == 1 ? 1 : output_tile.shape()[0];</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// Initialize with zeros the input tile</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; zeros&lt;T&gt;(input_tile, Coordinates(0, 0), input_tile.shape());</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> n = 0; n &lt; num_batches; ++n)</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = 0; y &lt; h_in; ++y)</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; {</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x = 0; x &lt; w_in; ++x)</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="comment">// Load the input tile tile across the channels of the input tensor</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> z = 0; z &lt; c_in; ++z)</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; input_tile[z] = in[x + (y * stridey_in) + (z * stridez_in) + (n * stridew_in)];</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="comment">// First transformation</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; matrix_multiply&lt;T&gt;(trans_matrix, input_tile, tmp_tile);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="comment">// Second transformation</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; matrix_multiply&lt;T&gt;(tmp_tile, trans_matrix_transposed, output_tile);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="comment">// Store the output tile</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xo = (y % num_tiles_x) * out_tile_w;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yo = (y / num_tiles_x) * out_tile_h;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> zo = x;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> output_offset = xo + (yo * stridey_out) + (zo * stridez_out) + (n * stridew_out);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> yi = 0; yi &lt; static_cast&lt;int&gt;(out_tile_h); ++yi)</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> xi = 0; xi &lt; static_cast&lt;int&gt;(out_tile_w); ++xi)</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="comment">// Check out-of-bound writes</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">if</span>((xo + xi &lt; w_out) &amp;&amp; (yo + yi &lt; h_out))</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; out[output_offset + yi * stridey_out + xi] = output_tile[xi + yi * step_y_transf_tile];</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="comment">// Add bias</span></div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; out[output_offset + yi * stridey_out + xi] += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>[zo];</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; }</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; }</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a00525ff582f16038a1d3819aa44a23a3"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a00525ff582f16038a1d3819aa44a23a3">arm_compute::test::validation::conv_info</a></div><div class="ttdeci">conv_info</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_winograd_8cpp_source.xhtml#l00599">Winograd.cpp:599</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a809d18ccde99d938a68cb90ef53aa749"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a809d18ccde99d938a68cb90ef53aa749">arm_compute::test::validation::winograd_info</a></div><div class="ttdeci">winograd_info</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_winograd_8cpp_source.xhtml#l00330">Winograd.cpp:330</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00337">Error.h:337</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a3b0c016b53e97663b39c2f3875f46c24"><div class="ttname"><a href="namespacearm__compute.xhtml#a3b0c016b53e97663b39c2f3875f46c24">arm_compute::compute_winograd_convolution_tiles</a></div><div class="ttdeci">Size2D compute_winograd_convolution_tiles(const Size2D &amp;in_dims, const Size2D &amp;kernel_size, const Size2D &amp;output_tile_size, const PadStrideInfo &amp;conv_info)</div><div class="ttdoc">Calculate the number of output tiles required by Winograd Convolution layer.</div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00744">Helpers.h:744</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a6dc630a6ae9cc063b3924bcea8dee9d6"><div class="ttname"><a href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(...)</div><div class="ttdoc">To avoid unused variables warnings.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00160">Error.h:160</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a7fc93f37dac131a1a40b7921f9df3a9a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a7fc93f37dac131a1a40b7921f9df3a9a">arm_compute::test::validation::output_shape</a></div><div class="ttdeci">output_shape</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a46e938020a3ac8c926d0590b7fe957db"><div class="ttname"><a href="namespacearm__compute.xhtml#a46e938020a3ac8c926d0590b7fe957db">arm_compute::get_data_layout_dimension_index</a></div><div class="ttdeci">size_t get_data_layout_dimension_index(const DataLayout data_layout, const DataLayoutDimension data_layout_dimension)</div><div class="ttdoc">Get the index of the given dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00326">Helpers.inl:326</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00337">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_error_8h_source.xhtml#l00160">ARM_COMPUTE_UNUSED</a>, <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="namespacearm__compute.xhtml#a74ce3f7420453d3446218ff3b7453e02af52e9c50a060add65a035429b2a22229">arm_compute::CHANNEL</a>, <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00744">arm_compute::compute_winograd_convolution_tiles()</a>, <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00599">arm_compute::test::validation::conv_info</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00358">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00326">arm_compute::get_data_layout_dimension_index()</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00093">Size2D::height</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a5d19c046f7c6ca24d067312183e8871ea50a87f0d71f7221582dad4bf507a0f34">OUTPUT</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::output_shape</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00321">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="_size2_d_8h_source.xhtml#l00092">Size2D::width</a>, and <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00330">arm_compute::test::validation::winograd_info</a>.</p>
</div>
</div>
<a id="a8f9f87c1fce2adf686c6afb5b4da3ce1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f9f87c1fce2adf686c6afb5b4da3ce1">&#9670;&nbsp;</a></span>winograd_output_transform() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::winograd_output_transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;&#160;</td>
<td class="paramname"><em>winograd_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aeede3ceb64d85268e08fb5d90ca99e85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeede3ceb64d85268e08fb5d90ca99e85">&#9670;&nbsp;</a></span>winograd_output_transform() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::winograd_output_transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;&#160;</td>
<td class="paramname"><em>winograd_info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4827067f15bd8a29f841197d0935c6bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4827067f15bd8a29f841197d0935c6bf">&#9670;&nbsp;</a></span>yolo_layer() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; yolo_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>num_classes</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_y_o_l_o_layer_8cpp_source.xhtml#l00040">40</a> of file <a class="el" href="reference_2_y_o_l_o_layer_8cpp_source.xhtml">YOLOLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Create reference</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; SimpleTensor&lt;T&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>{ <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.data_type() };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// Compute reference</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> T a(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.a());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> T <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.b());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.num_elements(); ++i)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> z = <a class="code" href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">index2coord</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>.shape(), i).z() % (num_classes + 5);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span>(z != 2 &amp;&amp; z != 3)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = activate_float&lt;T&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i], a, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">b</a>, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>.activation());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>[i] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>[i];</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_aa76b4a6e74940dabc5b7fc6b2dab3545"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#aa76b4a6e74940dabc5b7fc6b2dab3545">arm_compute::test::validation::b</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; b</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">DFT.cpp:157</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a24d8c0391cfa38e78969b6ad97c0ff09"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a24d8c0391cfa38e78969b6ad97c0ff09">arm_compute::test::index2coord</a></div><div class="ttdeci">Coordinates index2coord(const TensorShape &amp;shape, int index)</div><div class="ttdoc">Convert a linear index into n-dimensional coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00451">Utils.h:451</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00157">arm_compute::test::validation::b</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00451">arm_compute::test::index2coord()</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
<a id="ab292f1c20b741cbf21746566412ac902"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab292f1c20b741cbf21746566412ac902">&#9670;&nbsp;</a></span>yolo_layer() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;float&gt; arm_compute::test::validation::reference::yolo_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>num_classes</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3931061e2eae2c2a5caa8807cee9e517"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3931061e2eae2c2a5caa8807cee9e517">&#9670;&nbsp;</a></span>yolo_layer() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">template <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;<a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a>&gt; arm_compute::test::validation::reference::yolo_layer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>num_classes</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa566a8e56ab79a56e7d9001458f09577"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa566a8e56ab79a56e7d9001458f09577">&#9670;&nbsp;</a></span>yolo_layer&lt; uint8_t &gt;()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt;uint8_t&gt; <a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a4827067f15bd8a29f841197d0935c6bf">arm_compute::test::validation::reference::yolo_layer</a>&lt; uint8_t &gt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml">ActivationLayerInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>num_classes</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="reference_2_y_o_l_o_layer_8cpp_source.xhtml#l00067">67</a> of file <a class="el" href="reference_2_y_o_l_o_layer_8cpp_source.xhtml">YOLOLayer.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;{</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; SimpleTensor&lt;float&gt; src_tmp = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">convert_from_asymmetric</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; SimpleTensor&lt;float&gt; dst_tmp = yolo_layer&lt;float&gt;(src_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">info</a>, num_classes);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; SimpleTensor&lt;uint8_t&gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">convert_to_asymmetric</a>(dst_tmp, <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">src</a>.quantization_info());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a291a16e64b05bdf4d08e1240d5bb286a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a291a16e64b05bdf4d08e1240d5bb286a">arm_compute::test::validation::convert_to_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; uint8_t &gt; convert_to_asymmetric(const SimpleTensor&lt; float &gt; &amp;src, const QuantizationInfo &amp;quantization_info)</div><div class="ttdoc">Convert float simple tensor into quantized using specified quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">Helpers.cpp:123</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">AbsoluteDifference.cpp:102</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_ab24849be91cfb00a72f7a61a7e00fdb7"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#ab24849be91cfb00a72f7a61a7e00fdb7">arm_compute::test::validation::convert_from_asymmetric</a></div><div class="ttdeci">SimpleTensor&lt; float &gt; convert_from_asymmetric(const SimpleTensor&lt; uint8_t &gt; &amp;src)</div><div class="ttdoc">Convert quantized simple tensor into float using tensor quantization information.</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">Helpers.cpp:111</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a4f4125dba5283887b34f889b1c615c0c"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f4125dba5283887b34f889b1c615c0c">arm_compute::test::validation::info</a></div><div class="ttdeci">info</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">ConvolutionLayer.cpp:174</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a989ab3e96426615bb98e04e0235088ca"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a989ab3e96426615bb98e04e0235088ca">arm_compute::test::validation::src</a></div><div class="ttdeci">cast configure &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_cast_8cpp_source.xhtml#l00169">Cast.cpp:169</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00111">arm_compute::test::validation::convert_from_asymmetric()</a>, <a class="el" href="tests_2validation_2_helpers_8cpp_source.xhtml#l00123">arm_compute::test::validation::convert_to_asymmetric()</a>, <a class="el" href="_c_l_2_absolute_difference_8cpp_source.xhtml#l00102">arm_compute::test::validation::dst</a>, <a class="el" href="validation_2_c_l_2_convolution_layer_8cpp_source.xhtml#l00174">arm_compute::test::validation::info</a>, and <a class="el" href="_c_l_2_cast_8cpp_source.xhtml#l00169">arm_compute::test::validation::src</a>.</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacearm__compute.xhtml">arm_compute</a></li><li class="navelem"><a class="el" href="namespacearm__compute_1_1test.xhtml">test</a></li><li class="navelem"><a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml">validation</a></li><li class="navelem"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml">reference</a></li>
<li class="footer">Generated on Mon Sep 2 2019 11:47:41 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>