aboutsummaryrefslogtreecommitdiff
path: root/Documentation/structarmnn_1_1_quantized_multiplier_smaller_than_one.html
diff options
context:
space:
mode:
authorRyan OShea <Ryan.OShea2@arm.com>2020-03-13 16:26:19 +0000
committerRyan OShea <Ryan.OShea2@arm.com>2020-03-13 16:26:19 +0000
commitde36e4a9c299028e792c3a5bd99ad0816d806077 (patch)
tree6c71d89db68da1033bb422253cee2970580ed692 /Documentation/structarmnn_1_1_quantized_multiplier_smaller_than_one.html
parent78b26f024641e763c7252198339c83bad8c0982f (diff)
downloadarmnn-de36e4a9c299028e792c3a5bd99ad0816d806077.tar.gz
IVGCVSW-3726 Upload ArmNN Doxygen files
* Upload current ArmNN Doxygen files Signed-off-by: Ryan OShea <Ryan.OShea2@arm.com> Change-Id: I8989ed16ee40a99a4495b100bd009cf3e24a7285
Diffstat (limited to 'Documentation/structarmnn_1_1_quantized_multiplier_smaller_than_one.html')
-rw-r--r--Documentation/structarmnn_1_1_quantized_multiplier_smaller_than_one.html166
1 files changed, 166 insertions, 0 deletions
diff --git a/Documentation/structarmnn_1_1_quantized_multiplier_smaller_than_one.html b/Documentation/structarmnn_1_1_quantized_multiplier_smaller_than_one.html
new file mode 100644
index 0000000000..f4ecfdf609
--- /dev/null
+++ b/Documentation/structarmnn_1_1_quantized_multiplier_smaller_than_one.html
@@ -0,0 +1,166 @@
+<!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.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>ArmNN: QuantizedMultiplierSmallerThanOne Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<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 id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">ArmNN
+ &#160;<span id="projectnumber">NotReleased</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('structarmnn_1_1_quantized_multiplier_smaller_than_one.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="structarmnn_1_1_quantized_multiplier_smaller_than_one-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">QuantizedMultiplierSmallerThanOne Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="_conv_impl_8hpp_source.html">ConvImpl.hpp</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a1ec4f749fbbdacbe2cc7e8895d5b65ed"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_multiplier_smaller_than_one.html#a1ec4f749fbbdacbe2cc7e8895d5b65ed">QuantizedMultiplierSmallerThanOne</a> (float multiplier)</td></tr>
+<tr class="separator:a1ec4f749fbbdacbe2cc7e8895d5b65ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac04834893e568dfea4642ecb575faed8"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_multiplier_smaller_than_one.html#ac04834893e568dfea4642ecb575faed8">operator*</a> (int32_t rhs) const</td></tr>
+<tr class="memdesc:ac04834893e568dfea4642ecb575faed8"><td class="mdescLeft">&#160;</td><td class="mdescRight">The implementation of this function is adapted from Android NN's MultiplyByQuantizedMultiplierSmallerThanOne(). <a href="#ac04834893e568dfea4642ecb575faed8">More...</a><br /></td></tr>
+<tr class="separator:ac04834893e568dfea4642ecb575faed8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Performs multiplication of an integer with a multiplier which is less than one, using quantized integer arithmetic which is consistent with AndroidNN's CPU executor. </p>
+
+<p class="definition">Definition at line <a class="el" href="_conv_impl_8hpp_source.html#l00029">29</a> of file <a class="el" href="_conv_impl_8hpp_source.html">ConvImpl.hpp</a>.</p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a1ec4f749fbbdacbe2cc7e8895d5b65ed"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1ec4f749fbbdacbe2cc7e8895d5b65ed">&#9670;&nbsp;</a></span>QuantizedMultiplierSmallerThanOne()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structarmnn_1_1_quantized_multiplier_smaller_than_one.html">QuantizedMultiplierSmallerThanOne</a> </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>multiplier</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Constructs a <a class="el" href="structarmnn_1_1_quantized_multiplier_smaller_than_one.html">QuantizedMultiplierSmallerThanOne</a> which will multiply by the given multiplier. This stores the appropriate integer quantities (derived from the given multiplier) for later use. The implementation of this function is adapted from Android NN's QuantizeMultiplierSmallerThanOne(). </p>
+
+<p class="definition">Definition at line <a class="el" href="_conv_impl_8cpp_source.html#l00016">16</a> of file <a class="el" href="_conv_impl_8cpp_source.html">ConvImpl.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; BOOST_ASSERT(multiplier &gt;= 0.0f &amp;&amp; multiplier &lt; 1.0f);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">if</span> (multiplier == 0.0f)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; m_Multiplier = 0;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; m_RightShift = 0;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; }</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> q = std::frexp(multiplier, &amp;m_RightShift);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; m_RightShift = -m_RightShift;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; int64_t qFixed = <span class="keyword">static_cast&lt;</span>int64_t<span class="keyword">&gt;</span>(std::round(q * (1ll &lt;&lt; 31)));</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; BOOST_ASSERT(qFixed &lt;= (1ll &lt;&lt; 31));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">if</span> (qFixed == (1ll &lt;&lt; 31))</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; qFixed /= 2;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; --m_RightShift;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; BOOST_ASSERT(m_RightShift &gt;= 0);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; BOOST_ASSERT(qFixed &lt;= std::numeric_limits&lt;int32_t&gt;::max());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; m_Multiplier = <span class="keyword">static_cast&lt;</span>int32_t<span class="keyword">&gt;</span>(qFixed);</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;}</div></div><!-- fragment -->
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="ac04834893e568dfea4642ecb575faed8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac04834893e568dfea4642ecb575faed8">&#9670;&nbsp;</a></span>operator*()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int32_t operator* </td>
+ <td>(</td>
+ <td class="paramtype">int32_t&#160;</td>
+ <td class="paramname"><em>rhs</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>The implementation of this function is adapted from Android NN's MultiplyByQuantizedMultiplierSmallerThanOne(). </p>
+
+<p class="definition">Definition at line <a class="el" href="_conv_impl_8cpp_source.html#l00041">41</a> of file <a class="el" href="_conv_impl_8cpp_source.html">ConvImpl.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; int32_t x = SaturatingRoundingDoublingHighMul(rhs, m_Multiplier);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> RoundingDivideByPOT(x, m_RightShift);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div></div><!-- fragment -->
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following files:<ul>
+<li>src/backends/reference/workloads/<a class="el" href="_conv_impl_8hpp_source.html">ConvImpl.hpp</a></li>
+<li>src/backends/reference/workloads/<a class="el" href="_conv_impl_8cpp_source.html">ConvImpl.cpp</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="namespacearmnn.html">armnn</a></li><li class="navelem"><a class="el" href="structarmnn_1_1_quantized_multiplier_smaller_than_one.html">QuantizedMultiplierSmallerThanOne</a></li>
+ <li class="footer">Generated on Fri Mar 13 2020 16:07:04 for ArmNN by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
+ </ul>
+</div>
+</body>
+</html>