blob: 2dd63c20379844a04a06d04a6a465de6650acd38 [file] [log] [blame]
<!-- HTML header for doxygen 1.8.9.1-->
<!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.6"/>
<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="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script><script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.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;">
<td style="padding-left: 0.5em;">
<div id="projectname">Compute Library
&#160;<span id="projectnumber">17.10</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li class="current"><a href="namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
<li><a href="files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.xhtml"><span>Namespace&#160;List</span></a></li>
<li><a href="namespacemembers.xhtml"><span>Namespace&#160;Members</span></a></li>
</ul>
</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">
$(document).ready(function(){initNavTree('namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></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="#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="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ad1a73ce85cd5a4a689c605ade2bc8780"><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:ad1a73ce85cd5a4a689c605ade2bc8780"><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#ad1a73ce85cd5a4a689c605ade2bc8780">activation_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src, <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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:ad1a73ce85cd5a4a689c605ade2bc8780"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab45edd626ed376e74792b87d59ac7913"><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#ab45edd626ed376e74792b87d59ac7913">activation_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src, <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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:ab45edd626ed376e74792b87d59ac7913"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2f52d261a58bf104da93a90f0171c34"><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#af2f52d261a58bf104da93a90f0171c34">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;src, <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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:af2f52d261a58bf104da93a90f0171c34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6db4e198a18bcd309c95d93fea7fe255"><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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6db4e198a18bcd309c95d93fea7fe255">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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;src, <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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:a6db4e198a18bcd309c95d93fea7fe255"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09bed76970c9539be9af1693a21180ca"><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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a09bed76970c9539be9af1693a21180ca">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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;src, <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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:a09bed76970c9539be9af1693a21180ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae98dcf5421f308ea7bb268ca7a37be5f"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae98dcf5421f308ea7bb268ca7a37be5f"><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#ae98dcf5421f308ea7bb268ca7a37be5f">arithmetic_addition</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, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> convert_policy)</td></tr>
<tr class="separator:ae98dcf5421f308ea7bb268ca7a37be5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d398f98a548984dc3869c8394a821d3"><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#a9d398f98a548984dc3869c8394a821d3">arithmetic_addition</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, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> convert_policy)</td></tr>
<tr class="separator:a9d398f98a548984dc3869c8394a821d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a426be141440c207990cde03ce6982f19"><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#a426be141440c207990cde03ce6982f19">arithmetic_addition</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, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> convert_policy)</td></tr>
<tr class="separator:a426be141440c207990cde03ce6982f19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3bad17e7cc30ec6052ff401a069b9df"><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#ab3bad17e7cc30ec6052ff401a069b9df">arithmetic_addition</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, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> convert_policy)</td></tr>
<tr class="separator:ab3bad17e7cc30ec6052ff401a069b9df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f91038e9c76832b77e2ffc21d43da3b"><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#a7f91038e9c76832b77e2ffc21d43da3b">arithmetic_addition</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> dst_data_type, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> convert_policy)</td></tr>
<tr class="separator:a7f91038e9c76832b77e2ffc21d43da3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1564ce88519643851a20bae003f86c4b"><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#a1564ce88519643851a20bae003f86c4b">arithmetic_addition</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> dst_data_type, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> convert_policy)</td></tr>
<tr class="separator:a1564ce88519643851a20bae003f86c4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab85904ecf7e8eb65f8b77f8b20f6c109"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ab85904ecf7e8eb65f8b77f8b20f6c109"><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#ab85904ecf7e8eb65f8b77f8b20f6c109">arithmetic_subtraction</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, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> convert_policy)</td></tr>
<tr class="separator:ab85904ecf7e8eb65f8b77f8b20f6c109"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5e0c329cc342bfb10db654421caeca5"><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#ad5e0c329cc342bfb10db654421caeca5">arithmetic_subtraction</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, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> convert_policy)</td></tr>
<tr class="separator:ad5e0c329cc342bfb10db654421caeca5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d2f7dd1f6f4d926f83a715bb4143971"><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#a8d2f7dd1f6f4d926f83a715bb4143971">arithmetic_subtraction</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, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> convert_policy)</td></tr>
<tr class="separator:a8d2f7dd1f6f4d926f83a715bb4143971"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2965c3c1a64d212b9a363edc0da97570"><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#a2965c3c1a64d212b9a363edc0da97570">arithmetic_subtraction</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, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> convert_policy)</td></tr>
<tr class="separator:a2965c3c1a64d212b9a363edc0da97570"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8f64dd344b40ee01530079e83b54235"><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#ac8f64dd344b40ee01530079e83b54235">arithmetic_subtraction</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> dst_data_type, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> convert_policy)</td></tr>
<tr class="separator:ac8f64dd344b40ee01530079e83b54235"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94b79c69970cb70f27ed07fd8dcca2ef"><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#a94b79c69970cb70f27ed07fd8dcca2ef">arithmetic_subtraction</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> dst_data_type, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> convert_policy)</td></tr>
<tr class="separator:a94b79c69970cb70f27ed07fd8dcca2ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7dc3318ccd1a590cd13f67d0b7133eb5"><td class="memTemplParams" colspan="2">template&lt;typename T , typename std::enable_if&lt; std::is_integral&lt; T &gt;::value, int &gt;::type * &gt; </td></tr>
<tr class="memitem:a7dc3318ccd1a590cd13f67d0b7133eb5"><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#a7dc3318ccd1a590cd13f67d0b7133eb5">batch_normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src, 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 epsilon, int fixed_point_position)</td></tr>
<tr class="separator:a7dc3318ccd1a590cd13f67d0b7133eb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4756f017d831af39f56b6ddad64eb36"><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#ab4756f017d831af39f56b6ddad64eb36">batch_normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src, 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 epsilon, int fixed_point_position)</td></tr>
<tr class="separator:ab4756f017d831af39f56b6ddad64eb36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a833512b72a849556403efd62572ef455"><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#a833512b72a849556403efd62572ef455">batch_normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;var, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;beta, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;gamma, float epsilon, int fixed_point_position)</td></tr>
<tr class="separator:a833512b72a849556403efd62572ef455"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7085e9ba2421046f0ac70d95629ebee"><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#ab7085e9ba2421046f0ac70d95629ebee">batch_normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;mean, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;var, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;beta, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;gamma, float epsilon, int fixed_point_position)</td></tr>
<tr class="separator:ab7085e9ba2421046f0ac70d95629ebee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18f9d09022ed3dcae3726a3bc4d04bd3"><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#a18f9d09022ed3dcae3726a3bc4d04bd3">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;src, 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 epsilon, int fixed_point_position)</td></tr>
<tr class="separator:a18f9d09022ed3dcae3726a3bc4d04bd3"><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;src)</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;src)</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: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;src, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, 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;src, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, uint8_t constant_border_value)</td></tr>
<tr class="separator:a2ff0714b006e333c893d87a928d88da6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeec300028ef21b06bc60da82c894a010"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aeec300028ef21b06bc60da82c894a010"><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#aeec300028ef21b06bc60da82c894a010">convolution_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;weights, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;bias, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape, 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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:aeec300028ef21b06bc60da82c894a010"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0a0d3a8a94f2f011d2969ff6b6c591f"><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#ac0a0d3a8a94f2f011d2969ff6b6c591f">convolution_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;weights, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;bias, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape, 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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:ac0a0d3a8a94f2f011d2969ff6b6c591f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb8d139aa02479d9c5c0d2fcbda92383"><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#acb8d139aa02479d9c5c0d2fcbda92383">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;src, 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;weights, 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;bias, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape, 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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:acb8d139aa02479d9c5c0d2fcbda92383"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1196fd13dfe164c3b3ac509c2f577b98"><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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a1196fd13dfe164c3b3ac509c2f577b98">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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;weights, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;bias, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape, 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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:a1196fd13dfe164c3b3ac509c2f577b98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a043cd6bdf09803218b2e5366ffc9439d"><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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a043cd6bdf09803218b2e5366ffc9439d">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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;weights, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;bias, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape, 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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:a043cd6bdf09803218b2e5366ffc9439d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaca2b6bea6bd88fd39489d1104497330"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aaca2b6bea6bd88fd39489d1104497330"><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#aaca2b6bea6bd88fd39489d1104497330">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)</td></tr>
<tr class="separator:aaca2b6bea6bd88fd39489d1104497330"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a998bf347ddc146fb533250b9ef9ce927"><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#a998bf347ddc146fb533250b9ef9ce927">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)</td></tr>
<tr class="separator:a998bf347ddc146fb533250b9ef9ce927"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a116b530186cf21c5f6c7da7acbd178"><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#a8a116b530186cf21c5f6c7da7acbd178">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)</td></tr>
<tr class="separator:a8a116b530186cf21c5f6c7da7acbd178"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9d829efe5d789bf902be0ecdc42ee7f"><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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab9d829efe5d789bf902be0ecdc42ee7f">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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt;&gt; &amp;srcs)</td></tr>
<tr class="separator:ab9d829efe5d789bf902be0ecdc42ee7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05d54bc26134fcc90aa9889fd85beaad"><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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a05d54bc26134fcc90aa9889fd85beaad">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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt;&gt; &amp;srcs)</td></tr>
<tr class="separator:a05d54bc26134fcc90aa9889fd85beaad"><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_floating_point&lt; 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;src, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> policy, uint32_t shift)</td></tr>
<tr class="separator:a742cdbdf3c1db76c9a189f1bcd745579"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87c420d7f8a98dead76b0b32b2df6777"><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#a87c420d7f8a98dead76b0b32b2df6777">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> policy, uint32_t shift)</td></tr>
<tr class="separator:a87c420d7f8a98dead76b0b32b2df6777"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa23e45fa7a8f9f196704d4473721d6ab"><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#aa23e45fa7a8f9f196704d4473721d6ab">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint16_t &gt; &amp;src, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> policy, uint32_t shift)</td></tr>
<tr class="separator:aa23e45fa7a8f9f196704d4473721d6ab"><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;src, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> policy, uint32_t shift)</td></tr>
<tr class="separator:a968f4da89a68d28ad39d8e39d8d19f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3f03fb276c241cb8545e8f19b0718dc"><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#ae3f03fb276c241cb8545e8f19b0718dc">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;src, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> policy, uint32_t shift)</td></tr>
<tr class="separator:ae3f03fb276c241cb8545e8f19b0718dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77181952330fca74c9b3528f9a51fa10"><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#a77181952330fca74c9b3528f9a51fa10">depth_convert</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt_out, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> policy, uint32_t shift)</td></tr>
<tr class="separator:a77181952330fca74c9b3528f9a51fa10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f8ec1b43b35c3c618cbacbbb4608b3b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a9f8ec1b43b35c3c618cbacbbb4608b3b"><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#a9f8ec1b43b35c3c618cbacbbb4608b3b">depthwise_convolution</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;weights, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;dst_shape, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;conv_info)</td></tr>
<tr class="memdesc:a9f8ec1b43b35c3c618cbacbbb4608b3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform a depthwise convolution. <a href="#a9f8ec1b43b35c3c618cbacbbb4608b3b">More...</a><br/></td></tr>
<tr class="separator:a9f8ec1b43b35c3c618cbacbbb4608b3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07eb27301d565f8f4018310e3dd000c3"><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#a07eb27301d565f8f4018310e3dd000c3">depthwise_convolution</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;weights, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;dst_shape, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &amp;conv_info)</td></tr>
<tr class="separator:a07eb27301d565f8f4018310e3dd000c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a001cc2899961f6e89ad6a775339cf5c4"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a001cc2899961f6e89ad6a775339cf5c4"><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#a001cc2899961f6e89ad6a775339cf5c4">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;src, 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_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;biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;dst_shape, 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:a001cc2899961f6e89ad6a775339cf5c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b86c6d4d446e068d2eaf96b67c2dfed"><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#a6b86c6d4d446e068d2eaf96b67c2dfed">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_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;biases, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;dst_shape, 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:a6b86c6d4d446e068d2eaf96b67c2dfed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab77dd3bd732636010753d8080608cd3c"><td class="memTemplParams" colspan="2">template&lt;typename T , typename std::enable_if&lt; std::is_integral&lt; T &gt;::value, int &gt;::type &gt; </td></tr>
<tr class="memitem:ab77dd3bd732636010753d8080608cd3c"><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#ab77dd3bd732636010753d8080608cd3c">dequantization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;min_max)</td></tr>
<tr class="separator:ab77dd3bd732636010753d8080608cd3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6633ef7fc0852265b2f158a5ef7ae900"><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#a6633ef7fc0852265b2f158a5ef7ae900">dequantization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;min_max)</td></tr>
<tr class="separator:a6633ef7fc0852265b2f158a5ef7ae900"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a745ca5afa4399233e2e967238a614648"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a745ca5afa4399233e2e967238a614648"><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#a745ca5afa4399233e2e967238a614648">fixed_point_operation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src, <a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dc">FixedPointOp</a> op)</td></tr>
<tr class="separator:a745ca5afa4399233e2e967238a614648"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98070661bf8ba9b1f4566354956a66ce"><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#a98070661bf8ba9b1f4566354956a66ce">fixed_point_operation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int8_t &gt; &amp;src, <a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dc">FixedPointOp</a> op)</td></tr>
<tr class="separator:a98070661bf8ba9b1f4566354956a66ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4d1af4ea557e17c82d189de96f41619"><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#ac4d1af4ea557e17c82d189de96f41619">fixed_point_operation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;src, <a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dc">FixedPointOp</a> op)</td></tr>
<tr class="separator:ac4d1af4ea557e17c82d189de96f41619"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33d228262e4f4d071d5d188ffddcc8ac"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a33d228262e4f4d071d5d188ffddcc8ac"><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#a33d228262e4f4d071d5d188ffddcc8ac">flatten_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src)</td></tr>
<tr class="separator:a33d228262e4f4d071d5d188ffddcc8ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba4e68b4d0f8fa70109062ffbbb7a877"><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#aba4e68b4d0f8fa70109062ffbbb7a877">flatten_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src)</td></tr>
<tr class="separator:aba4e68b4d0f8fa70109062ffbbb7a877"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25907a4887aa2edaa8cebe140bd7b9c0"><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#a25907a4887aa2edaa8cebe140bd7b9c0">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;src)</td></tr>
<tr class="separator:a25907a4887aa2edaa8cebe140bd7b9c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85acbada271bb0feecdb6e1a2c887574"><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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a85acbada271bb0feecdb6e1a2c887574">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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;src)</td></tr>
<tr class="separator:a85acbada271bb0feecdb6e1a2c887574"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e4fbac72d0548bc22a4ae03b419204d"><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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a3e4fbac72d0548bc22a4ae03b419204d">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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;src)</td></tr>
<tr class="separator:a3e4fbac72d0548bc22a4ae03b419204d"><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;src)</td></tr>
<tr class="separator:a6c81be98812b8cb462be45d9e3d21464"><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;src)</td></tr>
<tr class="separator:a0aa1e471728da9ae3dd19f50fa4ef1b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2211dde69485a1533f0b86430e9d0588"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a2211dde69485a1533f0b86430e9d0588"><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#a2211dde69485a1533f0b86430e9d0588">fully_connected_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;weights, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;bias, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;dst_shape)</td></tr>
<tr class="separator:a2211dde69485a1533f0b86430e9d0588"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a843363150af3e3fedf2582aaa7e3a4a8"><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#a843363150af3e3fedf2582aaa7e3a4a8">fully_connected_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;weights, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;bias, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;dst_shape)</td></tr>
<tr class="separator:a843363150af3e3fedf2582aaa7e3a4a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac11b244329e583c4695ef44cc03630bc"><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#ac11b244329e583c4695ef44cc03630bc">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;src, 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;weights, 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;bias, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;dst_shape)</td></tr>
<tr class="separator:ac11b244329e583c4695ef44cc03630bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab82c5ef588e5cc0e80fba92f2460aed6"><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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ab82c5ef588e5cc0e80fba92f2460aed6">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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;weights, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;bias, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;dst_shape)</td></tr>
<tr class="separator:ab82c5ef588e5cc0e80fba92f2460aed6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a781850308f2eee7db6bc0a9693ccde"><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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9a781850308f2eee7db6bc0a9693ccde">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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;src, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;weights, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;bias, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;dst_shape)</td></tr>
<tr class="separator:a9a781850308f2eee7db6bc0a9693ccde"><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;src, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, 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;src, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, 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;src, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, 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;src, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, uint8_t constant_border_value)</td></tr>
<tr class="separator:a45e01cc48f39327d25187bfc0ab27287"><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;b, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;c, float alpha, 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;b, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;c, float alpha, 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;b, 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 alpha, float beta)</td></tr>
<tr class="separator:ae62fed24d8b0bf2e0b74d81bbe92df38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37ab0d11ac78c506c87200005ea33b43"><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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a37ab0d11ac78c506c87200005ea33b43">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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;b, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;c, float alpha, float beta)</td></tr>
<tr class="separator:a37ab0d11ac78c506c87200005ea33b43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acebd35396a1f8b1eddab16a509ae0a29"><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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#acebd35396a1f8b1eddab16a509ae0a29">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#a1521eea74b97de8f2df9304e44179400">qint16_t</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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;b, const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; <a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;c, float alpha, float beta)</td></tr>
<tr class="separator:acebd35396a1f8b1eddab16a509ae0a29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1313eff6c71b0b3cd56cb6a1592c25a7"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a1313eff6c71b0b3cd56cb6a1592c25a7"><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#a1313eff6c71b0b3cd56cb6a1592c25a7">gemmlowp</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;b, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;c, int32_t a_offset, int32_t b_offset, int32_t c_offset, int32_t c_mult_int, int32_t out_shift)</td></tr>
<tr class="separator:a1313eff6c71b0b3cd56cb6a1592c25a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae8ba97f3019d90146956ebc8c138999"><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#aae8ba97f3019d90146956ebc8c138999">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;b, <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;c, int32_t a_offset, int32_t b_offset, int32_t c_offset, int32_t c_mult_int, int32_t out_shift)</td></tr>
<tr class="separator:aae8ba97f3019d90146956ebc8c138999"><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;src, 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> border_mode, 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;src, 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> border_mode, uint8_t constant_border_value)</td></tr>
<tr class="separator:ab2ac7813f2c360028d700e7feb88afca"><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;src)</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;src)</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;src, unsigned int axis, float epsilon)</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;src, unsigned int axis, float epsilon)</td></tr>
<tr class="separator:af0e1f08a54d6896f4d1e7b5ee7f54852"><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: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;src, 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;src)</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><br class="typebreak"/>
&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;src)</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><br class="typebreak"/>
&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;src)</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><br class="typebreak"/>
&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;src)</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;src, <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> border_mode, 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;src, <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> border_mode, 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;src, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, 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;src, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, float constant_border_value)</td></tr>
<tr class="separator:a4f89718e67b6cc5ce13ce5ea3a789a88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a041ee28e793d018db2379eb8eb3d1722"><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:a041ee28e793d018db2379eb8eb3d1722"><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#a041ee28e793d018db2379eb8eb3d1722">normalization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src, <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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:a041ee28e793d018db2379eb8eb3d1722"><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;src, <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#a096668313a9a819d54a2e65ec21ff0cc">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;src, <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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:a677c65b33a30875799e387168f59758e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad78a2e5549c4eebcb99adf18e8d19bb2"><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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad78a2e5549c4eebcb99adf18e8d19bb2">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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;src, <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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:ad78a2e5549c4eebcb99adf18e8d19bb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3782be7520e0bdb74a2ac1ec27d8d49"><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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ad3782be7520e0bdb74a2ac1ec27d8d49">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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;src, <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#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:ad3782be7520e0bdb74a2ac1ec27d8d49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b408e7726bf08bb8bb9a289ee622df3"><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:a9b408e7726bf08bb8bb9a289ee622df3"><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#a9b408e7726bf08bb8bb9a289ee622df3">pooling_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src, <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:a9b408e7726bf08bb8bb9a289ee622df3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafa91a9cde1d264c9a234bb69fc86a3a"><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#aafa91a9cde1d264c9a234bb69fc86a3a">pooling_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src, <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:aafa91a9cde1d264c9a234bb69fc86a3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1789f248f7ece261e772471ee497857"><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#af1789f248f7ece261e772471ee497857">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;src, <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:af1789f248f7ece261e772471ee497857"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9e2b2b91f2c8195675d81861bae19d6"><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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#ae9e2b2b91f2c8195675d81861bae19d6">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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;src, <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:ae9e2b2b91f2c8195675d81861bae19d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a84919eea23e2df4398efb5286c1403"><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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2a84919eea23e2df4398efb5286c1403">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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;src, <a class="el" href="classarm__compute_1_1_pooling_layer_info.xhtml">PoolingLayerInfo</a> <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>)</td></tr>
<tr class="separator:a2a84919eea23e2df4398efb5286c1403"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62fb59da715742ecee9c7ba8fbcd344d"><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:a62fb59da715742ecee9c7ba8fbcd344d"><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#a62fb59da715742ecee9c7ba8fbcd344d">quantization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src)</td></tr>
<tr class="separator:a62fb59da715742ecee9c7ba8fbcd344d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3bc20f240f3917b6fc0cef0b49c8202"><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#ad3bc20f240f3917b6fc0cef0b49c8202">quantization_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src)</td></tr>
<tr class="separator:ad3bc20f240f3917b6fc0cef0b49c8202"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0959ac5a94af6e44f1e2b3124d6511f4"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a0959ac5a94af6e44f1e2b3124d6511f4"><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#a0959ac5a94af6e44f1e2b3124d6511f4">reduction_operation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;dst_shape, unsigned int axis, <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a> op)</td></tr>
<tr class="separator:a0959ac5a94af6e44f1e2b3124d6511f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa87350949ad1bfc7a723b31f9b08bf48"><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#aa87350949ad1bfc7a723b31f9b08bf48">reduction_operation</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;dst_shape, unsigned int axis, <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45b">ReductionOperation</a> op)</td></tr>
<tr class="separator:aa87350949ad1bfc7a723b31f9b08bf48"><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;src, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape)</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;src, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape)</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;src, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape)</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;src, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape)</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;src, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape)</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;src, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape)</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;src, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape)</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;src, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape)</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;src, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &amp;output_shape)</td></tr>
<tr class="separator:ac3850e0704ba9d6ef260170e87ca1e66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c08fc82f2e4b9733cd0dacd6eabe579"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a2c08fc82f2e4b9733cd0dacd6eabe579"><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#a2c08fc82f2e4b9733cd0dacd6eabe579">scale</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> policy, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, T constant_border_value)</td></tr>
<tr class="separator:a2c08fc82f2e4b9733cd0dacd6eabe579"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9daab5cda42ace9c365597bd108d0498"><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#a9daab5cda42ace9c365597bd108d0498">scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src, float scale_x, float scale_y, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> policy, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, uint8_t constant_border_value)</td></tr>
<tr class="separator:a9daab5cda42ace9c365597bd108d0498"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a568158ce2891b0d97ddc5607150e27da"><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#a568158ce2891b0d97ddc5607150e27da">scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt; &amp;src, float scale_x, float scale_y, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> policy, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, int16_t constant_border_value)</td></tr>
<tr class="separator:a568158ce2891b0d97ddc5607150e27da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad00179f43330d2c67fc89d38d2b63f23"><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#ad00179f43330d2c67fc89d38d2b63f23">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;src, float scale_x, float scale_y, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> policy, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, <a class="el" href="namespacearm__compute.xhtml#a73e2825fd61d349c5ca2f5313e3c8ea1">half</a> constant_border_value)</td></tr>
<tr class="separator:ad00179f43330d2c67fc89d38d2b63f23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d8a03a157fc437903c617f00416c3ad"><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#a8d8a03a157fc437903c617f00416c3ad">scale</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src, float scale_x, float scale_y, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> policy, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, float constant_border_value)</td></tr>
<tr class="separator:a8d8a03a157fc437903c617f00416c3ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2abc08344c057ffd1ae0043f7d005a6"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
<tr class="memitem:ab2abc08344c057ffd1ae0043f7d005a6"><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;<br class="typebreak"/>
, <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#ab2abc08344c057ffd1ae0043f7d005a6">sobel</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; U &gt; &amp;src, int filter_size, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, uint8_t constant_border_value)</td></tr>
<tr class="separator:ab2abc08344c057ffd1ae0043f7d005a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d96f3d086bf8a1996d8c1a7ddfd9794"><td class="memItemLeft" align="right" valign="top">template std::pair<br class="typebreak"/>
&lt; <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; int16_t &gt;<br class="typebreak"/>
, <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#a9d96f3d086bf8a1996d8c1a7ddfd9794">sobel</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; uint8_t &gt; &amp;src, int filter_size, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, uint8_t constant_border_value)</td></tr>
<tr class="separator:a9d96f3d086bf8a1996d8c1a7ddfd9794"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a856573f640c9c0f9b091299183597663"><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:a856573f640c9c0f9b091299183597663"><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#a856573f640c9c0f9b091299183597663">softmax_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; T &gt; &amp;src)</td></tr>
<tr class="separator:a856573f640c9c0f9b091299183597663"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32ff73221df59e6aa387eb062c456d5b"><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#a32ff73221df59e6aa387eb062c456d5b">softmax_layer</a> (const <a class="el" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml">SimpleTensor</a>&lt; float &gt; &amp;src)</td></tr>
<tr class="separator:a32ff73221df59e6aa387eb062c456d5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a589da1eaf38c3806576f2cd0cf9105bc"><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#a589da1eaf38c3806576f2cd0cf9105bc">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;src)</td></tr>
<tr class="separator:a589da1eaf38c3806576f2cd0cf9105bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af89324addc3fe39fb53f8b3ccf92ded3"><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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#af89324addc3fe39fb53f8b3ccf92ded3">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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> &gt; &amp;src)</td></tr>
<tr class="separator:af89324addc3fe39fb53f8b3ccf92ded3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c194e884eacf4e5388d468e773d0f53"><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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6c194e884eacf4e5388d468e773d0f53">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#a1521eea74b97de8f2df9304e44179400">qint16_t</a> &gt; &amp;src)</td></tr>
<tr class="separator:a6c194e884eacf4e5388d468e773d0f53"><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;src, 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;src, 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;src, 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;src, 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;src, 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: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> border_mode)</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;src, <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> policy, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, 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;src, <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> policy, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, 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;src, <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> policy, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, 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;src, <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> policy, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, uint8_t constant_border_value)</td></tr>
<tr class="separator:a29ddb612c916a0cd4c57ec03ceffd9b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ad1a73ce85cd5a4a689c605ade2bc8780"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ActivationLayerInfo&#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>Definition at line <a class="el" href="validation_2_c_p_p_2_activation_layer_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="validation_2_c_p_p_2_activation_layer_8cpp_source.xhtml">ActivationLayer.cpp</a>.</p>
<p>References <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00545">ActivationLayerInfo::a()</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaa7d8a220d2262f9d6c658d549ee12cf2c">ActivationLayerInfo::ABS</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00914">arm_compute::test::fixed_point_arithmetic::detail::abs()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00541">ActivationLayerInfo::activation()</a>, <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00549">ActivationLayerInfo::b()</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaacc516ab03b98f1c908ddf6ed4a7c45e9">ActivationLayerInfo::BOUNDED_RELU</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00924">arm_compute::test::fixed_point_arithmetic::detail::exp()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00246">SimpleTensor&lt; T &gt;::fixed_point_position()</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="tests_2validation_2_fixed_point_8h_source.xhtml#l00929">arm_compute::test::fixed_point_arithmetic::detail::log()</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="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaad346bb4679d29be241279f15d7795c1c">ActivationLayerInfo::RELU</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaa143c8c6f51b9bb893ce71e38702e3cc1">ActivationLayerInfo::TANH</a>, and <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00939">arm_compute::test::fixed_point_arithmetic::detail::tanh()</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; dst{ src.shape(), src.data_type(), 1, src.fixed_point_position() };</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="keyword">const</span> T a(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.a());</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> T b(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.b());</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> i = 0; i &lt; src.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; T x = src[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="keywordflow">switch</span>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.activation())</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">case</span> ActivationLayerInfo::ActivationFunction::ABS:</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; dst[i] = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ae115fc750a92fb6a5e094998b56fcc56">std::abs</a>(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::LINEAR:</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; dst[i] = a * x + b;</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::LOGISTIC:</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; dst[i] = <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(1) / (static_cast&lt;T&gt;(1) + <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aa4e01e9be9adcc40a69a4da48fa83a43">std::exp</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::RELU:</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; dst[i] = std::max&lt;T&gt;(<span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(0), 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::BOUNDED_RELU:</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; dst[i] = std::min&lt;T&gt;(a, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(static_cast&lt;T&gt;(0), 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::LU_BOUNDED_RELU:</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; dst[i] = std::min&lt;T&gt;(a, std::max&lt;T&gt;(b, 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::LEAKY_RELU:</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; dst[i] = (x &gt; 0) ? x : a * 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::SOFT_RELU:</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; dst[i] = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a8c8ce35c61b4f71cccec28d18161eaa1">std::log</a>(static_cast&lt;T&gt;(1) + <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aa4e01e9be9adcc40a69a4da48fa83a43">std::exp</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::SQRT:</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; dst[i] = std::sqrt(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">case</span> ActivationLayerInfo::ActivationFunction::SQUARE:</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; dst[i] = x * x;</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> ActivationLayerInfo::ActivationFunction::TANH:</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; dst[i] = a * <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a6854479935f66029852441b051e1a3e0">std::tanh</a>(b * x);</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">default</span>:</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</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="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">return</span> dst;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</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#l00031">Error.h:31</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aa4e01e9be9adcc40a69a4da48fa83a43"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aa4e01e9be9adcc40a69a4da48fa83a43">arm_compute::test::fixed_point_arithmetic::detail::exp</a></div><div class="ttdeci">fixed_point&lt; T &gt; exp(fixed_point&lt; T &gt; x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00924">FixedPoint.h:924</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a096668313a9a819d54a2e65ec21ff0cc"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">arm_compute::test::validation::info</a></div><div class="ttdeci">src info() -&gt; set_format(Format::S16)</div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_a8c8ce35c61b4f71cccec28d18161eaa1"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a8c8ce35c61b4f71cccec28d18161eaa1">arm_compute::test::fixed_point_arithmetic::detail::log</a></div><div class="ttdeci">fixed_point&lt; T &gt; log(fixed_point&lt; T &gt; x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00929">FixedPoint.h:929</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">FixedPoint.h:889</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_a6854479935f66029852441b051e1a3e0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a6854479935f66029852441b051e1a3e0">arm_compute::test::fixed_point_arithmetic::detail::tanh</a></div><div class="ttdeci">fixed_point&lt; T &gt; tanh(fixed_point&lt; T &gt; x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00939">FixedPoint.h:939</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ae115fc750a92fb6a5e094998b56fcc56"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ae115fc750a92fb6a5e094998b56fcc56">arm_compute::test::fixed_point_arithmetic::detail::abs</a></div><div class="ttdeci">fixed_point&lt; T &gt; abs(fixed_point&lt; T &gt; x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00914">FixedPoint.h:914</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ab45edd626ed376e74792b87d59ac7913"></a>
<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 SimpleTensor&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ActivationLayerInfo&#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 class="anchor" id="af2f52d261a58bf104da93a90f0171c34"></a>
<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 SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ActivationLayerInfo&#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 class="anchor" id="a6db4e198a18bcd309c95d93fea7fe255"></a>
<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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a>&gt; arm_compute::test::validation::reference::activation_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ActivationLayerInfo&#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 class="anchor" id="a09bed76970c9539be9af1693a21180ca"></a>
<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#a1521eea74b97de8f2df9304e44179400">qint16_t</a>&gt; arm_compute::test::validation::reference::activation_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ActivationLayerInfo&#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 class="anchor" id="ae98dcf5421f308ea7bb268ca7a37be5f"></a>
<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_addition </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DataType&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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>Definition at line <a class="el" href="_c_p_p_2_arithmetic_addition_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="_c_p_p_2_arithmetic_addition_8cpp_source.xhtml">ArithmeticAddition.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fa4729d95f983955f0d93a30179deb2b86">arm_compute::SATURATE</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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; SimpleTensor&lt;T&gt; result(src1.shape(), dst_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">using</span> intermediate_type = <span class="keyword">typename</span> common_promoted_signed_type&lt;T&gt;::intermediate_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="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; src1.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; intermediate_type val = <span class="keyword">static_cast&lt;</span>intermediate_type<span class="keyword">&gt;</span>(src1[i]) + static_cast&lt;intermediate_type&gt;(src2[i]);</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; result[i] = (convert_policy == ConvertPolicy::SATURATE) ? saturate_cast&lt;T&gt;(val) : <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(val);</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="keywordflow">return</span> result;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a9d398f98a548984dc3869c8394a821d3"></a>
<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::arithmetic_addition </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&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">DataType&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="a426be141440c207990cde03ce6982f19"></a>
<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::arithmetic_addition </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&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">DataType&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="ab3bad17e7cc30ec6052ff401a069b9df"></a>
<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::arithmetic_addition </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&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">DataType&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="a7f91038e9c76832b77e2ffc21d43da3b"></a>
<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_addition </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DataType&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="a1564ce88519643851a20bae003f86c4b"></a>
<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_addition </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DataType&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="ab85904ecf7e8eb65f8b77f8b20f6c109"></a>
<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_subtraction </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DataType&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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>Definition at line <a class="el" href="_c_p_p_2_arithmetic_subtraction_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_c_p_p_2_arithmetic_subtraction_8cpp_source.xhtml">ArithmeticSubtraction.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fa4729d95f983955f0d93a30179deb2b86">arm_compute::SATURATE</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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 = <span class="keyword">static_cast&lt;</span>intermediate_type<span class="keyword">&gt;</span>(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] = (convert_policy == ConvertPolicy::SATURATE) ? saturate_cast&lt;T&gt;(val) : <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(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 -->
</div>
</div>
<a class="anchor" id="ad5e0c329cc342bfb10db654421caeca5"></a>
<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::arithmetic_subtraction </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&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">DataType&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="a8d2f7dd1f6f4d926f83a715bb4143971"></a>
<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::arithmetic_subtraction </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&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">DataType&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="a2965c3c1a64d212b9a363edc0da97570"></a>
<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::arithmetic_subtraction </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&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">DataType&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="ac8f64dd344b40ee01530079e83b54235"></a>
<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_subtraction </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DataType&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="a94b79c69970cb70f27ed07fd8dcca2ef"></a>
<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_subtraction </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DataType&#160;</td>
<td class="paramname"><em>dst_data_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="a7dc3318ccd1a590cd13f67d0b7133eb5"></a>
<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 SimpleTensor&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 SimpleTensor&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 SimpleTensor&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 SimpleTensor&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 SimpleTensor&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">int&#160;</td>
<td class="paramname"><em>fixed_point_position</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="validation_2_c_p_p_2_batch_normalization_layer_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="validation_2_c_p_p_2_batch_normalization_layer_8cpp_source.xhtml">BatchNormalizationLayer.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00934">arm_compute::test::fixed_point_arithmetic::detail::inv_sqrt()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00225">fixed_point&lt; T &gt;::raw()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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; SimpleTensor&lt;T&gt; result(src.shape(), src.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="keyword">const</span> <span class="keyword">auto</span> cols = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(src.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> rows = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(src.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> depth = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(src.shape()[2]);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">int</span> upper_dims = src.shape().total_size() / (cols * rows * depth);</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> r = 0; r &lt; upper_dims; ++r)</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; depth; ++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="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k &lt; rows; ++k)</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> l = 0; l &lt; cols; ++l)</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> pos = l + k * cols + i * rows * cols + r * cols * rows * depth;</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; fixed_point_arithmetic::fixed_point&lt;T&gt; src_qs(src[pos], fixed_point_position, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; fixed_point_arithmetic::fixed_point&lt;T&gt; var_qs(var[i], fixed_point_position, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; fixed_point_arithmetic::fixed_point&lt;T&gt; mean_qs(mean[i], fixed_point_position, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; fixed_point_arithmetic::fixed_point&lt;T&gt; beta_qs(beta[i], fixed_point_position, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; fixed_point_arithmetic::fixed_point&lt;T&gt; gamma_qs(gamma[i], fixed_point_position, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; fixed_point_arithmetic::fixed_point&lt;T&gt; epsilon_qs(epsilon, fixed_point_position);</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">auto</span> denominator = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a2b7623d9dd3fde1d0a3bbe034967cff5">fixed_point_arithmetic::inv_sqrt</a>(var_qs + epsilon_qs);</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">auto</span> numerator = src_qs - mean_qs;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">auto</span> x_bar = numerator * denominator;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; x_bar = beta_qs + x_bar * gamma_qs;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; result[pos] = x_bar.raw();</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; }</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_1fixed__point__arithmetic_1_1detail_xhtml_a2b7623d9dd3fde1d0a3bbe034967cff5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a2b7623d9dd3fde1d0a3bbe034967cff5">arm_compute::test::fixed_point_arithmetic::detail::inv_sqrt</a></div><div class="ttdeci">fixed_point&lt; T &gt; inv_sqrt(fixed_point&lt; T &gt; x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00934">FixedPoint.h:934</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ab4756f017d831af39f56b6ddad64eb36"></a>
<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 SimpleTensor&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 SimpleTensor&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 SimpleTensor&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 SimpleTensor&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 SimpleTensor&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">int&#160;</td>
<td class="paramname"><em>fixed_point_position</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a833512b72a849556403efd62572ef455"></a>
<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::batch_normalization_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; int8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; int8_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">int&#160;</td>
<td class="paramname"><em>fixed_point_position</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ab7085e9ba2421046f0ac70d95629ebee"></a>
<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::batch_normalization_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; int16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; int16_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">int&#160;</td>
<td class="paramname"><em>fixed_point_position</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a18f9d09022ed3dcae3726a3bc4d04bd3"></a>
<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 SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>mean</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>beta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; half &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">int&#160;</td>
<td class="paramname"><em>fixed_point_position</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a7229d506620fd44c5916716f7bf696b2"></a>
<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 SimpleTensor&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 SimpleTensor&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>Definition at line <a class="el" href="_c_p_p_2_bitwise_and_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_c_p_p_2_bitwise_and_8cpp_source.xhtml">BitwiseAnd.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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; dst(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; dst[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> dst;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a55c7ec1e1273f65d37c51ff1d39a5d77"></a>
<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 SimpleTensor&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 SimpleTensor&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 class="anchor" id="af4713d48a2398823bcfd449c2aafef30"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="_c_p_p_2_bitwise_not_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_c_p_p_2_bitwise_not_8cpp_source.xhtml">BitwiseNot.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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; dst(src.shape(), src.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; src.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; dst[i] = ~src[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> dst;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a003581bd71ae054b9b7ff70d975856d8"></a>
<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 SimpleTensor&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 class="anchor" id="abe5e573ce60f341bbeebd0498d8e499b"></a>
<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 SimpleTensor&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 SimpleTensor&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>Definition at line <a class="el" href="_c_p_p_2_bitwise_or_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_c_p_p_2_bitwise_or_8cpp_source.xhtml">BitwiseOr.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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; dst(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; dst[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> dst;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a89ed2687d967ec8a8ffc24195fbda72e"></a>
<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 SimpleTensor&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 SimpleTensor&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 class="anchor" id="aade8c313bbf87320b8b8f81c5ff5aeac"></a>
<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 SimpleTensor&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 SimpleTensor&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>Definition at line <a class="el" href="_c_p_p_2_bitwise_xor_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_c_p_p_2_bitwise_xor_8cpp_source.xhtml">BitwiseXor.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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; dst(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; dst[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> dst;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="af05c4e8f9356af6f59bb1e7f48b97d4d"></a>
<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 SimpleTensor&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 SimpleTensor&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 class="anchor" id="aa048ec4655f2ebb10b8d1f301f60df69"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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>Definition at line <a class="el" href="_c_p_p_2_box3x3_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_c_p_p_2_box3x3_8cpp_source.xhtml">Box3x3.cpp</a>.</p>
<p>References <a class="el" href="tests_2validation_2_c_p_p_2_utils_8h_source.xhtml#l00081">arm_compute::test::validation::apply_2d_spatial_filter()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00308">arm_compute::test::index2coord()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_c_p_p_2_scale_8cpp_source.xhtml#l00039">scale()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa4c614360da93c0a041b22e537de151eb">arm_compute::U</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; dst(src.shape(), src.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_1_1reference.xhtml#a2c08fc82f2e4b9733cd0dacd6eabe579">scale</a> = 1.f / <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(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; src.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>(src.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>, src, dst, TensorShape(3U, 3U), filter.data(), <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2c08fc82f2e4b9733cd0dacd6eabe579">scale</a>, border_mode, 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> dst;</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_2_c_p_p_2_utils_8h_source.xhtml#l00081">Utils.h:81</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#l00308">Utils.h:308</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a2c08fc82f2e4b9733cd0dacd6eabe579"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2c08fc82f2e4b9733cd0dacd6eabe579">arm_compute::test::validation::reference::scale</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; scale(const SimpleTensor&lt; T &gt; &amp;in, float scale_x, float scale_y, InterpolationPolicy policy, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_scale_8cpp_source.xhtml#l00039">Scale.cpp:39</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a2ff0714b006e333c893d87a928d88da6"></a>
<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 SimpleTensor&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">BorderMode&#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>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 class="anchor" id="a9585c7c2f19c8c051da1d927d3687e70"></a>
<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 SimpleTensor&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>Definition at line <a class="el" href="_c_p_p_2_min_max_location_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_c_p_p_2_min_max_location_8cpp_source.xhtml">MinMaxLocation.cpp</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</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; <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a> = src[0];</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a> = src[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>(src.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; src.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>(src[i] &lt; <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</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; <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a> = src[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>(src[i] &gt; <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</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; <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a> = src[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="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">FixedPoint.h:884</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#l00124">Error.h:124</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">FixedPoint.h:889</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="aeec300028ef21b06bc60da82c894a010"></a>
<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 SimpleTensor&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 SimpleTensor&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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TensorShape &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PadStrideInfo &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>Definition at line <a class="el" href="validation_2_c_p_p_2_convolution_layer_8cpp_source.xhtml#l00137">137</a> of file <a class="el" href="validation_2_c_p_p_2_convolution_layer_8cpp_source.xhtml">ConvolutionLayer.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00311">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00246">SimpleTensor&lt; T &gt;::fixed_point_position()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00429">PadStrideInfo::pad()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00425">PadStrideInfo::stride()</a>.</p>
<p>Referenced by <a class="el" href="validation_2_c_p_p_2_depthwise_separable_convolution_layer_8cpp_source.xhtml#l00043">depthwise_separable_convolution_layer()</a>, and <a class="el" href="_alex_net_network_8h_source.xhtml#l00057">AlexNetNetwork&lt; ITensorType, TensorType, SubTensorType, arm_compute::test::Accessor, ActivationLayerFunction, ConvolutionLayerFunction, DirectConvolutionLayerFunction, FullyConnectedLayerFunction, NormalizationLayerFunction, PoolingLayerFunction, SoftmaxLayerFunction &gt;::init()</a>.</p>
<div class="fragment"><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="comment">// Create reference</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; SimpleTensor&lt;T&gt; dst{ output_shape, src.data_type(), 1, src.fixed_point_position() };</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">// Compute reference</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> width_in = src.shape().x();</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_in = src.shape().y();</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth_in = src.shape().z();</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_out = dst.shape().x();</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_out = dst.shape().y();</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth_out = dst.shape().z();</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_weights = weights.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> height_weights = weights.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> depth_weights = weights.shape().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> pad_xi = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.pad().first), width_weights / 2);</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> pad_yi = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(static_cast&lt;int&gt;(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.pad().second), height_weights / 2);</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start_xi = width_weights / 2 - pad_xi;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start_yi = height_weights / 2 - pad_yi;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> end_xi = width_in - start_xi;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> end_yi = height_in - start_yi;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</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#a096668313a9a819d54a2e65ec21ff0cc">info</a>.stride().first;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</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#a096668313a9a819d54a2e65ec21ff0cc">info</a>.stride().second;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batches = src.shape().total_size() / (width_in * height_in * depth_in);</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">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; num_batches; ++r)</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">for</span>(<span class="keywordtype">int</span> yi = start_yi; yi &lt; end_yi; yi += stride_yi)</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="keywordflow">for</span>(<span class="keywordtype">int</span> xi = start_xi; xi &lt; end_xi; xi += stride_xi)</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> ofm = 0; ofm &lt; depth_out; ++ofm)</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">// Compute input and output offsets</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</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="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xo = (xi - start_xi) / stride_xi;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yo = (yi - start_yi) / stride_yi;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</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="l00175"></a><span class="lineno"> 175</span>&#160;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">// Compute 3D convolution</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; convolution3d(src.data() + offset_in,</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; weights.data() + ofm * width_weights * height_weights * depth_weights,</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; bias.data() + ofm,</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; dst.data() + offset_out,</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; xi, yi,</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; width_in, height_in, depth_in,</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; width_weights, height_weights,</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; src.fixed_point_position());</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; }</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; }</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">return</span> dst;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;}</div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">FixedPoint.h:884</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a096668313a9a819d54a2e65ec21ff0cc"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">arm_compute::test::validation::info</a></div><div class="ttdeci">src info() -&gt; set_format(Format::S16)</div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ac0a0d3a8a94f2f011d2969ff6b6c591f"></a>
<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 SimpleTensor&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 SimpleTensor&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 SimpleTensor&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 TensorShape &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PadStrideInfo &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 class="anchor" id="acb8d139aa02479d9c5c0d2fcbda92383"></a>
<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 SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TensorShape &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PadStrideInfo &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 class="anchor" id="a1196fd13dfe164c3b3ac509c2f577b98"></a>
<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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a>&gt; arm_compute::test::validation::reference::convolution_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; qint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; qint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TensorShape &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PadStrideInfo &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 class="anchor" id="a043cd6bdf09803218b2e5366ffc9439d"></a>
<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#a1521eea74b97de8f2df9304e44179400">qint16_t</a>&gt; arm_compute::test::validation::reference::convolution_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; qint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; qint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TensorShape &amp;&#160;</td>
<td class="paramname"><em>output_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PadStrideInfo &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 class="anchor" id="a742cdbdf3c1db76c9a189f1bcd745579"></a>
<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 SimpleTensor&lt; T1 &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DataType&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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>Definition at line <a class="el" href="_c_p_p_2_depth_convert_8cpp_source.xhtml#l00040">40</a> of file <a class="el" href="_c_p_p_2_depth_convert_8cpp_source.xhtml">DepthConvert.cpp</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00246">SimpleTensor&lt; T &gt;::fixed_point_position()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(policy);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(shift);</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">using namespace </span>fixed_point_arithmetic;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; SimpleTensor&lt;T2&gt; result(src.shape(), dt_out);</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> fixed_point_position = src.fixed_point_position();</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; src.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; result[i] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(fixed_point&lt;T1&gt;(src[i], fixed_point_position, <span class="keyword">true</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">return</span> result;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;}</div>
<div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a87c420d7f8a98dead76b0b32b2df6777"></a>
<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; depth_convert </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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">DataType&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="aa23e45fa7a8f9f196704d4473721d6ab"></a>
<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; depth_convert </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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">DataType&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="a968f4da89a68d28ad39d8e39d8d19f93"></a>
<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 SimpleTensor&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">DataType&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="ae3f03fb276c241cb8545e8f19b0718dc"></a>
<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_convert </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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">DataType&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="a77181952330fca74c9b3528f9a51fa10"></a>
<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; depth_convert </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DataType&#160;</td>
<td class="paramname"><em>dt_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ConvertPolicy&#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 class="anchor" id="aaca2b6bea6bd88fd39489d1104497330"></a>
<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; SimpleTensor&lt; T &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="_c_p_p_2_depth_concatenate_layer_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_c_p_p_2_depth_concatenate_layer_8cpp_source.xhtml">DepthConcatenateLayer.cpp</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_helpers_8cpp_source.xhtml#l00074">arm_compute::test::validation::calculate_depth_concatenate_shape()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00311">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="namespacearm__compute.xhtml#a3a440b3893fa10608d4428958be1c52ea696b031073e74bf2cb98e5ef201d4aa3">arm_compute::UNKNOWN</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; std::vector&lt;TensorShape&gt; shapes;</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">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> &amp;src : srcs)</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; shapes.emplace_back(src.shape());</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; <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dst_type = srcs.empty() ? DataType::UNKNOWN : srcs[0].data_type();</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; TensorShape dst_shape = <a class="code" href="namespacearm__compute.xhtml#a075313545533c34978309ed57d18333f">calculate_depth_concatenate_shape</a>(shapes);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; SimpleTensor&lt;T&gt; dst(dst_shape, dst_type);</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="comment">// Compute reference</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">int</span> depth_offset = 0;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width_out = dst.shape().x();</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height_out = dst.shape().y();</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth_out = dst.shape().z();</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> out_stride_z = width_out * height_out;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> batches = dst.shape().total_size_upper(3);</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">// Set output tensor to 0</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; std::fill_n(dst.data(), dst.num_elements(), 0);</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="keyword">const</span> <span class="keyword">auto</span> &amp;src : srcs)</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="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(depth_offset &gt;= depth_out);</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(batches != static_cast&lt;int&gt;(src.shape().total_size_upper(3)));</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> width = src.shape().x();</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height = src.shape().y();</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth = src.shape().z();</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> x_diff = (width_out - width) / 2;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> y_diff = (height_out - height) / 2;</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">const</span> T *src_ptr = src.data();</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> b = 0; b &lt; batches; ++b)</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="keyword">const</span> <span class="keywordtype">size_t</span> offset_to_first_element = b * out_stride_z * depth_out + depth_offset * out_stride_z + y_diff * width_out + x_diff;</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">for</span>(<span class="keywordtype">int</span> d = 0; d &lt; depth; ++d)</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">int</span> r = 0; r &lt; height; ++r)</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; std::copy(src_ptr, src_ptr + width, dst.data() + offset_to_first_element + d * out_stride_z + r * width_out);</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; src_ptr += width;</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; depth_offset += depth;</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> dst;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div>
<div class="ttc" id="namespacearm__compute_xhtml_a075313545533c34978309ed57d18333f"><div class="ttname"><a href="namespacearm__compute.xhtml#a075313545533c34978309ed57d18333f">arm_compute::calculate_depth_concatenate_shape</a></div><div class="ttdeci">TensorShape calculate_depth_concatenate_shape(const std::vector&lt; T * &gt; &amp;inputs_vector)</div><div class="ttdoc">Calculate the output shapes of the depth concatenate function. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_utils_8h_source.xhtml#l00430">Utils.h:430</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#l00124">Error.h:124</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#l00064">Types.h:64</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a998bf347ddc146fb533250b9ef9ce927"></a>
<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; SimpleTensor&lt; float &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a8a116b530186cf21c5f6c7da7acbd178"></a>
<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; SimpleTensor&lt; half &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ab9d829efe5d789bf902be0ecdc42ee7f"></a>
<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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a>&gt; arm_compute::test::validation::reference::depthconcatenate_layer </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; SimpleTensor&lt; qint8_t &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a05d54bc26134fcc90aa9889fd85beaad"></a>
<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#a1521eea74b97de8f2df9304e44179400">qint16_t</a>&gt; arm_compute::test::validation::reference::depthconcatenate_layer </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; SimpleTensor&lt; qint16_t &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>srcs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a9f8ec1b43b35c3c618cbacbbb4608b3b"></a>
<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 SimpleTensor&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 SimpleTensor&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 TensorShape &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PadStrideInfo &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>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>Definition at line <a class="el" href="validation_2_c_p_p_2_depthwise_convolution_8cpp_source.xhtml#l00048">48</a> of file <a class="el" href="validation_2_c_p_p_2_depthwise_convolution_8cpp_source.xhtml">DepthwiseConvolution.cpp</a>.</p>
<p>References <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a8d6b5cada83510220f59e00ce86d4d92">arm_compute::CONSTANT</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00311">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00246">SimpleTensor&lt; T &gt;::fixed_point_position()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00429">PadStrideInfo::pad()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00278">arm_compute::test::saturate_cast()</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#l00234">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00425">PadStrideInfo::stride()</a>, and <a class="el" href="tests_2validation_2_c_p_p_2_utils_8h_source.xhtml#l00046">arm_compute::test::validation::tensor_elem_at()</a>.</p>
<p>Referenced by <a class="el" href="validation_2_c_p_p_2_depthwise_separable_convolution_layer_8cpp_source.xhtml#l00043">depthwise_separable_convolution_layer()</a>.</p>
<div class="fragment"><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">// Create reference</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; SimpleTensor&lt;T&gt; dst{ dst_shape, src.data_type(), 1, src.fixed_point_position() };</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">// Compute reference</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> filter_width = weights.shape().x();</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> filter_height = weights.shape().y();</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> filter_plane = filter_width * filter_height;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> input_width = src.shape().x();</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> input_height = src.shape().y();</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> input_depth = src.shape().z();</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batches = src.shape().total_size() / (input_width * input_height * input_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">size_t</span> filter_half_width = filter_width / 2;</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> filter_half_height = filter_height / 2;</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> pad_x = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(filter_half_width, static_cast&lt;size_t&gt;(conv_info.pad().first));</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> pad_y = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(filter_half_height, static_cast&lt;size_t&gt;(conv_info.pad().second));</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> minimum_x = -pad_x + filter_half_width;</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> minimum_y = -pad_y + filter_half_height;</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="keywordtype">int</span> out_pos = 0;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</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="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">size_t</span> z = 0; z &lt; input_depth; ++z)</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">size_t</span> y = minimum_y; y &lt; input_height - minimum_y; y += conv_info.stride().second)</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">size_t</span> x = minimum_x; x &lt; input_width - minimum_x; x += conv_info.stride().first)</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; 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="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">size_t</span> filter_offset = filter_plane * z;</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; T val = 0;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = y - filter_half_height; j &lt;= static_cast&lt;int&gt;(y + filter_half_height); ++j)</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">for</span>(<span class="keywordtype">int</span> i = x - filter_half_width; i &lt;= static_cast&lt;int&gt;(x + filter_half_width); ++i)</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; coords.set(0, i);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; coords.set(1, j);</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; val += *(weights.data() + filter_offset) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(src, coords, BorderMode::CONSTANT, 0.f);</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; ++filter_offset;</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; coords.set(0, x);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; coords.set(1, y);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; dst[out_pos++] = <a class="code" href="namespacearm__compute_1_1test.xhtml#a4965b2f6821e0cf0afee738158bd8377">saturate_cast</a>&lt;T&gt;(val);</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; }</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">return</span> dst;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</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_2_c_p_p_2_utils_8h_source.xhtml#l00046">Utils.h:46</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">FixedPoint.h:884</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a4965b2f6821e0cf0afee738158bd8377"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a4965b2f6821e0cf0afee738158bd8377">arm_compute::test::saturate_cast</a></div><div class="ttdeci">T saturate_cast(T val)</div><div class="ttdoc">Saturate a value of type T against the numeric limits of type U. </div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00278">Utils.h:278</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a07eb27301d565f8f4018310e3dd000c3"></a>
<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 SimpleTensor&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 SimpleTensor&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 TensorShape &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PadStrideInfo &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 class="anchor" id="a001cc2899961f6e89ad6a775339cf5c4"></a>
<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 SimpleTensor&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 SimpleTensor&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 TensorShape &amp;&#160;</td>
<td class="paramname"><em>depthwise_out_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&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 TensorShape &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PadStrideInfo &amp;&#160;</td>
<td class="paramname"><em>depthwise_conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PadStrideInfo &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>Definition at line <a class="el" href="validation_2_c_p_p_2_depthwise_separable_convolution_layer_8cpp_source.xhtml#l00043">43</a> of file <a class="el" href="validation_2_c_p_p_2_depthwise_separable_convolution_layer_8cpp_source.xhtml">DepthwiseSeparableConvolutionLayer.cpp</a>.</p>
<p>References <a class="el" href="validation_2_c_p_p_2_convolution_layer_8cpp_source.xhtml#l00137">convolution_layer()</a>, and <a class="el" href="validation_2_c_p_p_2_depthwise_convolution_8cpp_source.xhtml#l00048">depthwise_convolution()</a>.</p>
<div class="fragment"><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; SimpleTensor&lt;T&gt; depthwise_out = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9f8ec1b43b35c3c618cbacbbb4608b3b">depthwise_convolution</a>(src, depthwise_weights, depthwise_out_shape, depthwise_conv_info);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; SimpleTensor&lt;T&gt; dst = <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aeec300028ef21b06bc60da82c894a010">convolution_layer</a>(depthwise_out, pointwise_weights, biases, dst_shape, pointwise_conv_info);</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> dst;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_aeec300028ef21b06bc60da82c894a010"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#aeec300028ef21b06bc60da82c894a010">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; T &gt; &amp;bias, const TensorShape &amp;output_shape, const PadStrideInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_p_p_2_convolution_layer_8cpp_source.xhtml#l00137">ConvolutionLayer.cpp:137</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a9f8ec1b43b35c3c618cbacbbb4608b3b"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a9f8ec1b43b35c3c618cbacbbb4608b3b">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 TensorShape &amp;dst_shape, const PadStrideInfo &amp;conv_info)</div><div class="ttdoc">Perform a depthwise convolution. </div><div class="ttdef"><b>Definition:</b> <a href="validation_2_c_p_p_2_depthwise_convolution_8cpp_source.xhtml#l00048">DepthwiseConvolution.cpp:48</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a6b86c6d4d446e068d2eaf96b67c2dfed"></a>
<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 SimpleTensor&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 SimpleTensor&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 TensorShape &amp;&#160;</td>
<td class="paramname"><em>depthwise_out_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&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 TensorShape &amp;&#160;</td>
<td class="paramname"><em>dst_shape</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PadStrideInfo &amp;&#160;</td>
<td class="paramname"><em>depthwise_conv_info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const PadStrideInfo &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 class="anchor" id="ab77dd3bd732636010753d8080608cd3c"></a>
<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; dequantization_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>min_max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="_c_p_p_2_dequantization_layer_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_c_p_p_2_dequantization_layer_8cpp_source.xhtml">DequantizationLayer.cpp</a>.</p>
<p>References <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::F32</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="_tensor_shape_8h_source.xhtml#l00145">TensorShape::total_size_upper()</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">// Create reference</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; SimpleTensor&lt;float&gt; dst{ src.shape(), DataType::F32 };</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="comment">// Compute 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> width = src.shape().x();</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 = src.shape().y();</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> depth = src.shape().z();</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride_w = width * height * depth;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batches = min_max.<a class="code" href="classarm__compute_1_1test_1_1_simple_tensor.xhtml#aba5871b3e4a65d057ec1c28fce8b00ba">shape</a>().<a class="code" href="classarm__compute_1_1_tensor_shape.xhtml#a91d8061f66e7f8bc56da91d965f04376">total_size_upper</a>(1);</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> k = 0; k &lt; num_batches; ++k)</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">float</span> <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a> = min_max[k * 2 + 0];</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a> = min_max[k * 2 + 1];</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> range = max - <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> scaling = range / 255.0f;</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; stride_w; ++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; dst[i + k * stride_w] = (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(src[i + k * stride_w]) * scaling) + <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</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; }</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> dst;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">FixedPoint.h:884</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#l00234">SimpleTensor.h:234</a></div></div>
<div class="ttc" id="classarm__compute_1_1_tensor_shape_xhtml_a91d8061f66e7f8bc56da91d965f04376"><div class="ttname"><a href="classarm__compute_1_1_tensor_shape.xhtml#a91d8061f66e7f8bc56da91d965f04376">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#l00145">TensorShape.h:145</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">FixedPoint.h:889</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a6633ef7fc0852265b2f158a5ef7ae900"></a>
<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::dequantization_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>min_max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a745ca5afa4399233e2e967238a614648"></a>
<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; fixed_point_operation </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FixedPointOp&#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>Definition at line <a class="el" href="_c_p_p_2_fixed_point_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="_c_p_p_2_fixed_point_8cpp_source.xhtml">FixedPoint.cpp</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00909">arm_compute::test::fixed_point_arithmetic::detail::div()</a>, <a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca8c670f8c37b95e1ed14a0ce414b049c7">arm_compute::EXP</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00924">arm_compute::test::fixed_point_arithmetic::detail::exp()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00246">SimpleTensor&lt; T &gt;::fixed_point_position()</a>, <a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca59c58364795af22cad54630be156712b">arm_compute::INV_SQRT</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00934">arm_compute::test::fixed_point_arithmetic::detail::inv_sqrt()</a>, <a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca4b5ffcdaf38ce4d463171f5c977c5ab3">arm_compute::LOG</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00929">arm_compute::test::fixed_point_arithmetic::detail::log()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca4d98346f3d5cc5fa5666f0715abf25b1">arm_compute::RECIPROCAL</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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; SimpleTensor&lt;T&gt; result(src.shape(), src.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> <span class="keywordtype">int</span> p = src.fixed_point_position();</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">switch</span>(op)</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">case</span> FixedPointOp::EXP:</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; src.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; result[i] = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aa4e01e9be9adcc40a69a4da48fa83a43">fixed_point_arithmetic::exp</a>(fixed_point_arithmetic::fixed_point&lt;T&gt;(src[i], p, <span class="keyword">true</span>)).raw();</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">break</span>;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> FixedPointOp::LOG:</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; src.num_elements(); ++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; result[i] = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a8c8ce35c61b4f71cccec28d18161eaa1">fixed_point_arithmetic::log</a>(fixed_point_arithmetic::fixed_point&lt;T&gt;(src[i], p, <span class="keyword">true</span>)).raw();</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">break</span>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">case</span> FixedPointOp::INV_SQRT:</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; src.num_elements(); ++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; result[i] = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a2b7623d9dd3fde1d0a3bbe034967cff5">fixed_point_arithmetic::inv_sqrt</a>(fixed_point_arithmetic::fixed_point&lt;T&gt;(src[i], p, <span class="keyword">true</span>)).raw();</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">case</span> FixedPointOp::RECIPROCAL:</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; src.num_elements(); ++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; result[i] = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a9d53af9692ab2f7ae6fc0017faeb46f0">fixed_point_arithmetic::div</a>(fixed_point_arithmetic::fixed_point&lt;T&gt;(1, p), fixed_point_arithmetic::fixed_point&lt;T&gt;(src[i], p, <span class="keyword">true</span>)).raw();</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">break</span>;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Fixed point operation not supported&quot;</span>);</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">break</span>;</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> result;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</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#l00031">Error.h:31</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aa4e01e9be9adcc40a69a4da48fa83a43"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aa4e01e9be9adcc40a69a4da48fa83a43">arm_compute::test::fixed_point_arithmetic::detail::exp</a></div><div class="ttdeci">fixed_point&lt; T &gt; exp(fixed_point&lt; T &gt; x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00924">FixedPoint.h:924</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_a8c8ce35c61b4f71cccec28d18161eaa1"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a8c8ce35c61b4f71cccec28d18161eaa1">arm_compute::test::fixed_point_arithmetic::detail::log</a></div><div class="ttdeci">fixed_point&lt; T &gt; log(fixed_point&lt; T &gt; x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00929">FixedPoint.h:929</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_a2b7623d9dd3fde1d0a3bbe034967cff5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a2b7623d9dd3fde1d0a3bbe034967cff5">arm_compute::test::fixed_point_arithmetic::detail::inv_sqrt</a></div><div class="ttdeci">fixed_point&lt; T &gt; inv_sqrt(fixed_point&lt; T &gt; x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00934">FixedPoint.h:934</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_a9d53af9692ab2f7ae6fc0017faeb46f0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a9d53af9692ab2f7ae6fc0017faeb46f0">arm_compute::test::fixed_point_arithmetic::detail::div</a></div><div class="ttdeci">fixed_point&lt; T &gt; div(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00909">FixedPoint.h:909</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a98070661bf8ba9b1f4566354956a66ce"></a>
<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::fixed_point_operation </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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">FixedPointOp&#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 class="anchor" id="ac4d1af4ea557e17c82d189de96f41619"></a>
<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::fixed_point_operation </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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">FixedPointOp&#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 class="anchor" id="a33d228262e4f4d071d5d188ffddcc8ac"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="_flatten_layer_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="_flatten_layer_8cpp_source.xhtml">FlattenLayer.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00311">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00246">SimpleTensor&lt; T &gt;::fixed_point_position()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00074">TensorShape::set()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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; TensorShape shape_flatten(src.shape());</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; shape_flatten.set(0, src.shape()[0] * src.shape()[1] * src.shape()[2]);</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; shape_flatten.remove_dimension(1);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; shape_flatten.remove_dimension(1);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; SimpleTensor&lt;T&gt; dst(shape_flatten, src.data_type(), 1, src.fixed_point_position());</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">// 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="l00046"></a><span class="lineno"> 46</span>&#160; std::copy(src.data(), src.data() + src.num_elements(), dst.data());</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> dst;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="aba4e68b4d0f8fa70109062ffbbb7a877"></a>
<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 SimpleTensor&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 class="anchor" id="a25907a4887aa2edaa8cebe140bd7b9c0"></a>
<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 SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a85acbada271bb0feecdb6e1a2c887574"></a>
<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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a>&gt; arm_compute::test::validation::reference::flatten_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint8_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 class="anchor" id="a3e4fbac72d0548bc22a4ae03b419204d"></a>
<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#a1521eea74b97de8f2df9304e44179400">qint16_t</a>&gt; arm_compute::test::validation::reference::flatten_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint16_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 class="anchor" id="a6c81be98812b8cb462be45d9e3d21464"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="validation_2_c_p_p_2_floor_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="validation_2_c_p_p_2_floor_8cpp_source.xhtml">Floor.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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; dst{ src.shape(), src.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; src.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; dst[i] = std::floor(src[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> dst;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a0aa1e471728da9ae3dd19f50fa4ef1b0"></a>
<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 SimpleTensor&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 class="anchor" id="a2211dde69485a1533f0b86430e9d0588"></a>
<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 SimpleTensor&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 SimpleTensor&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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TensorShape &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>Definition at line <a class="el" href="validation_2_c_p_p_2_fully_connected_layer_8cpp_source.xhtml#l00089">89</a> of file <a class="el" href="validation_2_c_p_p_2_fully_connected_layer_8cpp_source.xhtml">FullyConnectedLayer.cpp</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00311">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00246">SimpleTensor&lt; T &gt;::fixed_point_position()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00109">Dimensions&lt; T &gt;::num_dimensions()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="_tensor_shape_8h_source.xhtml#l00145">TensorShape::total_size_upper()</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; <span class="comment">// Create reference</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; SimpleTensor&lt;T&gt; dst{ TensorShape{ dst_shape }, src.data_type(), 1, src.fixed_point_position() };</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="comment">// Sanity checks</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batch_dimensions = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(0, static_cast&lt;int&gt;(dst_shape.num_dimensions()) - 1);</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_input_dimensions = src.shape().num_dimensions() - num_batch_dimensions;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> linear_input_size = src.shape().total_size_lower(num_input_dimensions);</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; <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(num_batch_dimensions);</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(num_input_dimensions);</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(linear_input_size);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(weights.shape().x() != linear_input_size);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(weights.shape().y() != bias.shape().x());</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(weights.shape().y() != dst.shape().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="comment">// Compute reference</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> cols_weights = weights.shape().x();</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> rows_weights = weights.shape().y();</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> num_batches = dst_shape.total_size_upper(1);</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="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k &lt; num_batches; ++k)</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; vector_matrix_multiply&lt;T&gt;(src.data() + k * cols_weights,</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; weights.data(),</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; bias.data(),</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; dst.data() + k * rows_weights,</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; cols_weights,</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; rows_weights,</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; src.fixed_point_position());</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; <span class="keywordflow">return</span> dst;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div>
<div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</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#l00124">Error.h:124</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">FixedPoint.h:889</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a843363150af3e3fedf2582aaa7e3a4a8"></a>
<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 SimpleTensor&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 SimpleTensor&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 SimpleTensor&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 TensorShape &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 class="anchor" id="ac11b244329e583c4695ef44cc03630bc"></a>
<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 SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TensorShape &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 class="anchor" id="ab82c5ef588e5cc0e80fba92f2460aed6"></a>
<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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a>&gt; arm_compute::test::validation::reference::fully_connected_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; qint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; qint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TensorShape &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 class="anchor" id="a9a781850308f2eee7db6bc0a9693ccde"></a>
<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#a1521eea74b97de8f2df9304e44179400">qint16_t</a>&gt; arm_compute::test::validation::reference::fully_connected_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; qint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>weights</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; qint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>bias</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TensorShape &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 class="anchor" id="a08625a89b22993b65e923139bdf3b9e1"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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>Definition at line <a class="el" href="_c_p_p_2_gaussian3x3_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_c_p_p_2_gaussian3x3_8cpp_source.xhtml">Gaussian3x3.cpp</a>.</p>
<p>References <a class="el" href="tests_2validation_2_c_p_p_2_utils_8h_source.xhtml#l00081">arm_compute::test::validation::apply_2d_spatial_filter()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00308">arm_compute::test::index2coord()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_c_p_p_2_scale_8cpp_source.xhtml#l00039">scale()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa4c614360da93c0a041b22e537de151eb">arm_compute::U</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; dst(src.shape(), src.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_1_1reference.xhtml#a2c08fc82f2e4b9733cd0dacd6eabe579">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; src.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>(src.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>, src, dst, TensorShape(3U, 3U), filter.data(), <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2c08fc82f2e4b9733cd0dacd6eabe579">scale</a>, border_mode, 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> dst;</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_2_c_p_p_2_utils_8h_source.xhtml#l00081">Utils.h:81</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#l00308">Utils.h:308</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a2c08fc82f2e4b9733cd0dacd6eabe579"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2c08fc82f2e4b9733cd0dacd6eabe579">arm_compute::test::validation::reference::scale</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; scale(const SimpleTensor&lt; T &gt; &amp;in, float scale_x, float scale_y, InterpolationPolicy policy, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_scale_8cpp_source.xhtml#l00039">Scale.cpp:39</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a0bf5cc0e54ac74aee07c3034844a27f8"></a>
<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 SimpleTensor&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">BorderMode&#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 class="anchor" id="ae74885d96f07f242e6974979cce5673b"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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>Definition at line <a class="el" href="_c_p_p_2_gaussian5x5_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_c_p_p_2_gaussian5x5_8cpp_source.xhtml">Gaussian5x5.cpp</a>.</p>
<p>References <a class="el" href="tests_2validation_2_c_p_p_2_utils_8h_source.xhtml#l00081">arm_compute::test::validation::apply_2d_spatial_filter()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00308">arm_compute::test::index2coord()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_c_p_p_2_scale_8cpp_source.xhtml#l00039">scale()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa4c614360da93c0a041b22e537de151eb">arm_compute::U</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; dst(src.shape(), src.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_1_1reference.xhtml#a2c08fc82f2e4b9733cd0dacd6eabe579">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; src.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>(src.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>, src, dst, TensorShape(5U, 5U), filter.data(), <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2c08fc82f2e4b9733cd0dacd6eabe579">scale</a>, border_mode, 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> dst;</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_2_c_p_p_2_utils_8h_source.xhtml#l00081">Utils.h:81</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#l00308">Utils.h:308</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_1_1reference_xhtml_a2c08fc82f2e4b9733cd0dacd6eabe579"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a2c08fc82f2e4b9733cd0dacd6eabe579">arm_compute::test::validation::reference::scale</a></div><div class="ttdeci">SimpleTensor&lt; T &gt; scale(const SimpleTensor&lt; T &gt; &amp;in, float scale_x, float scale_y, InterpolationPolicy policy, BorderMode border_mode, T constant_border_value)</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_scale_8cpp_source.xhtml#l00039">Scale.cpp:39</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a45e01cc48f39327d25187bfc0ab27287"></a>
<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 SimpleTensor&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">BorderMode&#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 class="anchor" id="aa8bf3ead30905547609084db58ee70de"></a>
<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 SimpleTensor&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 SimpleTensor&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 SimpleTensor&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>Definition at line <a class="el" href="validation_2_c_p_p_2_g_e_m_m_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="validation_2_c_p_p_2_g_e_m_m_8cpp_source.xhtml">GEMM.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00246">SimpleTensor&lt; T &gt;::fixed_point_position()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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; SimpleTensor&lt;T&gt; dst{ c.shape(), c.data_type(), 1, c.fixed_point_position() };</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">// Compute reference</span></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 = dst.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> N = dst.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> K = a.shape().x();</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> row = 0; row &lt; M; ++row)</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> col = 0; col &lt; N; ++col)</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; T acc(0);</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; K; ++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; acc += a[row * K + k] * b[k * N + col];</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">// Finalize the result: alpha * A * B + beta * C</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; dst[col + row * N] = alpha * acc + beta * c[col + row * N];</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; <span class="keywordflow">return</span> dst;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="acc8055ed1ae62ec87a4b389047c1464a"></a>
<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 SimpleTensor&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 SimpleTensor&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 SimpleTensor&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 class="anchor" id="ae62fed24d8b0bf2e0b74d81bbe92df38"></a>
<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 SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; half &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 class="anchor" id="a37ab0d11ac78c506c87200005ea33b43"></a>
<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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a>&gt; arm_compute::test::validation::reference::gemm </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; qint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; qint8_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">
</div>
</div>
<a class="anchor" id="acebd35396a1f8b1eddab16a509ae0a29"></a>
<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#a1521eea74b97de8f2df9304e44179400">qint16_t</a>&gt; arm_compute::test::validation::reference::gemm </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; qint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const SimpleTensor&lt; qint16_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>Referenced by <a class="el" href="validation_2_c_l_2_g_e_m_m_8cpp_source.xhtml#l00064">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a class="anchor" id="a1313eff6c71b0b3cd56cb6a1592c25a7"></a>
<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; gemmlowp </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>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>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>c_offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>c_mult_int</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>out_shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="_c_p_p_2_g_e_m_m_lowp_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_c_p_p_2_g_e_m_m_lowp_8cpp_source.xhtml">GEMMLowp.cpp</a>.</p>
<p>References <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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="keywordtype">int</span> K = a.shape().x();</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> b_width = b.shape().x();</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> rows = c.shape().y(); <span class="comment">//M</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> cols = c.shape().x(); <span class="comment">//N</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; std::vector&lt;int32_t&gt; acc;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; acc.resize(cols);</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; rows; ++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">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; acc[j] = 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="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k &lt; K; ++k)</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> int32_t tmp_a = a_offset + <span class="keyword">static_cast&lt;</span>int32_t<span class="keyword">&gt;</span>(a[k + i * K]);</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 = 0; j &lt; b_width; ++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="keyword">const</span> int32_t tmp_b = b_offset + <span class="keyword">static_cast&lt;</span>int32_t<span class="keyword">&gt;</span>(b[j + k * b_width]);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> int32_t mult_as_int = tmp_a * tmp_b;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; acc[j] += mult_as_int;</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">for</span>(<span class="keywordtype">int</span> j = 0; j &lt; cols; ++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; <span class="keyword">const</span> int32_t result = ((c_offset + acc[j]) * c_mult_int) &gt;&gt; out_shift;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; c[j + i * cols] = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(255, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(0, result)));</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; <span class="keywordflow">return</span> c;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;}</div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">FixedPoint.h:884</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">FixedPoint.h:889</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="aae8ba97f3019d90146956ebc8c138999"></a>
<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 </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 SimpleTensor&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">SimpleTensor&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">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>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>c_offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>c_mult_int</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>out_shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="adc64cfa88bef3958e1603bfca23db47a"></a>
<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 SimpleTensor&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">BorderMode&#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>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>
<p>References <a class="el" href="_c_p_p_2_threshold_8cpp_source.xhtml#l00035">threshold()</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;(src, <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, min_dist, sensitivity, gradient_size, block_size, border_mode, 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;(src, <a class="code" href="namespacearm__compute_1_1test_1_1validation_1_1reference.xhtml#a6cae310822a46019ba25a00ddb0f7e62">threshold</a>, min_dist, sensitivity, gradient_size, block_size, border_mode, 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_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="_c_p_p_2_threshold_8cpp_source.xhtml#l00035">Threshold.cpp:35</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ab2ac7813f2c360028d700e7feb88afca"></a>
<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 SimpleTensor&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">BorderMode&#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 class="anchor" id="a6d4691ec28061cbb6e38600f5f78a9bf"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="_c_p_p_2_integral_image_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_c_p_p_2_integral_image_8cpp_source.xhtml">IntegralImage.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">arm_compute::U32</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; dst(src.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 = src.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 = src.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 = src.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; dst[current_image] = src[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; dst[current_image + x] = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(src[current_image + x]) + dst[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; dst[current_row] = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(src[current_row]) + dst[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; dst[current_pixel] = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(src[current_pixel]) + dst[current_pixel - 1]</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; + dst[current_pixel - width] - dst[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> dst;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a751a624d19add33a7c81b6260386d550"></a>
<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 SimpleTensor&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 class="anchor" id="a238d3ab8cdae100387631d6491204c6b"></a>
<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 SimpleTensor&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>Definition at line <a class="el" href="_c_p_p_2_l2_normalize_8cpp_source.xhtml#l00051">51</a> of file <a class="el" href="_c_p_p_2_l2_normalize_8cpp_source.xhtml">L2Normalize.cpp</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00311">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="_c_p_p_2_reduction_operation_8cpp_source.xhtml#l00064">reduction_operation()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="reduction__operation_8cl_source.xhtml#l00052">sum()</a>, and <a class="el" href="namespacearm__compute.xhtml#a5827eb9cb394e74af87f74bd354fb45ba2ce6e134b828b72fad160fa17c8d1b64">arm_compute::SUM_SQUARE</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; dst{ src.shape(), src.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> = <a class="code" href="reduction__operation_8cl.xhtml#af8f01aa7a1c524a2a9e2674f2cbae54d">reduction_operation</a>(src, get_output_shape(src.shape(), axis), axis, 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> elems = src.shape()[axis];</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> upper_dims = src.shape().total_size_upper(axis + 1);</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> du = 0; du &lt; upper_dims; ++du)</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>(axis == 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 *src_row_ptr = src.data() + du * elems;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; T *dst_row_ptr = dst.data() + du * elems;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> T normalization_value = std::sqrt(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(sum[du], epsilon));</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; std::transform(src_row_ptr, src_row_ptr + elems, dst_row_ptr, [normalization_value](T val)</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> val / normalization_value;</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">else</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; <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Unsupported normalization axis&quot;</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;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> dst;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</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#l00031">Error.h:31</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#l00052">reduction_operation.cl:52</a></div></div>
<div class="ttc" id="reduction__operation_8cl_xhtml_af8f01aa7a1c524a2a9e2674f2cbae54d"><div class="ttname"><a href="reduction__operation_8cl.xhtml#af8f01aa7a1c524a2a9e2674f2cbae54d">reduction_operation</a></div><div class="ttdeci">__kernel void reduction_operation(__global uchar *src_ptr, uint src_stride_x, uint src_step_x, uint src_offset_first_element_in_bytes, __global uchar *partial_sum_ptr, uint partial_sum_stride_x, uint partial_sum_step_x, uint partial_sum_offset_first_element_in_bytes, __local DATA_TYPE *local_sums)</div><div class="ttdoc">This kernel performs reduction given an operation. </div><div class="ttdef"><b>Definition:</b> <a href="reduction__operation_8cl_source.xhtml#l00080">reduction_operation.cl:80</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">FixedPoint.h:889</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="af0e1f08a54d6896f4d1e7b5ee7f54852"></a>
<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 SimpleTensor&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 class="anchor" id="afcceed1cef9bd62b3429d3f76e577a23"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="_c_p_p_2_mean_std_dev_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_c_p_p_2_mean_std_dev_8cpp_source.xhtml">MeanStdDev.cpp</a>.</p>
<p>References <a class="el" href="accumulate_8cl_source.xhtml#l00041">accumulate()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00311">SimpleTensor&lt; T &gt;::data()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</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> b)</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 - b) * (mean - b);</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="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 -->
</div>
</div>
<a class="anchor" id="a4bbe9971a7eab2c7bb6b54dabaf479bf"></a>
<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 SimpleTensor&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 class="anchor" id="ac5e4b8af4086cce7dac5667735daf91a"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="_c_p_p_2_min_max_location_8cpp_source.xhtml#l00058">58</a> of file <a class="el" href="_c_p_p_2_min_max_location_8cpp_source.xhtml">MinMaxLocation.cpp</a>.</p>
<p>References <a class="el" href="tests_2_types_8h_source.xhtml#l00049">MinMaxLocationValues&lt; MinMaxType &gt;::max</a>, <a class="el" href="tests_2_types_8h_source.xhtml#l00051">MinMaxLocationValues&lt; MinMaxType &gt;::max_loc</a>, <a class="el" href="tests_2_types_8h_source.xhtml#l00048">MinMaxLocationValues&lt; MinMaxType &gt;::min</a>, <a class="el" href="tests_2_types_8h_source.xhtml#l00050">MinMaxLocationValues&lt; MinMaxType &gt;::min_loc</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00296">Coordinates2D::x</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; dst;</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 = src.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;(src, dst.min, dst.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; src.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> = <span class="keyword">static_cast&lt;</span>int32_t<span class="keyword">&gt;</span>(i % width);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; coord.y = <span class="keyword">static_cast&lt;</span>int32_t<span class="keyword">&gt;</span>(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>(src[i] == dst.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; dst.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>(src[i] == dst.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; dst.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> dst;</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="types_8h_source.xhtml#l00028">types.h:28</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="types_8h_source.xhtml#l00030">types.h:30</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ab2647e679a5282c102f65c83d08043a7"></a>
<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 SimpleTensor&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 class="anchor" id="aa4de1dd61ace6805d93248d25c0b2caa"></a>
<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 SimpleTensor&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 class="anchor" id="aff675bcce573bbd26e6d531b2e073ab8"></a>
<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 SimpleTensor&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 class="anchor" id="af00274a4d66faf0892f122870f1d9fd9"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">NonLinearFilterFunction&#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">MatrixPattern&#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">BorderMode&#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>Definition at line <a class="el" href="_c_p_p_2_non_linear_filter_8cpp_source.xhtml#l00036">36</a> of file <a class="el" href="_c_p_p_2_non_linear_filter_8cpp_source.xhtml">NonLinearFilter.cpp</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00308">arm_compute::test::index2coord()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00355">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="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02a03570470bad94692ce93e32700d2e1cb">arm_compute::OTHER</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00278">arm_compute::test::saturate_cast()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00193">arm_compute::test::shape_to_valid_region()</a>, <a class="el" href="tests_2validation_2_c_p_p_2_utils_8h_source.xhtml#l00046">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="_dimensions_8h_source.xhtml#l00081">Dimensions&lt; T &gt;::x()</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; dst(src.shape(), src.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#a4103adbb45806b2f2002d44b91d0d206">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 valid_region = <a class="code" href="namespacearm__compute_1_1test.xhtml#a4c9ad143c34306817986409ffb1dbd40">shape_to_valid_region</a>(src.shape(), border_mode == 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; src.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>(src.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>(valid_region, <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#afb5cd37bb08f1029691590372e6330f0">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>(src, <span class="keywordtype">id</span>, border_mode, 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] = <span class="keyword">static_cast&lt;</span>intermediate_type<span class="keyword">&gt;</span>(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> NonLinearFilterFunction::MIN:</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; dst[element_idx] = <a class="code" href="namespacearm__compute_1_1test.xhtml#a4965b2f6821e0cf0afee738158bd8377">saturate_cast</a>&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> NonLinearFilterFunction::MAX:</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; dst[element_idx] = <a class="code" href="namespacearm__compute_1_1test.xhtml#a4965b2f6821e0cf0afee738158bd8377">saturate_cast</a>&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; dst[element_idx] = <a class="code" href="namespacearm__compute_1_1test.xhtml#a4965b2f6821e0cf0afee738158bd8377">saturate_cast</a>&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> dst;</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#l00031">Error.h:31</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_2_c_p_p_2_utils_8h_source.xhtml#l00046">Utils.h:46</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a4c9ad143c34306817986409ffb1dbd40"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a4c9ad143c34306817986409ffb1dbd40">arm_compute::test::shape_to_valid_region</a></div><div class="ttdeci">ValidRegion shape_to_valid_region(TensorShape 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#l00193">Utils.h:193</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</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#l00124">Error.h:124</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_afb5cd37bb08f1029691590372e6330f0"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#afb5cd37bb08f1029691590372e6330f0">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_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#l00355">Utils.h:355</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#l00308">Utils.h:308</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a4965b2f6821e0cf0afee738158bd8377"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a4965b2f6821e0cf0afee738158bd8377">arm_compute::test::saturate_cast</a></div><div class="ttdeci">T saturate_cast(T val)</div><div class="ttdoc">Saturate a value of type T against the numeric limits of type U. </div><div class="ttdef"><b>Definition:</b> <a href="tests_2_utils_8h_source.xhtml#l00278">Utils.h:278</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a29d57ba8afd317719a954d18599956cd"></a>
<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 SimpleTensor&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">NonLinearFilterFunction&#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">MatrixPattern&#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">BorderMode&#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 class="anchor" id="a60e89e48713565425943913adec65294"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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>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>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00308">arm_compute::test::index2coord()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00355">arm_compute::test::is_in_valid_region()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00278">SimpleTensor&lt; T &gt;::num_channels()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00193">arm_compute::test::shape_to_valid_region()</a>, <a class="el" href="tests_2validation_2_c_p_p_2_utils_8h_source.xhtml#l00046">arm_compute::test::validation::tensor_elem_at()</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::UNDEFINED</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 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; dst(src.shape(), src.data_type(), src.num_channels());</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; ValidRegion valid_region = <a class="code" href="namespacearm__compute_1_1test.xhtml#a4c9ad143c34306817986409ffb1dbd40">shape_to_valid_region</a>(src.shape(), border_mode == 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; src.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>(src.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#afb5cd37bb08f1029691590372e6330f0">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>(valid_region, 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>(src[i] &gt;= <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(src, Coordinates(x - 1, y - 1), border_mode, constant_border_value) &amp;&amp; src[i] &gt;= <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(src, Coordinates(x, y - 1), border_mode, constant_border_value)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &amp;&amp; src[i] &gt;= <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(src, Coordinates(x + 1, y - 1), border_mode, constant_border_value) &amp;&amp; src[i] &gt;= <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(src, Coordinates(x - 1, y), border_mode, constant_border_value)</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; &amp;&amp; src[i] &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(src, Coordinates(x + 1, y), border_mode, constant_border_value) &amp;&amp; src[i] &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(src, Coordinates(x - 1, y + 1), border_mode, constant_border_value)</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; &amp;&amp; src[i] &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(src, Coordinates(x, y + 1), border_mode, constant_border_value) &amp;&amp; src[i] &gt; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(src, Coordinates(x + 1, y + 1), border_mode, 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; dst[i] = src[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; dst[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> dst;</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_2_c_p_p_2_utils_8h_source.xhtml#l00046">Utils.h:46</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a4c9ad143c34306817986409ffb1dbd40"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a4c9ad143c34306817986409ffb1dbd40">arm_compute::test::shape_to_valid_region</a></div><div class="ttdeci">ValidRegion shape_to_valid_region(TensorShape 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#l00193">Utils.h:193</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_afb5cd37bb08f1029691590372e6330f0"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#afb5cd37bb08f1029691590372e6330f0">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_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#l00355">Utils.h:355</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#l00308">Utils.h:308</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a4f89718e67b6cc5ce13ce5ea3a789a88"></a>
<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 SimpleTensor&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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 class="anchor" id="a041ee28e793d018db2379eb8eb3d1722"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">NormalizationLayerInfo&#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>Definition at line <a class="el" href="validation_2_c_p_p_2_normalization_layer_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="validation_2_c_p_p_2_normalization_layer_8cpp_source.xhtml">NormalizationLayer.cpp</a>.</p>
<p>References <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00588">NormalizationLayerInfo::beta()</a>, <a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa980fef040549733973683b1a868f96e5">arm_compute::CROSS_MAP</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00924">arm_compute::test::fixed_point_arithmetic::detail::exp()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00246">SimpleTensor&lt; T &gt;::fixed_point_position()</a>, <a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa6ff8bd96743aae9fd283cd822b84278e">arm_compute::IN_MAP_2D</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00592">NormalizationLayerInfo::kappa()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00929">arm_compute::test::fixed_point_arithmetic::detail::log()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00580">NormalizationLayerInfo::norm_size()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00603">NormalizationLayerInfo::scale_coeff()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="hwc_8hpp_source.xhtml#l00204">mali_userspace::type</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00576">NormalizationLayerInfo::type()</a>, and <a class="el" href="hwc_8hpp_source.xhtml#l00269">value</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; SimpleTensor&lt;T&gt; dst{ src.shape(), src.data_type(), 1, src.fixed_point_position() };</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">// Compute reference</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> uint32_t norm_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.norm_size();</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59ca">NormType</a> <a class="code" href="namespacemali__userspace.xhtml#ad44b615021ed3ccb734fcaf583ef4a03">type</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.type();</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">float</span> beta = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.beta();</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; uint32_t kappa = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.kappa();</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> cols = src.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> rows = src.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 = src.shape()[2];</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">int</span> upper_dims = src.shape().total_size() / (cols * rows);</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="keywordtype">float</span> coeff = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.scale_coeff();</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">int</span> radius_cols = norm_size / 2;</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">// IN_MAP_1D and CROSS_MAP normalize over a single axis only</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">int</span> radius_rows = (NormType::IN_MAP_2D == <a class="code" href="namespacemali__userspace.xhtml#ad44b615021ed3ccb734fcaf583ef4a03">type</a>) ? norm_size / 2 : 0;</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">if</span>(type == NormType::CROSS_MAP)</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">// Remove also depth from upper dimensions since it is the dimension we</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// want to use for normalization</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; upper_dims /= depth;</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> r = 0; r &lt; upper_dims; ++r)</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; rows; ++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; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k &lt; cols; ++k)</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> l = 0; l &lt; depth; ++l)</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">float</span> accumulated_scale = 0.f;</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> j = -radius_cols; j &lt;= radius_cols; ++j)</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="keyword">const</span> <span class="keywordtype">int</span> z = l + j;</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>(z &gt;= 0 &amp;&amp; z &lt; depth)</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> T <a class="code" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a> = src[k + i * cols + z * rows * cols + r * cols * rows * depth];</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; accumulated_scale += value * <a class="code" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</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; }</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; dst[k + i * cols + l * rows * cols + r * cols * rows * depth] = kappa + accumulated_scale * coeff;</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; }</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">else</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; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; upper_dims; ++r)</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">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; rows; ++i)</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> k = 0; k &lt; cols; ++k)</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="keywordtype">float</span> accumulated_scale = 0.f;</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> j = -radius_rows; j &lt;= radius_rows; ++j)</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="keyword">const</span> <span class="keywordtype">int</span> y = i + j;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</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="l00107"></a><span class="lineno"> 107</span>&#160; {</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> x = k + l;</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">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="l00111"></a><span class="lineno"> 111</span>&#160; {</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> T <a class="code" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a> = src[x + y * cols + r * cols * rows];</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; accumulated_scale += value * <a class="code" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</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; }</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; dst[k + i * cols + r * cols * rows] = kappa + accumulated_scale * coeff;</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">if</span>(beta == 1.f)</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> i = 0; i &lt; dst.num_elements(); ++i)</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; dst[i] = src[i] / dst[i];</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(beta == 0.5f)</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">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; dst.num_elements(); ++i)</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; dst[i] = src[i] / std::sqrt(dst[i]);</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">else</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">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; dst.num_elements(); ++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; dst[i] = src[i] * <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aa4e01e9be9adcc40a69a4da48fa83a43">std::exp</a>(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a8c8ce35c61b4f71cccec28d18161eaa1">std::log</a>(dst[i]) * -beta);</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;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> dst;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aa4e01e9be9adcc40a69a4da48fa83a43"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aa4e01e9be9adcc40a69a4da48fa83a43">arm_compute::test::fixed_point_arithmetic::detail::exp</a></div><div class="ttdeci">fixed_point&lt; T &gt; exp(fixed_point&lt; T &gt; x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00924">FixedPoint.h:924</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a096668313a9a819d54a2e65ec21ff0cc"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">arm_compute::test::validation::info</a></div><div class="ttdeci">src info() -&gt; set_format(Format::S16)</div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_a8c8ce35c61b4f71cccec28d18161eaa1"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a8c8ce35c61b4f71cccec28d18161eaa1">arm_compute::test::fixed_point_arithmetic::detail::log</a></div><div class="ttdeci">fixed_point&lt; T &gt; log(fixed_point&lt; T &gt; x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00929">FixedPoint.h:929</a></div></div>
<div class="ttc" id="hwc_8hpp_xhtml_a0f61d63b009d0880a89c843bd50d8d76"><div class="ttname"><a href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a></div><div class="ttdeci">void * value</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00269">hwc.hpp:269</a></div></div>
<div class="ttc" id="namespacemali__userspace_xhtml_ad44b615021ed3ccb734fcaf583ef4a03"><div class="ttname"><a href="namespacemali__userspace.xhtml#ad44b615021ed3ccb734fcaf583ef4a03">mali_userspace::type</a></div><div class="ttdeci">uint32_t type</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00204">hwc.hpp:204</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#l00357">Types.h:357</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a451c44627ad6c06f72667812f2a9782d"></a>
<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 SimpleTensor&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">NormalizationLayerInfo&#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 class="anchor" id="a677c65b33a30875799e387168f59758e"></a>
<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 SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">NormalizationLayerInfo&#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 class="anchor" id="ad78a2e5549c4eebcb99adf18e8d19bb2"></a>
<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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a>&gt; arm_compute::test::validation::reference::normalization_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">NormalizationLayerInfo&#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 class="anchor" id="ad3782be7520e0bdb74a2ac1ec27d8d49"></a>
<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#a1521eea74b97de8f2df9304e44179400">qint16_t</a>&gt; arm_compute::test::validation::reference::normalization_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">NormalizationLayerInfo&#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 class="anchor" id="a9b408e7726bf08bb8bb9a289ee622df3"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PoolingLayerInfo&#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>Definition at line <a class="el" href="validation_2_c_p_p_2_pooling_layer_8cpp_source.xhtml#l00055">55</a> of file <a class="el" href="validation_2_c_p_p_2_pooling_layer_8cpp_source.xhtml">PoolingLayer.cpp</a>.</p>
<p>References <a class="el" href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93afcefd647d6a866603c627b11347c707a">arm_compute::AVG</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00246">SimpleTensor&lt; T &gt;::fixed_point_position()</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">arm_compute::test::validation::info()</a>, <a class="el" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5">arm_compute::MAX</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00429">PadStrideInfo::pad()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00466">PoolingLayerInfo::pad_stride_info()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00462">PoolingLayerInfo::pool_size()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00458">PoolingLayerInfo::pool_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00425">PadStrideInfo::stride()</a>, and <a class="el" href="hwc_8hpp_source.xhtml#l00204">mali_userspace::type</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">int</span> pool_size = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.pool_size();</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93">PoolingType</a> <a class="code" href="namespacemali__userspace.xhtml#ad44b615021ed3ccb734fcaf583ef4a03">type</a> = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.pool_type();</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">int</span> pool_stride_x = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.pad_stride_info().stride().first;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">int</span> pool_stride_y = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.pad_stride_info().stride().second;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">int</span> pad_x = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.pad_stride_info().pad().first;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">int</span> pad_y = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>.pad_stride_info().pad().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">const</span> <span class="keyword">auto</span> w_src = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(src.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_src = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(src.shape()[1]);</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> upper_dims = src.shape().total_size() / (w_src * h_src);</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">// Create reference</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; SimpleTensor&lt;T&gt; dst{ calculate_output_shape(src.shape(), <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">info</a>), src.data_type(), 1, src.fixed_point_position() };</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="keyword">auto</span> w_dst = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(dst.shape()[0]);</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> h_dst = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(dst.shape()[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; <span class="keywordflow">if</span>(type == PoolingType::MAX)</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> r = 0; r &lt; upper_dims; ++r)</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">int</span> h = 0; h &lt; h_dst; ++h)</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">for</span>(<span class="keywordtype">int</span> w = 0; w &lt; w_dst; ++w)</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="keywordtype">int</span> wstart = w * pool_stride_x - pad_x;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">int</span> hstart = h * pool_stride_y - pad_y;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">int</span> wend = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(wstart + pool_size, w_src);</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">int</span> hend = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(hstart + pool_size, h_src);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; wstart = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(wstart, 0);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; hstart = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(hstart, 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; T max_val = std::numeric_limits&lt;T&gt;::lowest();</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y = hstart; y &lt; hend; ++y)</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> x = wstart; x &lt; wend; ++x)</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> T val = src[r * h_src * w_src + y * w_src + x];</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span>(val &gt; 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; max_val = val;</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; dst[r * h_dst * w_dst + h * w_dst + w] = max_val;</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; }</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="keywordflow">else</span> <span class="comment">// Average or l2 pooling</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">for</span>(<span class="keywordtype">int</span> r = 0; r &lt; upper_dims; ++r)</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="keywordflow">for</span>(<span class="keywordtype">int</span> h = 0; h &lt; h_dst; ++h)</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> w = 0; w &lt; w_dst; ++w)</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; T avg_val(0);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">int</span> wstart = w * pool_stride_x - pad_x;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">int</span> hstart = h * pool_stride_y - pad_y;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">int</span> wend = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(wstart + pool_size, w_src + pad_x);</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">int</span> hend = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(hstart + pool_size, h_src + pad_y);</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">int</span> pool = (hend - hstart) * (wend - wstart);</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; wstart = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(wstart, 0);</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; hstart = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(hstart, 0);</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; wend = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(wend, w_src);</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; hend = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(hend, h_src);</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">if</span>(type == PoolingType::AVG)</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> y = hstart; y &lt; hend; ++y)</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">for</span>(<span class="keywordtype">int</span> x = wstart; x &lt; wend; ++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; avg_val += src[r * h_src * w_src + y * w_src + x];</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; }</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; dst[r * h_dst * w_dst + h * w_dst + w] = avg_val / pool;</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> y = hstart; y &lt; hend; ++y)</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">for</span>(<span class="keywordtype">int</span> x = wstart; x &lt; wend; ++x)</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="keyword">const</span> T val = src[r * h_src * w_src + y * w_src + x];</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; avg_val += val * val;</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; dst[r * h_dst * w_dst + h * w_dst + w] = std::sqrt(avg_val / pool);</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; }</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; <span class="keywordflow">return</span> dst;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;}</div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">FixedPoint.h:884</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a096668313a9a819d54a2e65ec21ff0cc"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">arm_compute::test::validation::info</a></div><div class="ttdeci">src info() -&gt; set_format(Format::S16)</div></div>
<div class="ttc" id="namespacemali__userspace_xhtml_ad44b615021ed3ccb734fcaf583ef4a03"><div class="ttname"><a href="namespacemali__userspace.xhtml#ad44b615021ed3ccb734fcaf583ef4a03">mali_userspace::type</a></div><div class="ttdeci">uint32_t type</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00204">hwc.hpp:204</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#l00398">Types.h:398</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">FixedPoint.h:889</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="aafa91a9cde1d264c9a234bb69fc86a3a"></a>
<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 SimpleTensor&lt; float &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PoolingLayerInfo&#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 class="anchor" id="af1789f248f7ece261e772471ee497857"></a>
<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 SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PoolingLayerInfo&#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 class="anchor" id="ae9e2b2b91f2c8195675d81861bae19d6"></a>
<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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a>&gt; arm_compute::test::validation::reference::pooling_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PoolingLayerInfo&#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 class="anchor" id="a2a84919eea23e2df4398efb5286c1403"></a>
<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#a1521eea74b97de8f2df9304e44179400">qint16_t</a>&gt; arm_compute::test::validation::reference::pooling_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint16_t &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PoolingLayerInfo&#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 class="anchor" id="a62fb59da715742ecee9c7ba8fbcd344d"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="_c_p_p_2_quantization_layer_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="_c_p_p_2_quantization_layer_8cpp_source.xhtml">QuantizationLayer.cpp</a>.</p>
<p>References <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">arm_compute::U8</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; dst{ src.shape(), DataType::U8 };</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> width = src.shape().x();</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> height = src.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> depth = src.shape().z();</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stride_w = width * height * depth;</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_batches = src.shape().total_size_upper(3);</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> k = 0; k &lt; num_batches; ++k)</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 min and max of the 3D tensor</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">float</span> <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a> = src[k * stride_w];</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">float</span> <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a> = src[k * stride_w];</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">// Look for min and max values</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i &lt; stride_w; ++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">float</span> val = src[i + k * stride_w];</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; min = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(min, val);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; max = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(max, val);</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">// Saturate the result in case min = max</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span>(min == max)</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; min = 0.0f;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; max = 1.0f;</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="keyword">const</span> <span class="keywordtype">float</span> range = max - <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</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="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; stride_w; ++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; <span class="comment">// map values to range [0.0, 1.0]</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">float</span> val = src[i + k * stride_w];</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> normalized = (val - <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>) / range;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; dst[i + k * stride_w] = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(255.0f, normalized * 256.0f));</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;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> dst;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">FixedPoint.h:884</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">FixedPoint.h:889</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ad3bc20f240f3917b6fc0cef0b49c8202"></a>
<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 SimpleTensor&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 class="anchor" id="a0959ac5a94af6e44f1e2b3124d6511f4"></a>
<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; reduction_operation </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 TensorShape &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">ReductionOperation&#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>Definition at line <a class="el" href="_c_p_p_2_reduction_operation_8cpp_source.xhtml#l00064">64</a> of file <a class="el" href="_c_p_p_2_reduction_operation_8cpp_source.xhtml">ReductionOperation.cpp</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00311">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>.</p>
<p>Referenced by <a class="el" href="_c_p_p_2_l2_normalize_8cpp_source.xhtml#l00051">l2_normalize()</a>.</p>
<div class="fragment"><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">// Create reference</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; SimpleTensor&lt;T&gt; dst{ dst_shape, src.data_type() };</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="comment">// Compute reference</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> reduce_elems = src.shape()[axis];</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> upper_dims = src.shape().total_size_upper(axis + 1);</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> du = 0; du &lt; upper_dims; ++du)</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>(axis == 0)</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> T *src_row_ptr = src.data() + du * reduce_elems;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; dst[du] = reduce_operation(src_row_ptr, reduce_elems, op);</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">else</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; <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="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; <span class="keywordflow">return</span> dst;</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#l00031">Error.h:31</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="aa87350949ad1bfc7a723b31f9b08bf48"></a>
<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::reduction_operation </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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 TensorShape &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">ReductionOperation&#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 class="anchor" id="adeeeba93b83ffdad47f4357c08cfea0e"></a>
<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 SimpleTensor&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 TensorShape &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>Definition at line <a class="el" href="_c_p_p_2_reshape_layer_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="_c_p_p_2_reshape_layer_8cpp_source.xhtml">ReshapeLayer.cpp</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00311">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="_tensor_shape_8h_source.xhtml#l00135">TensorShape::total_size()</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="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(src.shape().total_size() != output_shape.total_size());</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; dst(output_shape, src.data_type());</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::copy_n(src.data(), src.num_elements(), dst.data());</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> dst;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</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#l00124">Error.h:124</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="afea45dc2b397b75108739c4300aa18ad"></a>
<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 SimpleTensor&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 TensorShape &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 class="anchor" id="a572f373a0f24d9e7d749454280411318"></a>
<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 SimpleTensor&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 TensorShape &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 class="anchor" id="a79a315f543d17f87f44d7b142e1efbbe"></a>
<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 SimpleTensor&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 TensorShape &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 class="anchor" id="a1b2ecbb6f4180bb42c65ed575c8fd313"></a>
<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 SimpleTensor&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 TensorShape &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 class="anchor" id="a42623cecebd86038ac287252a1ead241"></a>
<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 SimpleTensor&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 TensorShape &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 class="anchor" id="a1406fe85a6bec4007f13cc57c4e99767"></a>
<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 SimpleTensor&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 TensorShape &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 class="anchor" id="a60d98374b4adcd883653831e70b13b4c"></a>
<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 SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TensorShape &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 class="anchor" id="ac3850e0704ba9d6ef260170e87ca1e66"></a>
<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 SimpleTensor&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 TensorShape &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 class="anchor" id="a2c08fc82f2e4b9733cd0dacd6eabe579"></a>
<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 SimpleTensor&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">InterpolationPolicy&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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>Definition at line <a class="el" href="_c_p_p_2_scale_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="_c_p_p_2_scale_8cpp_source.xhtml">Scale.cpp</a>.</p>
<p>References <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a639aaa22a784d5e5cb03a522267e79c4">arm_compute::AREA</a>, <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65">arm_compute::BILINEAR</a>, <a class="el" href="tests_2validation_2_c_p_p_2_utils_8cpp_source.xhtml#l00036">arm_compute::test::validation::bilinear_policy()</a>, <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00201">arm_compute::clamp()</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a8d6b5cada83510220f59e00ce86d4d92">arm_compute::CONSTANT</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00337">arm_compute::test::coord2index()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="hwc_8hpp_source.xhtml#l00252">id</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00308">arm_compute::test::index2coord()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">arm_compute::NEAREST_NEIGHBOR</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa">arm_compute::REPLICATE</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00074">TensorShape::set()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="reduction__operation_8cl_source.xhtml#l00052">sum()</a>, <a class="el" href="tests_2validation_2_c_p_p_2_utils_8h_source.xhtml#l00046">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>
<p>Referenced by <a class="el" href="_c_p_p_2_box3x3_8cpp_source.xhtml#l00038">box3x3()</a>, <a class="el" href="dequantization__layer_8cl_source.xhtml#l00049">dequantization_layer()</a>, <a class="el" href="_c_p_p_2_gaussian3x3_8cpp_source.xhtml#l00038">gaussian3x3()</a>, <a class="el" href="_c_p_p_2_gaussian5x5_8cpp_source.xhtml#l00038">gaussian5x5()</a>, <a class="el" href="optical__flow__pyramid__lk_8cl_source.xhtml#l00094">init_level_max()</a>, <a class="el" href="optical__flow__pyramid__lk_8cl_source.xhtml#l00123">init_level_max_initial_estimate()</a>, <a class="el" href="cl__events_8cpp_source.xhtml#l00036">main_cl_events()</a>, <a class="el" href="neon__scale_8cpp_source.xhtml#l00032">main_neon_scale()</a>, <a class="el" href="neoncl__scale__median__gaussian_8cpp_source.xhtml#l00042">main_neoncl_scale_median_gaussian()</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00184">BorderSize::operator*()</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00174">BorderSize::operator*=()</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; TensorShape shape_scaled(in.shape());</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; shape_scaled.set(0, in.shape()[0] * scale_x);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; shape_scaled.set(1, in.shape()[1] * scale_y);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; SimpleTensor&lt;T&gt; out(shape_scaled, in.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 the ratio between source width/height and destination width/height</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wr = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(in.shape()[0]) / static_cast&lt;float&gt;(out.shape()[0]);</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> hr = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(in.shape()[1]) / static_cast&lt;float&gt;(out.shape()[1]);</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> width = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(in.shape().x());</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> height = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(in.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">// Area interpolation behaves as Nearest Neighbour in case of up-sampling</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span>(policy == InterpolationPolicy::AREA &amp;&amp; wr &lt;= 1.f &amp;&amp; hr &lt;= 1.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; policy = InterpolationPolicy::NEAREST_NEIGHBOR;</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">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="l00060"></a><span class="lineno"> 60</span>&#160; {</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</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="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">int</span> idx = <span class="keywordtype">id</span>.<a class="code" href="classarm__compute_1_1_dimensions.xhtml#afb5cd37bb08f1029691590372e6330f0">x</a>();</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">int</span> idy = <span class="keywordtype">id</span>.y();</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">float</span> x_src = (idx + 0.5f) * wr - 0.5f;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">float</span> y_src = (idy + 0.5f) * hr - 0.5f;</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">switch</span>(policy)</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">case</span> InterpolationPolicy::NEAREST_NEIGHBOR:</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 the source coords without -0.5f is equivalent to round the x_scr/y_src coords</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; x_src = (idx + 0.5f) * wr;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; y_src = (idy + 0.5f) * hr;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">id</span>.set(0, x_src);</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">id</span>.set(1, y_src);</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">// If coordinates in range of tensor&#39;s width or height</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span>(x_src &gt;= -1 || y_src &gt;= -1 || x_src &lt;= width || y_src &lt;= height)</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; 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>, border_mode, constant_border_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; <span class="keywordflow">if</span>(border_mode == BorderMode::CONSTANT)</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[element_idx] = constant_border_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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(border_mode == BorderMode::REPLICATE)</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="keywordtype">id</span>.set(0, <a class="code" href="namespacearm__compute.xhtml#a1c0b9414fe3a6ef6a7a23bd324ae9e67">clamp</a>(static_cast&lt;int&gt;(x_src), 0, width - 1));</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">id</span>.set(1, <a class="code" href="namespacearm__compute.xhtml#a1c0b9414fe3a6ef6a7a23bd324ae9e67">clamp</a>(static_cast&lt;int&gt;(y_src), 0, height - 1));</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; out[element_idx] = in[<a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(in.shape(), <a class="code" href="hwc_8hpp.xhtml#abaabdc509cdaba7df9f56c6c76f3ae19">id</a>)];</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">break</span>;</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">case</span> InterpolationPolicy::BILINEAR:</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="keywordtype">id</span>.set(0, std::floor(x_src));</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">id</span>.set(1, std::floor(y_src));</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span>(x_src &gt;= -1 || y_src &gt;= -1 || x_src &lt;= width || y_src &lt;= height)</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; 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, border_mode, constant_border_value);</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">else</span></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>(border_mode == BorderMode::CONSTANT)</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; out[element_idx] = constant_border_value;</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="keywordflow">else</span> <span class="keywordflow">if</span>(border_mode == BorderMode::REPLICATE)</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="keywordtype">id</span>.set(0, <a class="code" href="namespacearm__compute.xhtml#a1c0b9414fe3a6ef6a7a23bd324ae9e67">clamp</a>(static_cast&lt;int&gt;(x_src), 0, width - 1));</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordtype">id</span>.set(1, <a class="code" href="namespacearm__compute.xhtml#a1c0b9414fe3a6ef6a7a23bd324ae9e67">clamp</a>(static_cast&lt;int&gt;(y_src), 0, height - 1));</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; out[element_idx] = in[<a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(in.shape(), <a class="code" href="hwc_8hpp.xhtml#abaabdc509cdaba7df9f56c6c76f3ae19">id</a>)];</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; <span class="keywordflow">break</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="keywordflow">case</span> InterpolationPolicy::AREA:</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="keywordtype">int</span> x_from = std::floor(idx * wr - 0.5f - x_src);</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordtype">int</span> y_from = std::floor(idy * hr - 0.5f - y_src);</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordtype">int</span> x_to = std::ceil((idx + 1) * wr - 0.5f - x_src);</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordtype">int</span> y_to = std::ceil((idy + 1) * hr - 0.5f - y_src);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xi = std::floor(x_src);</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yi = std::floor(y_src);</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">// Clamp position to borders</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; x_src = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(-1.f, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(x_src, static_cast&lt;float&gt;(width)));</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; y_src = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(-1.f, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(y_src, static_cast&lt;float&gt;(height)));</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">// Clamp bounding box offsets to borders</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; x_from = ((x_src + x_from) &lt; -1) ? -1 : x_from;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; y_from = ((y_src + y_from) &lt; -1) ? -1 : y_from;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; x_to = ((x_src + x_to) &gt; width) ? (width - x_src) : x_to;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; y_to = ((y_src + y_to) &gt; height) ? (height - y_src) : y_to;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</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="l00139"></a><span class="lineno"> 139</span>&#160;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</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="l00141"></a><span class="lineno"> 141</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="l00142"></a><span class="lineno"> 142</span>&#160; {</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</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="l00144"></a><span class="lineno"> 144</span>&#160; {</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">id</span>.set(0, static_cast&lt;int&gt;(i));</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">id</span>.set(1, static_cast&lt;int&gt;(j));</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; sum += <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(in, <span class="keywordtype">id</span>, border_mode, constant_border_value);</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; out[element_idx] = sum / ((x_to - x_from + 1) * (y_to - y_from + 1));</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">break</span>;</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; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</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="l00156"></a><span class="lineno"> 156</span>&#160; }</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;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> out;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</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#l00031">Error.h:31</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_2_c_p_p_2_utils_8h_source.xhtml#l00046">Utils.h:46</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">FixedPoint.h:884</a></div></div>
<div class="ttc" id="hwc_8hpp_xhtml_abaabdc509cdaba7df9f56c6c76f3ae19"><div class="ttname"><a href="hwc_8hpp.xhtml#abaabdc509cdaba7df9f56c6c76f3ae19">id</a></div><div class="ttdeci">uint32_t id</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00252">hwc.hpp:252</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#l00052">reduction_operation.cl:52</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a1c0b9414fe3a6ef6a7a23bd324ae9e67"><div class="ttname"><a href="namespacearm__compute.xhtml#a1c0b9414fe3a6ef6a7a23bd324ae9e67">arm_compute::clamp</a></div><div class="ttdeci">T clamp(const T &amp;n, const T &amp;lower, const T &amp;upper)</div><div class="ttdoc">Performs clamping among a lower and upper value. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00201">Helpers.h:201</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#l00124">Error.h:124</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#l00337">Utils.h:337</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_afb5cd37bb08f1029691590372e6330f0"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#afb5cd37bb08f1029691590372e6330f0">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_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_2_c_p_p_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#l00308">Utils.h:308</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">FixedPoint.h:889</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a9daab5cda42ace9c365597bd108d0498"></a>
<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::scale </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&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">InterpolationPolicy&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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 class="anchor" id="a568158ce2891b0d97ddc5607150e27da"></a>
<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 SimpleTensor&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">InterpolationPolicy&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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">
</div>
</div>
<a class="anchor" id="ad00179f43330d2c67fc89d38d2b63f23"></a>
<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 SimpleTensor&lt; half &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">InterpolationPolicy&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#160;</td>
<td class="paramname"><em>border_mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">half&#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 class="anchor" id="a8d8a03a157fc437903c617f00416c3ad"></a>
<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 SimpleTensor&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">InterpolationPolicy&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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 class="anchor" id="ab2abc08344c057ffd1ae0043f7d005a6"></a>
<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 SimpleTensor&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">BorderMode&#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>Definition at line <a class="el" href="_c_p_p_2_sobel_8cpp_source.xhtml#l00106">106</a> of file <a class="el" href="_c_p_p_2_sobel_8cpp_source.xhtml">Sobel.cpp</a>.</p>
<p>References <a class="el" href="tests_2validation_2_c_p_p_2_utils_8h_source.xhtml#l00081">arm_compute::test::validation::apply_2d_spatial_filter()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00308">arm_compute::test::index2coord()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00355">arm_compute::test::is_in_valid_region()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00278">SimpleTensor&lt; T &gt;::num_channels()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00193">arm_compute::test::shape_to_valid_region()</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::UNDEFINED</a>, and <a class="el" href="hwc_8hpp_source.xhtml#l00269">value</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(src.shape(), <a class="code" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">data_type&lt;T&gt;::value</a>, src.num_channels());</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; SimpleTensor&lt;T&gt; dst_y(src.shape(), <a class="code" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">data_type&lt;T&gt;::value</a>, src.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 valid_region = <a class="code" href="namespacearm__compute_1_1test.xhtml#a4c9ad143c34306817986409ffb1dbd40">shape_to_valid_region</a>(src.shape(), border_mode == BorderMode::UNDEFINED, BorderSize(filter_size / 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; src.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>(src.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>(valid_region, 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;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a5d1175c32ed7ea771e8ea46c936ea5c7">apply_2d_spatial_filter</a>(coord, src, dst_x, TensorShape{ <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(filter_size), static_cast&lt;unsigned int&gt;(filter_size) }, masks.at(filter_size).first, 1.f, border_mode,</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; constant_border_value);</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, src, dst_y, TensorShape{ <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(filter_size), static_cast&lt;unsigned int&gt;(filter_size) }, masks.at(filter_size).second, 1.f, border_mode,</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; }</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">return</span> std::make_pair(dst_x, dst_y);</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div>
<div class="ttc" id="namespacearm__compute_1_1test_xhtml_a4c9ad143c34306817986409ffb1dbd40"><div class="ttname"><a href="namespacearm__compute_1_1test.xhtml#a4c9ad143c34306817986409ffb1dbd40">arm_compute::test::shape_to_valid_region</a></div><div class="ttdeci">ValidRegion shape_to_valid_region(TensorShape 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#l00193">Utils.h:193</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_2_c_p_p_2_utils_8h_source.xhtml#l00081">Utils.h:81</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#l00355">Utils.h:355</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#l00308">Utils.h:308</a></div></div>
<div class="ttc" id="hwc_8hpp_xhtml_a0f61d63b009d0880a89c843bd50d8d76"><div class="ttname"><a href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a></div><div class="ttdeci">void * value</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00269">hwc.hpp:269</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a9d96f3d086bf8a1996d8c1a7ddfd9794"></a>
<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 SimpleTensor&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">BorderMode&#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>Referenced by <a class="el" href="_c_l_2_sobel_8cpp_source.xhtml#l00052">arm_compute::test::validation::DATA_TEST_CASE()</a>.</p>
</div>
</div>
<a class="anchor" id="a856573f640c9c0f9b091299183597663"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="_c_p_p_2_softmax_layer_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_c_p_p_2_softmax_layer_8cpp_source.xhtml">SoftmaxLayer.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00311">SimpleTensor&lt; T &gt;::data()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00924">arm_compute::test::fixed_point_arithmetic::detail::exp()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00246">SimpleTensor&lt; T &gt;::fixed_point_position()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, and <a class="el" href="reduction__operation_8cl_source.xhtml#l00052">sum()</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; SimpleTensor&lt;T&gt; dst{ src.shape(), src.data_type(), 1, src.fixed_point_position() };</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">// Compute reference</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> cols = src.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> upper_dims = src.num_elements() / cols;</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="keyword">const</span> T *src_row_ptr = src.data() + r * cols;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; T *dst_row_ptr = dst.data() + r * cols;</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="comment">// Find max</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> T <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a> = *std::max_element(src_row_ptr, src_row_ptr + cols);</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">// Regularize</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; T <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>(0.f);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; std::transform(src_row_ptr, src_row_ptr + cols, dst_row_ptr, [&amp;<a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>, max](T val)</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> T res(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aa4e01e9be9adcc40a69a4da48fa83a43">std::exp</a>(val - max));</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a> += res;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> res;</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; <span class="comment">// Normalize</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::transform(dst_row_ptr, dst_row_ptr + cols, dst_row_ptr, [<a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>](T val)</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">return</span> val / <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</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; }</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> dst;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;}</div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aa4e01e9be9adcc40a69a4da48fa83a43"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aa4e01e9be9adcc40a69a4da48fa83a43">arm_compute::test::fixed_point_arithmetic::detail::exp</a></div><div class="ttdeci">fixed_point&lt; T &gt; exp(fixed_point&lt; T &gt; x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00924">FixedPoint.h:924</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#l00052">reduction_operation.cl:52</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">FixedPoint.h:889</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a32ff73221df59e6aa387eb062c456d5b"></a>
<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 SimpleTensor&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 class="anchor" id="a589da1eaf38c3806576f2cd0cf9105bc"></a>
<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 SimpleTensor&lt; half &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="af89324addc3fe39fb53f8b3ccf92ded3"></a>
<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#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a>&gt; arm_compute::test::validation::reference::softmax_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint8_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 class="anchor" id="a6c194e884eacf4e5388d468e773d0f53"></a>
<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#a1521eea74b97de8f2df9304e44179400">qint16_t</a>&gt; arm_compute::test::validation::reference::softmax_layer </td>
<td>(</td>
<td class="paramtype">const SimpleTensor&lt; qint16_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 class="anchor" id="a935c4b1c0ddcd108097e6a4a7fd520e8"></a>
<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 SimpleTensor&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>Definition at line <a class="el" href="_c_p_p_2_table_lookup_8cpp_source.xhtml#l00037">37</a> of file <a class="el" href="_c_p_p_2_table_lookup_8cpp_source.xhtml">TableLookup.cpp</a>.</p>
<p>References <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</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(src.shape(), src.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; src.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(src[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><!-- fragment -->
</div>
</div>
<a class="anchor" id="a3a87ef7fe41b158671d4cf7a511aebec"></a>
<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 SimpleTensor&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 class="anchor" id="a2860e24e7982ebd58891aae4d0a90ad0"></a>
<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 SimpleTensor&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 class="anchor" id="a6cae310822a46019ba25a00ddb0f7e62"></a>
<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 SimpleTensor&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">ThresholdType&#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>Definition at line <a class="el" href="_c_p_p_2_threshold_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_c_p_p_2_threshold_8cpp_source.xhtml">Threshold.cpp</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649a98ad0e8750ae10ad556ed7a62affb452">arm_compute::BINARY</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649a01036ddcc971d02f6c32c3da31a119f2">arm_compute::RANGE</a>, and <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>.</p>
<p>Referenced by <a class="el" href="fast__corners_8cl_source.xhtml#l00098">compute_strength()</a>, <a class="el" href="_c_l_2_harris_corners_8cpp_source.xhtml#l00057">arm_compute::test::validation::DATA_TEST_CASE()</a>, <a class="el" href="fast__corners_8cl_source.xhtml#l00155">fast_corners()</a>, and <a class="el" href="_harris_corner_detector_8cpp_source.xhtml#l00187">harris_corner_detector()</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; dst(src.shape(), src.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>(<a class="code" href="namespacemali__userspace.xhtml#ad44b615021ed3ccb734fcaf583ef4a03">type</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; <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; src.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; dst[i] = ((src[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; src.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>(src[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; dst[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>(src[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; dst[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; dst[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> dst;</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#l00031">Error.h:31</a></div></div>
<div class="ttc" id="namespacemali__userspace_xhtml_ad44b615021ed3ccb734fcaf583ef4a03"><div class="ttname"><a href="namespacemali__userspace.xhtml#ad44b615021ed3ccb734fcaf583ef4a03">mali_userspace::type</a></div><div class="ttdeci">uint32_t type</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00204">hwc.hpp:204</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><!-- fragment -->
</div>
</div>
<a class="anchor" id="a8a56f5d40af92249b49b8fabc89cfcd3"></a>
<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 SimpleTensor&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">ThresholdType&#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">
</div>
</div>
<a class="anchor" id="a3064cbee60ab97935e8d1df617f82b5c"></a>
<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">BorderMode&#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>Definition at line <a class="el" href="_c_p_p_2_warp_affine_8cpp_source.xhtml#l00036">36</a> of file <a class="el" href="_c_p_p_2_warp_affine_8cpp_source.xhtml">WarpAffine.cpp</a>.</p>
<p>References <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::UNDEFINED</a>.</p>
<p>Referenced by <a class="el" href="_c_p_p_2_warp_affine_8cpp_source.xhtml#l00050">warp_affine()</a>, and <a class="el" href="_c_p_p_2_warp_perspective_8cpp_source.xhtml#l00038">warp_perspective()</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>(border_mode != 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><!-- fragment -->
</div>
</div>
<a class="anchor" id="a97fb6802b7b8641c51fcc29aa03248ed"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">SimpleTensor&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">InterpolationPolicy&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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>Definition at line <a class="el" href="_c_p_p_2_warp_affine_8cpp_source.xhtml#l00050">50</a> of file <a class="el" href="_c_p_p_2_warp_affine_8cpp_source.xhtml">WarpAffine.cpp</a>.</p>
<p>References <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a639aaa22a784d5e5cb03a522267e79c4">arm_compute::AREA</a>, <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65">arm_compute::BILINEAR</a>, <a class="el" href="tests_2validation_2_c_p_p_2_utils_8cpp_source.xhtml#l00036">arm_compute::test::validation::bilinear_policy()</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a8d6b5cada83510220f59e00ce86d4d92">arm_compute::CONSTANT</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00337">arm_compute::test::coord2index()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="hwc_8hpp_source.xhtml#l00252">id</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00308">arm_compute::test::index2coord()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">arm_compute::NEAREST_NEIGHBOR</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa">arm_compute::REPLICATE</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="tests_2validation_2_c_p_p_2_utils_8h_source.xhtml#l00046">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_p_p_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 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; dst(src.shape(), src.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 = src.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 = src.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; src.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>(src.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#afb5cd37bb08f1029691590372e6330f0">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>(policy)</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; dst[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(src, <span class="keywordtype">id</span>, border_mode, 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, border_mode)) ? dst[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">bilinear_policy</a>(src, <span class="keywordtype">id</span>, x0, y0, border_mode, 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>(border_mode == 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>(policy)</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>(border_mode == 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; dst[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>(border_mode == 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, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(0, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(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, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(0, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(static_cast&lt;int&gt;(y0), height - 1)));</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; dst[element_idx] = src[<a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(src.shape(), <a class="code" href="hwc_8hpp.xhtml#abaabdc509cdaba7df9f56c6c76f3ae19">id</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">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; dst[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">bilinear_policy</a>(src, <span class="keywordtype">id</span>, x0, y0, border_mode, 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> dst;</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#l00031">Error.h:31</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_2_c_p_p_2_utils_8h_source.xhtml#l00046">Utils.h:46</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">FixedPoint.h:884</a></div></div>
<div class="ttc" id="hwc_8hpp_xhtml_abaabdc509cdaba7df9f56c6c76f3ae19"><div class="ttname"><a href="hwc_8hpp.xhtml#abaabdc509cdaba7df9f56c6c76f3ae19">id</a></div><div class="ttdeci">uint32_t id</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00252">hwc.hpp:252</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#l00337">Utils.h:337</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_afb5cd37bb08f1029691590372e6330f0"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#afb5cd37bb08f1029691590372e6330f0">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_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_2_c_p_p_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#l00308">Utils.h:308</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">FixedPoint.h:889</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="_c_p_p_2_warp_affine_8cpp_source.xhtml#l00036">WarpAffine.cpp:36</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="acec59b1e80034018a6a0880bf29a130d"></a>
<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 SimpleTensor&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">SimpleTensor&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">InterpolationPolicy&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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 class="anchor" id="a36be7020a6004680d96138fa8c300de7"></a>
<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 SimpleTensor&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">SimpleTensor&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">InterpolationPolicy&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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>Definition at line <a class="el" href="_c_p_p_2_warp_perspective_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_c_p_p_2_warp_perspective_8cpp_source.xhtml">WarpPerspective.cpp</a>.</p>
<p>References <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a639aaa22a784d5e5cb03a522267e79c4">arm_compute::AREA</a>, <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65">arm_compute::BILINEAR</a>, <a class="el" href="tests_2validation_2_c_p_p_2_utils_8cpp_source.xhtml#l00036">arm_compute::test::validation::bilinear_policy()</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a8d6b5cada83510220f59e00ce86d4d92">arm_compute::CONSTANT</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00337">arm_compute::test::coord2index()</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00265">SimpleTensor&lt; T &gt;::data_type()</a>, <a class="el" href="hwc_8hpp_source.xhtml#l00252">id</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00308">arm_compute::test::index2coord()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">arm_compute::NEAREST_NEIGHBOR</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00299">SimpleTensor&lt; T &gt;::num_elements()</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa">arm_compute::REPLICATE</a>, <a class="el" href="_simple_tensor_8h_source.xhtml#l00234">SimpleTensor&lt; T &gt;::shape()</a>, <a class="el" href="tests_2validation_2_c_p_p_2_utils_8h_source.xhtml#l00046">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_p_p_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 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; dst(src.shape(), src.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 = src.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 = src.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; src.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>(src.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#afb5cd37bb08f1029691590372e6330f0">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>(policy)</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; dst[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a4f489943d8618d47b1ad4611f0b9b7ff">tensor_elem_at</a>(src, <span class="keywordtype">id</span>, border_mode, 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, border_mode)) ? dst[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">bilinear_policy</a>(src, <span class="keywordtype">id</span>, xn, yn, border_mode, 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>(border_mode == 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>(policy)</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>(border_mode == 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; dst[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>(border_mode == 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, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(0, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(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, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(0, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(static_cast&lt;int&gt;(yn), height - 1)));</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; dst[element_idx] = src[<a class="code" href="namespacearm__compute_1_1test.xhtml#a9be4cb7e6ee20063a4a10bc3abb750b9">coord2index</a>(src.shape(), <a class="code" href="hwc_8hpp.xhtml#abaabdc509cdaba7df9f56c6c76f3ae19">id</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">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; dst[element_idx] = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a92fd4059750cbbeecd8ad03f279200e1">bilinear_policy</a>(src, <span class="keywordtype">id</span>, xn, yn, border_mode, 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> dst;</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#l00031">Error.h:31</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_2_c_p_p_2_utils_8h_source.xhtml#l00046">Utils.h:46</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00884">FixedPoint.h:884</a></div></div>
<div class="ttc" id="hwc_8hpp_xhtml_abaabdc509cdaba7df9f56c6c76f3ae19"><div class="ttname"><a href="hwc_8hpp.xhtml#abaabdc509cdaba7df9f56c6c76f3ae19">id</a></div><div class="ttdeci">uint32_t id</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00252">hwc.hpp:252</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#l00337">Utils.h:337</a></div></div>
<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_afb5cd37bb08f1029691590372e6330f0"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#afb5cd37bb08f1029691590372e6330f0">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_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_2_c_p_p_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#l00308">Utils.h:308</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_2_c_p_p_2_utils_8cpp_source.xhtml#l00098">Utils.cpp:98</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">FixedPoint.h:889</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a29ddb612c916a0cd4c57ec03ceffd9b9"></a>
<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 SimpleTensor&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">SimpleTensor&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">InterpolationPolicy&#160;</td>
<td class="paramname"><em>policy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BorderMode&#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>
</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 Thu Oct 12 2017 14:26:39 for Compute Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
</div>
</body>
</html>