blob: 49193b94877287e2468afb254ebc7361a2d810f4 [file] [log] [blame]
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001<!-- HTML header for doxygen 1.8.9.1-->
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4<head>
5<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.8.11"/>
8<meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
9<title>Compute Library: src/core/CL/cl_kernels/helpers_asymm.h File Reference</title>
10<link href="tabs.css" rel="stylesheet" type="text/css"/>
11<script type="text/javascript" src="jquery.js"></script>
12<script type="text/javascript" src="dynsections.js"></script>
13<link href="navtree.css" rel="stylesheet" type="text/css"/>
14<script type="text/javascript" src="resize.js"></script>
15<script type="text/javascript" src="navtreedata.js"></script>
16<script type="text/javascript" src="navtree.js"></script>
17<script type="text/javascript">
18 $(document).ready(initResizable);
19 $(window).load(resizeHeight);
20</script>
21<link href="search/search.css" rel="stylesheet" type="text/css"/>
22<script type="text/javascript" src="search/searchdata.js"></script>
23<script type="text/javascript" src="search/search.js"></script>
24<script type="text/javascript">
25 $(document).ready(function() { init_search(); });
26</script>
27<script type="text/x-mathjax-config">
28 MathJax.Hub.Config({
29 extensions: ["tex2jax.js"],
30 jax: ["input/TeX","output/HTML-CSS"],
31});
32</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
33<link href="doxygen.css" rel="stylesheet" type="text/css" />
34</head>
35<body>
36<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
37<div id="titlearea">
38<table cellspacing="0" cellpadding="0">
39 <tbody>
40 <tr style="height: 56px;">
41 <td style="padding-left: 0.5em;">
42 <div id="projectname">Compute Library
Jenkins52ba29e2018-08-29 15:32:11 +000043 &#160;<span id="projectnumber">18.08</span>
Anthony Barbier8140e1e2017-12-14 23:48:46 +000044 </div>
45 </td>
46 </tr>
47 </tbody>
48</table>
49</div>
50<!-- end header part -->
51<!-- Generated by Doxygen 1.8.11 -->
52<script type="text/javascript">
53var searchBox = new SearchBox("searchBox", "search",false,'Search');
54</script>
55 <div id="navrow1" class="tabs">
56 <ul class="tablist">
57 <li><a href="index.xhtml"><span>Main&#160;Page</span></a></li>
58 <li><a href="pages.xhtml"><span>Related&#160;Pages</span></a></li>
59 <li><a href="namespaces.xhtml"><span>Namespaces</span></a></li>
60 <li><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
61 <li class="current"><a href="files.xhtml"><span>Files</span></a></li>
62 <li>
63 <div id="MSearchBox" class="MSearchBoxInactive">
64 <span class="left">
65 <img id="MSearchSelect" src="search/mag_sel.png"
66 onmouseover="return searchBox.OnSearchSelectShow()"
67 onmouseout="return searchBox.OnSearchSelectHide()"
68 alt=""/>
69 <input type="text" id="MSearchField" value="Search" accesskey="S"
70 onfocus="searchBox.OnSearchFieldFocus(true)"
71 onblur="searchBox.OnSearchFieldFocus(false)"
72 onkeyup="searchBox.OnSearchFieldChange(event)"/>
73 </span><span class="right">
74 <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
75 </span>
76 </div>
77 </li>
78 </ul>
79 </div>
80 <div id="navrow2" class="tabs2">
81 <ul class="tablist">
82 <li><a href="files.xhtml"><span>File&#160;List</span></a></li>
83 <li><a href="globals.xhtml"><span>Globals</span></a></li>
84 </ul>
85 </div>
86</div><!-- top -->
87<div id="side-nav" class="ui-resizable side-nav-resizable">
88 <div id="nav-tree">
89 <div id="nav-tree-contents">
90 <div id="nav-sync" class="sync"></div>
91 </div>
92 </div>
93 <div id="splitbar" style="-moz-user-select:none;"
94 class="ui-resizable-handle">
95 </div>
96</div>
97<script type="text/javascript">
98$(document).ready(function(){initNavTree('helpers__asymm_8h.xhtml','');});
99</script>
100<div id="doc-content">
101<!-- window showing the filter options -->
102<div id="MSearchSelectWindow"
103 onmouseover="return searchBox.OnSearchSelectShow()"
104 onmouseout="return searchBox.OnSearchSelectHide()"
105 onkeydown="return searchBox.OnSearchSelectKey(event)">
106</div>
107
108<!-- iframe showing the search results (closed by default) -->
109<div id="MSearchResultsWindow">
110<iframe src="javascript:void(0)" frameborder="0"
111 name="MSearchResults" id="MSearchResults">
112</iframe>
113</div>
114
115<div class="header">
116 <div class="summary">
117<a href="#define-members">Macros</a> &#124;
118<a href="#func-members">Functions</a> </div>
119 <div class="headertitle">
120<div class="title">helpers_asymm.h File Reference</div> </div>
121</div><!--header-->
122<div class="contents">
123<div class="textblock"><code>#include &quot;<a class="el" href="helpers_8h_source.xhtml">helpers.h</a>&quot;</code><br />
124</div>
125<p><a href="helpers__asymm_8h_source.xhtml">Go to the source code of this file.</a></p>
126<table class="memberdecls">
127<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
128Macros</h2></td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100129<tr class="memitem:abf75e242631b23007e4046682aa57ec5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#abf75e242631b23007e4046682aa57ec5">ASYMM_ROUNDING_DIVIDE_BY_POW2_IMPL</a>(size)</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000130<tr class="memdesc:abf75e242631b23007e4046682aa57ec5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Correctly-rounded-to-nearest division by a power-of-two. <a href="#abf75e242631b23007e4046682aa57ec5">More...</a><br /></td></tr>
131<tr class="separator:abf75e242631b23007e4046682aa57ec5"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100132<tr class="memitem:ad4b199221927cbabbf859e4d2efb688d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ad4b199221927cbabbf859e4d2efb688d">ASYMM_MULT_IMPL</a>(size)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000133<tr class="memdesc:ad4b199221927cbabbf859e4d2efb688d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Product of two numbers, interpreting them as fixed-point values in the interval [-1, 1), rounding to the nearest value, and saturating -1 * -1 to the maximum value. <a href="#ad4b199221927cbabbf859e4d2efb688d">More...</a><br /></td></tr>
134<tr class="separator:ad4b199221927cbabbf859e4d2efb688d"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100135<tr class="memitem:a3d8a3968a069eb8abbc28d31c20f6b8c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a3d8a3968a069eb8abbc28d31c20f6b8c">ASYMM_EXP_ON_INTERVAL_BETWEEN_NEGATIVE_ONE_QUARTER_AND_0_EXCL_IMPL</a>(size)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000136<tr class="memdesc:a3d8a3968a069eb8abbc28d31c20f6b8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates \( exp(x) \) for x in [-1/4, 0). <a href="#a3d8a3968a069eb8abbc28d31c20f6b8c">More...</a><br /></td></tr>
137<tr class="separator:a3d8a3968a069eb8abbc28d31c20f6b8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100138<tr class="memitem:ab0b4069b25ac886d5cb6eb3b76473f88"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ab0b4069b25ac886d5cb6eb3b76473f88">ASYMM_SELECT_USING_MASK_IMPL</a>(size)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000139<tr class="memdesc:ab0b4069b25ac886d5cb6eb3b76473f88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Each bit of the result is set to the corresponding bit of either then_val or else_val depending on whether the corresponding bit of if_mask is set. <a href="#ab0b4069b25ac886d5cb6eb3b76473f88">More...</a><br /></td></tr>
140<tr class="separator:ab0b4069b25ac886d5cb6eb3b76473f88"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100141<tr class="memitem:a8c47a92ec76a1e367b45305c17d9ea88"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a8c47a92ec76a1e367b45305c17d9ea88">ASYMM_MASK_IF_ZERO_IMPL</a>(size)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000142<tr class="memdesc:a8c47a92ec76a1e367b45305c17d9ea88"><td class="mdescLeft">&#160;</td><td class="mdescRight">For each element of input vector, the corresponding bits of the result item are set if the input item is zero. <a href="#a8c47a92ec76a1e367b45305c17d9ea88">More...</a><br /></td></tr>
143<tr class="separator:a8c47a92ec76a1e367b45305c17d9ea88"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100144<tr class="memitem:a6dd3d8d22942f0ff3e59b4e32cfd4de3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a6dd3d8d22942f0ff3e59b4e32cfd4de3">ASYMM_MASK_IF_NON_ZERO_IMPL</a>(size)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000145<tr class="memdesc:a6dd3d8d22942f0ff3e59b4e32cfd4de3"><td class="mdescLeft">&#160;</td><td class="mdescRight">For each element of input vector, the corresponding bits of the result item are set if the input item is non-zero. <a href="#a6dd3d8d22942f0ff3e59b4e32cfd4de3">More...</a><br /></td></tr>
146<tr class="separator:a6dd3d8d22942f0ff3e59b4e32cfd4de3"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100147<tr class="memitem:aa12ca21cb9a54d2e4c26d57303fe44a7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aa12ca21cb9a54d2e4c26d57303fe44a7">EXP_BARREL_SHIFTER_IMPL</a>(size)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000148<tr class="separator:aa12ca21cb9a54d2e4c26d57303fe44a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100149<tr class="memitem:a4d0a02b30d8cc5725d0a11781b488852"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a4d0a02b30d8cc5725d0a11781b488852">ASYMM_EXP_ON_NEGATIVE_VALUES_IMPL</a>(size)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000150<tr class="memdesc:a4d0a02b30d8cc5725d0a11781b488852"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates \( exp(x) \) for x &lt; 0. <a href="#a4d0a02b30d8cc5725d0a11781b488852">More...</a><br /></td></tr>
151<tr class="separator:a4d0a02b30d8cc5725d0a11781b488852"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100152<tr class="memitem:a737312bc4a68c79a77cfab4849793bc0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a737312bc4a68c79a77cfab4849793bc0">ASYMM_SATURATING_ROUNDING_MULT_BY_POW2_IMPL</a>(size)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000153<tr class="memdesc:a737312bc4a68c79a77cfab4849793bc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the product of a integer value by a power of two, with either a positive exponent (equivalent to an arithmetic left shift, saturating) or a negative exponent (equivalent to an arithmetic right shift, rounding to nearest). <a href="#a737312bc4a68c79a77cfab4849793bc0">More...</a><br /></td></tr>
154<tr class="separator:a737312bc4a68c79a77cfab4849793bc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100155<tr class="memitem:a8d97c6698c0e44424deae3f3130c55ac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a8d97c6698c0e44424deae3f3130c55ac">ASYMM_ROUNDING_HALF_SUM_IMPL</a>(size)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000156<tr class="memdesc:a8d97c6698c0e44424deae3f3130c55ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates (a+b)/2, rounded to the nearest integer. <a href="#a8d97c6698c0e44424deae3f3130c55ac">More...</a><br /></td></tr>
157<tr class="separator:a8d97c6698c0e44424deae3f3130c55ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100158<tr class="memitem:a0e53aa5d4cbcec7a0c0085838f32453d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a0e53aa5d4cbcec7a0c0085838f32453d">ASYMM_ONE_OVER_ONE_PLUS_X_FOR_X_IN_0_1_IMPL</a>(size)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000159<tr class="memdesc:a0e53aa5d4cbcec7a0c0085838f32453d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates \( 1 / (1 + x) \) for x in (0, 1). <a href="#a0e53aa5d4cbcec7a0c0085838f32453d">More...</a><br /></td></tr>
160<tr class="separator:a0e53aa5d4cbcec7a0c0085838f32453d"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100161<tr class="memitem:aace85e2a32bacdaa4e2d2055deabfc57"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aace85e2a32bacdaa4e2d2055deabfc57">ASYMM_RESCALE_IMPL</a>(size)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000162<tr class="memdesc:aace85e2a32bacdaa4e2d2055deabfc57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Considering the integer value as fixed-point, change the number of integer bits and update value accordingly. <a href="#aace85e2a32bacdaa4e2d2055deabfc57">More...</a><br /></td></tr>
163<tr class="separator:aace85e2a32bacdaa4e2d2055deabfc57"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100164<tr class="memitem:aa43fc359dea64362f3016384f4269845"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aa43fc359dea64362f3016384f4269845">ASYMM_ROUNDING_DIVIDE_BY_POW2</a>(x, exponent, size)&#160;&#160;&#160;asymm_rounding_divide_by_POW2_##size(x, exponent)</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000165<tr class="separator:aa43fc359dea64362f3016384f4269845"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100166<tr class="memitem:a5483aefd5e07244661178bfd3f434448"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a5483aefd5e07244661178bfd3f434448">ASYMM_MULT</a>(a, b, size)&#160;&#160;&#160;<a class="el" href="softmax__layer__quantized_8cl.xhtml#a525a42d38133b1051b8924b456add4a1">asymm_mult</a>##size(a, b)</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000167<tr class="separator:a5483aefd5e07244661178bfd3f434448"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100168<tr class="memitem:a86de0ffca367bfcf27a8ae5dd1fdef2d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a86de0ffca367bfcf27a8ae5dd1fdef2d">ASYMM_MULT_BY_QUANT_MULTIPLIER_LESS_THAN_ONE</a>(x, quantized_multiplier, right_shift, size)&#160;&#160;&#160;<a class="el" href="helpers__asymm_8h.xhtml#aa43fc359dea64362f3016384f4269845">ASYMM_ROUNDING_DIVIDE_BY_POW2</a>(<a class="el" href="helpers__asymm_8h.xhtml#a5483aefd5e07244661178bfd3f434448">ASYMM_MULT</a>(x, quantized_multiplier, size), right_shift, size)</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000169<tr class="separator:a86de0ffca367bfcf27a8ae5dd1fdef2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100170<tr class="memitem:aeebdcd88f4320931cd4a599ad1527e83"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aeebdcd88f4320931cd4a599ad1527e83">ASYMM_EXP_ON_INTERVAL_BETWEEN_NEGATIVE_ONE_QUARTER_AND_0_EXCL</a>(a, size)&#160;&#160;&#160;asymm_exp_on_interval_between_negative_one_quarter_and_0_excl##size(a)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000171<tr class="separator:aeebdcd88f4320931cd4a599ad1527e83"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100172<tr class="memitem:a9bc08a8c1833c5e6055ad6665e3ccf12"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a9bc08a8c1833c5e6055ad6665e3ccf12">ASYMM_SELECT_USING_MASK</a>(if_mask, then_val, else_val, size)&#160;&#160;&#160;asymm_select_using_mask##size(if_mask, then_val, else_val)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000173<tr class="separator:a9bc08a8c1833c5e6055ad6665e3ccf12"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100174<tr class="memitem:afc6a76528024472919bb5d50d067578b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#afc6a76528024472919bb5d50d067578b">ASYMM_MASK_IF_ZERO</a>(a, size)&#160;&#160;&#160;asymm_mask_if_zero##size(a)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000175<tr class="separator:afc6a76528024472919bb5d50d067578b"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100176<tr class="memitem:af1d5450c9c4c13a6b7aa52af197b54b2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#af1d5450c9c4c13a6b7aa52af197b54b2">ASYMM_MASK_IF_NON_ZERO</a>(a, size)&#160;&#160;&#160;asymm_mask_if_non_zero##size(a)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000177<tr class="separator:af1d5450c9c4c13a6b7aa52af197b54b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100178<tr class="memitem:ace9ecff421cf885ad2c2d72d87c492cb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ace9ecff421cf885ad2c2d72d87c492cb">EXP_BARREL_SHIFTER</a>(result, exponent, fp_multiplier, k_integer_bits, k_fractional_bits, remainder, size)&#160;&#160;&#160;exp_barrel_shifter##size(result, exponent, fp_multiplier, k_integer_bits, k_fractional_bits, remainder)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000179<tr class="separator:ace9ecff421cf885ad2c2d72d87c492cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100180<tr class="memitem:a3a4f1b5d8f1cd67ac31bc62c9a6f4aa8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a3a4f1b5d8f1cd67ac31bc62c9a6f4aa8">ASYMM_EXP_ON_NEGATIVE_VALUES</a>(a, k_integer_bits, size)&#160;&#160;&#160;<a class="el" href="softmax__layer__quantized_8cl.xhtml#a54aedfa17c5ac2567107d5f488b0f4af">asymm_exp_on_negative_values</a>##size(a, k_integer_bits)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000181<tr class="separator:a3a4f1b5d8f1cd67ac31bc62c9a6f4aa8"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100182<tr class="memitem:ae77f34e1316d52c1ee84c35be9efb0d8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ae77f34e1316d52c1ee84c35be9efb0d8">ASYMM_ONE_OVER_ONE_PLUS_X_FOR_X_IN_0_1</a>(a, size)&#160;&#160;&#160;asymm_one_over_one_plus_x_for_x_in_0_1##size(a)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000183<tr class="separator:ae77f34e1316d52c1ee84c35be9efb0d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100184<tr class="memitem:a4cc3ff3a2eeb5f5e9d6743e08f632928"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a4cc3ff3a2eeb5f5e9d6743e08f632928">ASYMM_SATURATING_ROUNDING_MULT_BY_POW2</a>(x, exponent, size)&#160;&#160;&#160;asymm_saturating_rounding_mult_by_pow2##size(x, exponent)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000185<tr class="separator:a4cc3ff3a2eeb5f5e9d6743e08f632928"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100186<tr class="memitem:ad47fa44c1566aa4678fe524478490612"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ad47fa44c1566aa4678fe524478490612">ASYMM_ROUNDING_HALF_SUM</a>(a, b, size)&#160;&#160;&#160;asymm_rounding_half_sum##size(a, b)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000187<tr class="separator:ad47fa44c1566aa4678fe524478490612"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100188<tr class="memitem:a98585f1bb84dea90aecbf59785c46151"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a98585f1bb84dea90aecbf59785c46151">ASYMM_RESCALE</a>(value, src_integer_bits, dst_integer_bits, size)&#160;&#160;&#160;<a class="el" href="softmax__layer__quantized_8cl.xhtml#ad57ea340cdcfeb2e1375b70c3ae59bae">asymm_rescale</a>##size(value, src_integer_bits, dst_integer_bits)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000189<tr class="separator:a98585f1bb84dea90aecbf59785c46151"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000190</table><table class="memberdecls">
191<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
192Functions</h2></td></tr>
193<tr class="memitem:ae62b2416b40ca28724c065e95e18a25b"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ae62b2416b40ca28724c065e95e18a25b">asymm_rounding_divide_by_POW2_2</a> (int2 x, int exponent)</td></tr>
194<tr class="separator:ae62b2416b40ca28724c065e95e18a25b"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000195<tr class="memitem:a2660d5193f286b247cf533d8ca234e77"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a2660d5193f286b247cf533d8ca234e77">asymm_rounding_divide_by_POW2_4</a> (int4 x, int exponent)</td></tr>
196<tr class="separator:a2660d5193f286b247cf533d8ca234e77"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000197<tr class="memitem:a38afb1b30447264fd62ca7ad86e7ea19"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a38afb1b30447264fd62ca7ad86e7ea19">asymm_rounding_divide_by_POW2_8</a> (int8 x, int exponent)</td></tr>
198<tr class="separator:a38afb1b30447264fd62ca7ad86e7ea19"><td class="memSeparator" colspan="2">&#160;</td></tr>
199<tr class="memitem:a21d65cd6ac14696d58509b82789db845"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a21d65cd6ac14696d58509b82789db845">asymm_rounding_divide_by_POW2_16</a> (int16 x, int exponent)</td></tr>
200<tr class="separator:a21d65cd6ac14696d58509b82789db845"><td class="memSeparator" colspan="2">&#160;</td></tr>
201<tr class="memitem:a5038b78913b76d782cc0aa0d841bd7ed"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a5038b78913b76d782cc0aa0d841bd7ed">asymm_mult2</a> (int2 a, int2 b)</td></tr>
202<tr class="separator:a5038b78913b76d782cc0aa0d841bd7ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000203<tr class="memitem:a6dca28649388d59ec0281af70d4507b2"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a6dca28649388d59ec0281af70d4507b2">asymm_mult4</a> (int4 a, int4 b)</td></tr>
204<tr class="separator:a6dca28649388d59ec0281af70d4507b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000205<tr class="memitem:a165b0bbab841712ea2c9a17a09bfa166"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a165b0bbab841712ea2c9a17a09bfa166">asymm_mult8</a> (int8 a, int8 b)</td></tr>
206<tr class="separator:a165b0bbab841712ea2c9a17a09bfa166"><td class="memSeparator" colspan="2">&#160;</td></tr>
207<tr class="memitem:aef32e3a9c804f145deb6b88f0a444919"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aef32e3a9c804f145deb6b88f0a444919">asymm_mult16</a> (int16 a, int16 b)</td></tr>
208<tr class="separator:aef32e3a9c804f145deb6b88f0a444919"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000209<tr class="memitem:a8eb88d417247a1b8b8929e5c8faeb48d"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a8eb88d417247a1b8b8929e5c8faeb48d">asymm_exp_on_interval_between_negative_one_quarter_and_0_excl2</a> (int2 a)</td></tr>
210<tr class="separator:a8eb88d417247a1b8b8929e5c8faeb48d"><td class="memSeparator" colspan="2">&#160;</td></tr>
211<tr class="memitem:a43aa0011bd9b23ce3f691a9ae205fe07"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a43aa0011bd9b23ce3f691a9ae205fe07">asymm_exp_on_interval_between_negative_one_quarter_and_0_excl4</a> (int4 a)</td></tr>
212<tr class="separator:a43aa0011bd9b23ce3f691a9ae205fe07"><td class="memSeparator" colspan="2">&#160;</td></tr>
213<tr class="memitem:accb6ee0e0c578704ae23e6ab0a57cdd0"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#accb6ee0e0c578704ae23e6ab0a57cdd0">asymm_exp_on_interval_between_negative_one_quarter_and_0_excl8</a> (int8 a)</td></tr>
214<tr class="separator:accb6ee0e0c578704ae23e6ab0a57cdd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
215<tr class="memitem:a1d51b02a83af2a152fa52755f572f5a6"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a1d51b02a83af2a152fa52755f572f5a6">asymm_exp_on_interval_between_negative_one_quarter_and_0_excl16</a> (int16 a)</td></tr>
216<tr class="separator:a1d51b02a83af2a152fa52755f572f5a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
217<tr class="memitem:a0dade5bb9ed9aae49b6bb2875e273d89"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a0dade5bb9ed9aae49b6bb2875e273d89">asymm_select_using_mask2</a> (int2 if_mask, int2 then_val, int2 else_val)</td></tr>
218<tr class="separator:a0dade5bb9ed9aae49b6bb2875e273d89"><td class="memSeparator" colspan="2">&#160;</td></tr>
219<tr class="memitem:a44e4d74ed42006c4153a9cb6c97285de"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a44e4d74ed42006c4153a9cb6c97285de">asymm_select_using_mask4</a> (int4 if_mask, int4 then_val, int4 else_val)</td></tr>
220<tr class="separator:a44e4d74ed42006c4153a9cb6c97285de"><td class="memSeparator" colspan="2">&#160;</td></tr>
221<tr class="memitem:a64682bc22716ad771d012ce4c7398652"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a64682bc22716ad771d012ce4c7398652">asymm_select_using_mask8</a> (int8 if_mask, int8 then_val, int8 else_val)</td></tr>
222<tr class="separator:a64682bc22716ad771d012ce4c7398652"><td class="memSeparator" colspan="2">&#160;</td></tr>
223<tr class="memitem:a7effd9e7de9fefa9d4ae4eb2cfc06090"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a7effd9e7de9fefa9d4ae4eb2cfc06090">asymm_select_using_mask16</a> (int16 if_mask, int16 then_val, int16 else_val)</td></tr>
224<tr class="separator:a7effd9e7de9fefa9d4ae4eb2cfc06090"><td class="memSeparator" colspan="2">&#160;</td></tr>
225<tr class="memitem:a6ed499c821cf4f6b3bc4049d49e35139"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a6ed499c821cf4f6b3bc4049d49e35139">asymm_mask_if_zero2</a> (int2 a)</td></tr>
226<tr class="separator:a6ed499c821cf4f6b3bc4049d49e35139"><td class="memSeparator" colspan="2">&#160;</td></tr>
227<tr class="memitem:aed95c68d9545d401d2323cd8ad287fe1"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aed95c68d9545d401d2323cd8ad287fe1">asymm_mask_if_zero4</a> (int4 a)</td></tr>
228<tr class="separator:aed95c68d9545d401d2323cd8ad287fe1"><td class="memSeparator" colspan="2">&#160;</td></tr>
229<tr class="memitem:abefb0a278a588f03dc561db900df0958"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#abefb0a278a588f03dc561db900df0958">asymm_mask_if_zero8</a> (int8 a)</td></tr>
230<tr class="separator:abefb0a278a588f03dc561db900df0958"><td class="memSeparator" colspan="2">&#160;</td></tr>
231<tr class="memitem:a509916b7ee582d87faf1312fde111c3b"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a509916b7ee582d87faf1312fde111c3b">asymm_mask_if_zero16</a> (int16 a)</td></tr>
232<tr class="separator:a509916b7ee582d87faf1312fde111c3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
233<tr class="memitem:a885a16f240b119acc9f0721c07acdce9"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a885a16f240b119acc9f0721c07acdce9">asymm_mask_if_non_zero2</a> (int2 a)</td></tr>
234<tr class="separator:a885a16f240b119acc9f0721c07acdce9"><td class="memSeparator" colspan="2">&#160;</td></tr>
235<tr class="memitem:a2f180955030087d7538d5dc89f29eba9"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a2f180955030087d7538d5dc89f29eba9">asymm_mask_if_non_zero4</a> (int4 a)</td></tr>
236<tr class="separator:a2f180955030087d7538d5dc89f29eba9"><td class="memSeparator" colspan="2">&#160;</td></tr>
237<tr class="memitem:a8de81d453a39d0f589b0d3e007c7fde1"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a8de81d453a39d0f589b0d3e007c7fde1">asymm_mask_if_non_zero8</a> (int8 a)</td></tr>
238<tr class="separator:a8de81d453a39d0f589b0d3e007c7fde1"><td class="memSeparator" colspan="2">&#160;</td></tr>
239<tr class="memitem:a1e1fef1353d2458beb7fab06cc8f460e"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a1e1fef1353d2458beb7fab06cc8f460e">asymm_mask_if_non_zero16</a> (int16 a)</td></tr>
240<tr class="separator:a1e1fef1353d2458beb7fab06cc8f460e"><td class="memSeparator" colspan="2">&#160;</td></tr>
241<tr class="memitem:ad12110cc5f3099fa90b631e7b05772a0"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ad12110cc5f3099fa90b631e7b05772a0">exp_barrel_shifter2</a> (int2 result, int exponent, int fp_multiplier, int k_integer_bits, int k_fractional_bits, int2 remainder)</td></tr>
242<tr class="separator:ad12110cc5f3099fa90b631e7b05772a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
243<tr class="memitem:a521e3ded9b6ca69692e9415ef9b4cee1"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a521e3ded9b6ca69692e9415ef9b4cee1">exp_barrel_shifter4</a> (int4 result, int exponent, int fp_multiplier, int k_integer_bits, int k_fractional_bits, int4 remainder)</td></tr>
244<tr class="separator:a521e3ded9b6ca69692e9415ef9b4cee1"><td class="memSeparator" colspan="2">&#160;</td></tr>
245<tr class="memitem:a936aed524c644efcf20b28877e3a0f3f"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a936aed524c644efcf20b28877e3a0f3f">exp_barrel_shifter8</a> (int8 result, int exponent, int fp_multiplier, int k_integer_bits, int k_fractional_bits, int8 remainder)</td></tr>
246<tr class="separator:a936aed524c644efcf20b28877e3a0f3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
247<tr class="memitem:a4bde4cd395697b5d37af5116773f16ed"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a4bde4cd395697b5d37af5116773f16ed">exp_barrel_shifter16</a> (int16 result, int exponent, int fp_multiplier, int k_integer_bits, int k_fractional_bits, int16 remainder)</td></tr>
248<tr class="separator:a4bde4cd395697b5d37af5116773f16ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
249<tr class="memitem:a35b98dc80eefc6ce799720861a668691"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a35b98dc80eefc6ce799720861a668691">asymm_exp_on_negative_values2</a> (int2 a, int k_integer_bits)</td></tr>
250<tr class="separator:a35b98dc80eefc6ce799720861a668691"><td class="memSeparator" colspan="2">&#160;</td></tr>
251<tr class="memitem:aa1dda459c2b10a9620b2c14a928ed4ba"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aa1dda459c2b10a9620b2c14a928ed4ba">asymm_exp_on_negative_values4</a> (int4 a, int k_integer_bits)</td></tr>
252<tr class="separator:aa1dda459c2b10a9620b2c14a928ed4ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
253<tr class="memitem:a429f20ad96413c1f7d4ee968afed6f0d"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a429f20ad96413c1f7d4ee968afed6f0d">asymm_exp_on_negative_values8</a> (int8 a, int k_integer_bits)</td></tr>
254<tr class="separator:a429f20ad96413c1f7d4ee968afed6f0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
255<tr class="memitem:ae13cfab30e1d4c5f797f9d3d7c6acacf"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ae13cfab30e1d4c5f797f9d3d7c6acacf">asymm_exp_on_negative_values16</a> (int16 a, int k_integer_bits)</td></tr>
256<tr class="separator:ae13cfab30e1d4c5f797f9d3d7c6acacf"><td class="memSeparator" colspan="2">&#160;</td></tr>
257<tr class="memitem:ac5d336b40941ee7c63a750b3dc92b030"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ac5d336b40941ee7c63a750b3dc92b030">asymm_saturating_rounding_mult_by_pow22</a> (int2 x, int exponent)</td></tr>
258<tr class="separator:ac5d336b40941ee7c63a750b3dc92b030"><td class="memSeparator" colspan="2">&#160;</td></tr>
259<tr class="memitem:af06991bb67792a6fec9c426923f39745"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#af06991bb67792a6fec9c426923f39745">asymm_saturating_rounding_mult_by_pow24</a> (int4 x, int exponent)</td></tr>
260<tr class="separator:af06991bb67792a6fec9c426923f39745"><td class="memSeparator" colspan="2">&#160;</td></tr>
261<tr class="memitem:a1bfbcc866bf09921d6bf4fc39cd38d89"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a1bfbcc866bf09921d6bf4fc39cd38d89">asymm_saturating_rounding_mult_by_pow28</a> (int8 x, int exponent)</td></tr>
262<tr class="separator:a1bfbcc866bf09921d6bf4fc39cd38d89"><td class="memSeparator" colspan="2">&#160;</td></tr>
263<tr class="memitem:a88b3d0aae3bcf134f9eb4b5637a4b73c"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a88b3d0aae3bcf134f9eb4b5637a4b73c">asymm_saturating_rounding_mult_by_pow216</a> (int16 x, int exponent)</td></tr>
264<tr class="separator:a88b3d0aae3bcf134f9eb4b5637a4b73c"><td class="memSeparator" colspan="2">&#160;</td></tr>
265<tr class="memitem:acd43480a8530400e781603a995adcad0"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#acd43480a8530400e781603a995adcad0">asymm_rounding_half_sum2</a> (int2 a, int2 b)</td></tr>
266<tr class="separator:acd43480a8530400e781603a995adcad0"><td class="memSeparator" colspan="2">&#160;</td></tr>
267<tr class="memitem:a7dda5bba50450367760a7ad1148881be"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a7dda5bba50450367760a7ad1148881be">asymm_rounding_half_sum4</a> (int4 a, int4 b)</td></tr>
268<tr class="separator:a7dda5bba50450367760a7ad1148881be"><td class="memSeparator" colspan="2">&#160;</td></tr>
269<tr class="memitem:acba55fb1a4dfa6ab5080cc276550d5fd"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#acba55fb1a4dfa6ab5080cc276550d5fd">asymm_rounding_half_sum8</a> (int8 a, int8 b)</td></tr>
270<tr class="separator:acba55fb1a4dfa6ab5080cc276550d5fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
271<tr class="memitem:ab13b1910b09c0cf268f6a8af0e2013e2"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ab13b1910b09c0cf268f6a8af0e2013e2">asymm_rounding_half_sum16</a> (int16 a, int16 b)</td></tr>
272<tr class="separator:ab13b1910b09c0cf268f6a8af0e2013e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
273<tr class="memitem:a6524f601cf9a2ae69d5eab74576c93d0"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a6524f601cf9a2ae69d5eab74576c93d0">asymm_one_over_one_plus_x_for_x_in_0_12</a> (int2 a)</td></tr>
274<tr class="separator:a6524f601cf9a2ae69d5eab74576c93d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
275<tr class="memitem:a049439083adb7b960079832ad6367389"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a049439083adb7b960079832ad6367389">asymm_one_over_one_plus_x_for_x_in_0_14</a> (int4 a)</td></tr>
276<tr class="separator:a049439083adb7b960079832ad6367389"><td class="memSeparator" colspan="2">&#160;</td></tr>
277<tr class="memitem:abe37c90e62ee60565cbfbb38c4358fd6"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#abe37c90e62ee60565cbfbb38c4358fd6">asymm_one_over_one_plus_x_for_x_in_0_18</a> (int8 a)</td></tr>
278<tr class="separator:abe37c90e62ee60565cbfbb38c4358fd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
279<tr class="memitem:ac3316120c01b6c993ac8f2d3f2b4ff03"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ac3316120c01b6c993ac8f2d3f2b4ff03">asymm_one_over_one_plus_x_for_x_in_0_116</a> (int16 a)</td></tr>
280<tr class="separator:ac3316120c01b6c993ac8f2d3f2b4ff03"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100281<tr class="memitem:a49b94bfc99276975c6fed32c693cbac5"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a49b94bfc99276975c6fed32c693cbac5">asymm_rescale2</a> (int2 value, int src_integer_bits, int dst_integer_bits)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000282<tr class="separator:a49b94bfc99276975c6fed32c693cbac5"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100283<tr class="memitem:a8f9d043040f28f051c7145281de94681"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a8f9d043040f28f051c7145281de94681">asymm_rescale4</a> (int4 value, int src_integer_bits, int dst_integer_bits)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000284<tr class="separator:a8f9d043040f28f051c7145281de94681"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100285<tr class="memitem:a478b69bea5edb6ad939d8e7edd9e7e3f"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a478b69bea5edb6ad939d8e7edd9e7e3f">asymm_rescale8</a> (int8 value, int src_integer_bits, int dst_integer_bits)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000286<tr class="separator:a478b69bea5edb6ad939d8e7edd9e7e3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
Jenkinsb3a371b2018-05-23 11:36:53 +0100287<tr class="memitem:a700e603af523859efb90ed4b52b41c84"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a700e603af523859efb90ed4b52b41c84">asymm_rescale16</a> (int16 value, int src_integer_bits, int dst_integer_bits)</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000288<tr class="separator:a700e603af523859efb90ed4b52b41c84"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000289</table>
290<h2 class="groupheader">Macro Definition Documentation</h2>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000291<a class="anchor" id="aeebdcd88f4320931cd4a599ad1527e83"></a>
292<div class="memitem">
293<div class="memproto">
294 <table class="memname">
295 <tr>
296 <td class="memname">#define ASYMM_EXP_ON_INTERVAL_BETWEEN_NEGATIVE_ONE_QUARTER_AND_0_EXCL</td>
297 <td>(</td>
298 <td class="paramtype">&#160;</td>
299 <td class="paramname">a, </td>
300 </tr>
301 <tr>
302 <td class="paramkey"></td>
303 <td></td>
304 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100305 <td class="paramname">size&#160;</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000306 </tr>
307 <tr>
308 <td></td>
309 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100310 <td></td><td>&#160;&#160;&#160;asymm_exp_on_interval_between_negative_one_quarter_and_0_excl##size(a)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000311 </tr>
312 </table>
313</div><div class="memdoc">
314
Jenkins52ba29e2018-08-29 15:32:11 +0000315<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00298">298</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000316
317</div>
318</div>
319<a class="anchor" id="a3d8a3968a069eb8abbc28d31c20f6b8c"></a>
320<div class="memitem">
321<div class="memproto">
322 <table class="memname">
323 <tr>
324 <td class="memname">#define ASYMM_EXP_ON_INTERVAL_BETWEEN_NEGATIVE_ONE_QUARTER_AND_0_EXCL_IMPL</td>
325 <td>(</td>
326 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100327 <td class="paramname">size</td><td>)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000328 <td></td>
329 </tr>
330 </table>
331</div><div class="memdoc">
Jenkins52ba29e2018-08-29 15:32:11 +0000332<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, size) asymm_exp_on_interval_between_negative_one_quarter_and_0_excl<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) a) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) constant_term = 1895147668; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) constant_1_over_3 = 715827883; \</span></div><div class="line"><span class="preprocessor"> const int k_fractional_bits = 31; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x = a + (1 &lt;&lt; (k_fractional_bits - 3)); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x2 = ASYMM_MULT(x, x, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x3 = ASYMM_MULT(x2, x, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x4 = ASYMM_MULT(x2, x2, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x4_over_4 = ASYMM_ROUNDING_DIVIDE_BY_POW2(x4, 2, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x4_over_24_plus_x3_over_6_plus_x2 = ASYMM_MULT((x4_over_4 + x3), constant_1_over_3, size) + x2; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x4_over_24_plus_x3_over_6_plus_x2_over_2 = ASYMM_ROUNDING_DIVIDE_BY_POW2(x4_over_24_plus_x3_over_6_plus_x2, 1, size); \</span></div><div class="line"><span class="preprocessor"> return constant_term + ASYMM_MULT(constant_term, x + x4_over_24_plus_x3_over_6_plus_x2_over_2, size); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00056">helpers.h:56</a></div></div>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000333</div><!-- fragment -->
334<p>Calculates \( exp(x) \) for x in [-1/4, 0). </p>
335<dl class="params"><dt>Parameters</dt><dd>
336 <table class="params">
337 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
338 </table>
339 </dd>
340</dl>
341<dl class="section return"><dt>Returns</dt><dd>Result in fixed-point format Q0. </dd></dl>
342
Jenkins52ba29e2018-08-29 15:32:11 +0000343<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00076">76</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000344
345</div>
346</div>
347<a class="anchor" id="a3a4f1b5d8f1cd67ac31bc62c9a6f4aa8"></a>
348<div class="memitem">
349<div class="memproto">
350 <table class="memname">
351 <tr>
352 <td class="memname">#define ASYMM_EXP_ON_NEGATIVE_VALUES</td>
353 <td>(</td>
354 <td class="paramtype">&#160;</td>
355 <td class="paramname">a, </td>
356 </tr>
357 <tr>
358 <td class="paramkey"></td>
359 <td></td>
360 <td class="paramtype">&#160;</td>
361 <td class="paramname">k_integer_bits, </td>
362 </tr>
363 <tr>
364 <td class="paramkey"></td>
365 <td></td>
366 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100367 <td class="paramname">size&#160;</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000368 </tr>
369 <tr>
370 <td></td>
371 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100372 <td></td><td>&#160;&#160;&#160;<a class="el" href="softmax__layer__quantized_8cl.xhtml#a54aedfa17c5ac2567107d5f488b0f4af">asymm_exp_on_negative_values</a>##size(a, k_integer_bits)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000373 </tr>
374 </table>
375</div><div class="memdoc">
376
Jenkins52ba29e2018-08-29 15:32:11 +0000377<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00303">303</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000378
379</div>
380</div>
381<a class="anchor" id="a4d0a02b30d8cc5725d0a11781b488852"></a>
382<div class="memitem">
383<div class="memproto">
384 <table class="memname">
385 <tr>
386 <td class="memname">#define ASYMM_EXP_ON_NEGATIVE_VALUES_IMPL</td>
387 <td>(</td>
388 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100389 <td class="paramname">size</td><td>)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000390 <td></td>
391 </tr>
392 </table>
393</div><div class="memdoc">
394
395<p>Calculates \( exp(x) \) for x &lt; 0. </p>
396<dl class="params"><dt>Parameters</dt><dd>
397 <table class="params">
398 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
399 </table>
400 </dd>
401</dl>
402<dl class="section return"><dt>Returns</dt><dd>Result in fixed-point format Q0. </dd></dl>
403
Jenkins52ba29e2018-08-29 15:32:11 +0000404<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00163">163</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000405
406</div>
407</div>
408<a class="anchor" id="af1d5450c9c4c13a6b7aa52af197b54b2"></a>
409<div class="memitem">
410<div class="memproto">
411 <table class="memname">
412 <tr>
413 <td class="memname">#define ASYMM_MASK_IF_NON_ZERO</td>
414 <td>(</td>
415 <td class="paramtype">&#160;</td>
416 <td class="paramname">a, </td>
417 </tr>
418 <tr>
419 <td class="paramkey"></td>
420 <td></td>
421 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100422 <td class="paramname">size&#160;</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000423 </tr>
424 <tr>
425 <td></td>
426 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100427 <td></td><td>&#160;&#160;&#160;asymm_mask_if_non_zero##size(a)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000428 </tr>
429 </table>
430</div><div class="memdoc">
431
Jenkins52ba29e2018-08-29 15:32:11 +0000432<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00301">301</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000433
434</div>
435</div>
436<a class="anchor" id="a6dd3d8d22942f0ff3e59b4e32cfd4de3"></a>
437<div class="memitem">
438<div class="memproto">
439 <table class="memname">
440 <tr>
441 <td class="memname">#define ASYMM_MASK_IF_NON_ZERO_IMPL</td>
442 <td>(</td>
443 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100444 <td class="paramname">size</td><td>)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000445 <td></td>
446 </tr>
447 </table>
448</div><div class="memdoc">
Jenkins52ba29e2018-08-29 15:32:11 +0000449<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, size) asymm_mask_if_non_zero<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) a) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) all_zeros = 0; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) all_ones = ~0; \</span></div><div class="line"><span class="preprocessor"> return select(all_zeros, all_ones, a != 0); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00056">helpers.h:56</a></div></div>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000450</div><!-- fragment -->
451<p>For each element of input vector, the corresponding bits of the result item are set if the input item is non-zero. </p>
452<dl class="params"><dt>Parameters</dt><dd>
453 <table class="params">
454 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
455 </table>
456 </dd>
457</dl>
458<dl class="section return"><dt>Returns</dt><dd>Output vector with bits set when corresponding bit in <code>a</code> is non zero. </dd></dl>
459
Jenkins52ba29e2018-08-29 15:32:11 +0000460<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00135">135</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000461
462</div>
463</div>
464<a class="anchor" id="afc6a76528024472919bb5d50d067578b"></a>
465<div class="memitem">
466<div class="memproto">
467 <table class="memname">
468 <tr>
469 <td class="memname">#define ASYMM_MASK_IF_ZERO</td>
470 <td>(</td>
471 <td class="paramtype">&#160;</td>
472 <td class="paramname">a, </td>
473 </tr>
474 <tr>
475 <td class="paramkey"></td>
476 <td></td>
477 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100478 <td class="paramname">size&#160;</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000479 </tr>
480 <tr>
481 <td></td>
482 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100483 <td></td><td>&#160;&#160;&#160;asymm_mask_if_zero##size(a)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000484 </tr>
485 </table>
486</div><div class="memdoc">
487
Jenkins52ba29e2018-08-29 15:32:11 +0000488<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00300">300</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000489
490</div>
491</div>
492<a class="anchor" id="a8c47a92ec76a1e367b45305c17d9ea88"></a>
493<div class="memitem">
494<div class="memproto">
495 <table class="memname">
496 <tr>
497 <td class="memname">#define ASYMM_MASK_IF_ZERO_IMPL</td>
498 <td>(</td>
499 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100500 <td class="paramname">size</td><td>)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000501 <td></td>
502 </tr>
503 </table>
504</div><div class="memdoc">
Jenkins52ba29e2018-08-29 15:32:11 +0000505<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, size) asymm_mask_if_zero<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) a) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) all_zeros = 0; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) all_ones = ~0; \</span></div><div class="line"><span class="preprocessor"> return select(all_zeros, all_ones, a == 0); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00056">helpers.h:56</a></div></div>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000506</div><!-- fragment -->
507<p>For each element of input vector, the corresponding bits of the result item are set if the input item is zero. </p>
508<dl class="params"><dt>Parameters</dt><dd>
509 <table class="params">
510 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
511 </table>
512 </dd>
513</dl>
514<dl class="section return"><dt>Returns</dt><dd>Output vector with bits set when corresponding bit in <code>a</code> is zero. </dd></dl>
515
Jenkins52ba29e2018-08-29 15:32:11 +0000516<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00120">120</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000517
518</div>
519</div>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000520<a class="anchor" id="a5483aefd5e07244661178bfd3f434448"></a>
521<div class="memitem">
522<div class="memproto">
523 <table class="memname">
524 <tr>
525 <td class="memname">#define ASYMM_MULT</td>
526 <td>(</td>
527 <td class="paramtype">&#160;</td>
528 <td class="paramname">a, </td>
529 </tr>
530 <tr>
531 <td class="paramkey"></td>
532 <td></td>
533 <td class="paramtype">&#160;</td>
534 <td class="paramname">b, </td>
535 </tr>
536 <tr>
537 <td class="paramkey"></td>
538 <td></td>
539 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100540 <td class="paramname">size&#160;</td>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000541 </tr>
542 <tr>
543 <td></td>
544 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100545 <td></td><td>&#160;&#160;&#160;<a class="el" href="softmax__layer__quantized_8cl.xhtml#a525a42d38133b1051b8924b456add4a1">asymm_mult</a>##size(a, b)</td>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000546 </tr>
547 </table>
548</div><div class="memdoc">
549
Jenkins52ba29e2018-08-29 15:32:11 +0000550<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00295">295</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000551
552</div>
553</div>
554<a class="anchor" id="a86de0ffca367bfcf27a8ae5dd1fdef2d"></a>
555<div class="memitem">
556<div class="memproto">
557 <table class="memname">
558 <tr>
559 <td class="memname">#define ASYMM_MULT_BY_QUANT_MULTIPLIER_LESS_THAN_ONE</td>
560 <td>(</td>
561 <td class="paramtype">&#160;</td>
562 <td class="paramname">x, </td>
563 </tr>
564 <tr>
565 <td class="paramkey"></td>
566 <td></td>
567 <td class="paramtype">&#160;</td>
568 <td class="paramname">quantized_multiplier, </td>
569 </tr>
570 <tr>
571 <td class="paramkey"></td>
572 <td></td>
573 <td class="paramtype">&#160;</td>
574 <td class="paramname">right_shift, </td>
575 </tr>
576 <tr>
577 <td class="paramkey"></td>
578 <td></td>
579 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100580 <td class="paramname">size&#160;</td>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000581 </tr>
582 <tr>
583 <td></td>
584 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100585 <td></td><td>&#160;&#160;&#160;<a class="el" href="helpers__asymm_8h.xhtml#aa43fc359dea64362f3016384f4269845">ASYMM_ROUNDING_DIVIDE_BY_POW2</a>(<a class="el" href="helpers__asymm_8h.xhtml#a5483aefd5e07244661178bfd3f434448">ASYMM_MULT</a>(x, quantized_multiplier, size), right_shift, size)</td>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000586 </tr>
587 </table>
588</div><div class="memdoc">
589
Jenkins52ba29e2018-08-29 15:32:11 +0000590<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00296">296</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000591
592</div>
593</div>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000594<a class="anchor" id="ad4b199221927cbabbf859e4d2efb688d"></a>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000595<div class="memitem">
596<div class="memproto">
597 <table class="memname">
598 <tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000599 <td class="memname">#define ASYMM_MULT_IMPL</td>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000600 <td>(</td>
601 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100602 <td class="paramname">size</td><td>)</td>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000603 <td></td>
604 </tr>
605 </table>
606</div><div class="memdoc">
Jenkins52ba29e2018-08-29 15:32:11 +0000607<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, size) <a class="code" href="softmax__layer__quantized_8cl.xhtml#a525a42d38133b1051b8924b456add4a1">asymm_mult</a><span class="preprocessor">##size(VEC_DATA_TYPE(int, size) a, VEC_DATA_TYPE(int, size) b) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> overflow = a == b &amp;&amp; a == INT_MIN; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> a_64 = convert_long##size(a); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> b_64 = convert_long##size(b); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> ab_64 = a_64 * b_64; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> ab_x2_high32 = convert_int##size(((ab_64 + (1 &lt;&lt; 30)) &gt;&gt; 31)); \</span></div><div class="line"><span class="preprocessor"> return select(ab_x2_high32, INT_MAX, overflow); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="softmax__layer__quantized_8cl_xhtml_a525a42d38133b1051b8924b456add4a1"><div class="ttname"><a href="softmax__layer__quantized_8cl.xhtml#a525a42d38133b1051b8924b456add4a1">asymm_mult</a></div><div class="ttdeci">#define asymm_mult(a, b)</div><div class="ttdef"><b>Definition:</b> <a href="softmax__layer__quantized_8cl_source.xhtml#l00056">softmax_layer_quantized.cl:56</a></div></div>
608<div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00056">helpers.h:56</a></div></div>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000609</div><!-- fragment -->
610<p>Product of two numbers, interpreting them as fixed-point values in the interval [-1, 1), rounding to the nearest value, and saturating -1 * -1 to the maximum value. </p>
611<dl class="params"><dt>Parameters</dt><dd>
612 <table class="params">
613 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
614 </table>
615 </dd>
616</dl>
617<dl class="section return"><dt>Returns</dt><dd>Product of two fixed-point numbers. </dd></dl>
618
Anthony Barbier06ea0482018-02-22 15:45:35 +0000619<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00054">54</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
620
621</div>
622</div>
623<a class="anchor" id="ae77f34e1316d52c1ee84c35be9efb0d8"></a>
624<div class="memitem">
625<div class="memproto">
626 <table class="memname">
627 <tr>
628 <td class="memname">#define ASYMM_ONE_OVER_ONE_PLUS_X_FOR_X_IN_0_1</td>
629 <td>(</td>
630 <td class="paramtype">&#160;</td>
631 <td class="paramname">a, </td>
632 </tr>
633 <tr>
634 <td class="paramkey"></td>
635 <td></td>
636 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100637 <td class="paramname">size&#160;</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000638 </tr>
639 <tr>
640 <td></td>
641 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100642 <td></td><td>&#160;&#160;&#160;asymm_one_over_one_plus_x_for_x_in_0_1##size(a)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000643 </tr>
644 </table>
645</div><div class="memdoc">
646
Jenkins52ba29e2018-08-29 15:32:11 +0000647<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00304">304</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000648
649</div>
650</div>
651<a class="anchor" id="a0e53aa5d4cbcec7a0c0085838f32453d"></a>
652<div class="memitem">
653<div class="memproto">
654 <table class="memname">
655 <tr>
656 <td class="memname">#define ASYMM_ONE_OVER_ONE_PLUS_X_FOR_X_IN_0_1_IMPL</td>
657 <td>(</td>
658 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100659 <td class="paramname">size</td><td>)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000660 <td></td>
661 </tr>
662 </table>
663</div><div class="memdoc">
Jenkins52ba29e2018-08-29 15:32:11 +0000664<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, size) asymm_one_over_one_plus_x_for_x_in_0_1<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) a) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) Q0_one = INT_MAX; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) Q2_one = 1 &lt;&lt; (31 - 2); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> half_denominator = ASYMM_ROUNDING_HALF_SUM(a, Q0_one, size); \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) Q2_48_over_17 = 1515870810; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) Q2_neg_32_over_17 = -1010580540; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x = Q2_48_over_17 + ASYMM_MULT(half_denominator, Q2_neg_32_over_17, size); \</span></div><div class="line"><span class="preprocessor"> for(int i = 0; i &lt; 3; i++) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> half_denominator_times_x = ASYMM_MULT(half_denominator, x, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> one_minus_half_denominator_times_x = Q2_one - half_denominator_times_x; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> tmp = ASYMM_MULT(x, one_minus_half_denominator_times_x, size); \</span></div><div class="line"><span class="preprocessor"> x = x + ASYMM_SATURATING_ROUNDING_MULT_BY_POW2(tmp, 2, size); \</span></div><div class="line"><span class="preprocessor"> } \</span></div><div class="line"><span class="preprocessor"> return ASYMM_SATURATING_ROUNDING_MULT_BY_POW2(x, 1, size); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00056">helpers.h:56</a></div></div>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000665</div><!-- fragment -->
666<p>Calculates \( 1 / (1 + x) \) for x in (0, 1). </p>
667<dl class="params"><dt>Parameters</dt><dd>
668 <table class="params">
669 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
670 </table>
671 </dd>
672</dl>
673<dl class="section return"><dt>Returns</dt><dd>Result in fixed-point format Q0. </dd></dl>
674
Jenkins52ba29e2018-08-29 15:32:11 +0000675<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00257">257</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000676
677</div>
678</div>
679<a class="anchor" id="a98585f1bb84dea90aecbf59785c46151"></a>
680<div class="memitem">
681<div class="memproto">
682 <table class="memname">
683 <tr>
684 <td class="memname">#define ASYMM_RESCALE</td>
685 <td>(</td>
686 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100687 <td class="paramname">value, </td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000688 </tr>
689 <tr>
690 <td class="paramkey"></td>
691 <td></td>
692 <td class="paramtype">&#160;</td>
693 <td class="paramname">src_integer_bits, </td>
694 </tr>
695 <tr>
696 <td class="paramkey"></td>
697 <td></td>
698 <td class="paramtype">&#160;</td>
699 <td class="paramname">dst_integer_bits, </td>
700 </tr>
701 <tr>
702 <td class="paramkey"></td>
703 <td></td>
704 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100705 <td class="paramname">size&#160;</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000706 </tr>
707 <tr>
708 <td></td>
709 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100710 <td></td><td>&#160;&#160;&#160;<a class="el" href="softmax__layer__quantized_8cl.xhtml#ad57ea340cdcfeb2e1375b70c3ae59bae">asymm_rescale</a>##size(value, src_integer_bits, dst_integer_bits)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000711 </tr>
712 </table>
713</div><div class="memdoc">
714
Jenkins52ba29e2018-08-29 15:32:11 +0000715<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00307">307</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000716
717</div>
718</div>
719<a class="anchor" id="aace85e2a32bacdaa4e2d2055deabfc57"></a>
720<div class="memitem">
721<div class="memproto">
722 <table class="memname">
723 <tr>
724 <td class="memname">#define ASYMM_RESCALE_IMPL</td>
725 <td>(</td>
726 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100727 <td class="paramname">size</td><td>)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000728 <td></td>
729 </tr>
730 </table>
731</div><div class="memdoc">
Jenkins52ba29e2018-08-29 15:32:11 +0000732<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, size) <a class="code" href="softmax__layer__quantized_8cl.xhtml#ad57ea340cdcfeb2e1375b70c3ae59bae">asymm_rescale</a><span class="preprocessor">##size(VEC_DATA_TYPE(int, size) value, int src_integer_bits, int dst_integer_bits) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> int exponent = src_integer_bits - dst_integer_bits; \</span></div><div class="line"><span class="preprocessor"> return ASYMM_SATURATING_ROUNDING_MULT_BY_POW2(value, exponent, size); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00056">helpers.h:56</a></div></div>
733<div class="ttc" id="softmax__layer__quantized_8cl_xhtml_ad57ea340cdcfeb2e1375b70c3ae59bae"><div class="ttname"><a href="softmax__layer__quantized_8cl.xhtml#ad57ea340cdcfeb2e1375b70c3ae59bae">asymm_rescale</a></div><div class="ttdeci">#define asymm_rescale(value, src_integer_bits, dst_integer_bits)</div><div class="ttdef"><b>Definition:</b> <a href="softmax__layer__quantized_8cl_source.xhtml#l00058">softmax_layer_quantized.cl:58</a></div></div>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000734</div><!-- fragment -->
735<p>Considering the integer value as fixed-point, change the number of integer bits and update value accordingly. </p>
736<dl class="params"><dt>Parameters</dt><dd>
737 <table class="params">
738 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
739 </table>
740 </dd>
741</dl>
742<dl class="section return"><dt>Returns</dt><dd>Rescaled value. </dd></dl>
743
Jenkins52ba29e2018-08-29 15:32:11 +0000744<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00287">287</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000745
746</div>
747</div>
748<a class="anchor" id="aa43fc359dea64362f3016384f4269845"></a>
749<div class="memitem">
750<div class="memproto">
751 <table class="memname">
752 <tr>
753 <td class="memname">#define ASYMM_ROUNDING_DIVIDE_BY_POW2</td>
754 <td>(</td>
755 <td class="paramtype">&#160;</td>
756 <td class="paramname">x, </td>
757 </tr>
758 <tr>
759 <td class="paramkey"></td>
760 <td></td>
761 <td class="paramtype">&#160;</td>
762 <td class="paramname">exponent, </td>
763 </tr>
764 <tr>
765 <td class="paramkey"></td>
766 <td></td>
767 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100768 <td class="paramname">size&#160;</td>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000769 </tr>
770 <tr>
771 <td></td>
772 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100773 <td></td><td>&#160;&#160;&#160;asymm_rounding_divide_by_POW2_##size(x, exponent)</td>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000774 </tr>
775 </table>
776</div><div class="memdoc">
777
Jenkins52ba29e2018-08-29 15:32:11 +0000778<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00294">294</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000779
780</div>
781</div>
782<a class="anchor" id="abf75e242631b23007e4046682aa57ec5"></a>
783<div class="memitem">
784<div class="memproto">
785 <table class="memname">
786 <tr>
787 <td class="memname">#define ASYMM_ROUNDING_DIVIDE_BY_POW2_IMPL</td>
788 <td>(</td>
789 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100790 <td class="paramname">size</td><td>)</td>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000791 <td></td>
792 </tr>
793 </table>
794</div><div class="memdoc">
Jenkins52ba29e2018-08-29 15:32:11 +0000795<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, size) asymm_rounding_divide_by_POW2_<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) x, int exponent) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> mask = (1 &lt;&lt; exponent) - 1; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) zero = 0; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) one = 1; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> threshold = (mask &gt;&gt; 1) + select(zero, one, x &lt; 0); \</span></div><div class="line"><span class="preprocessor"> return (x &gt;&gt; exponent) + select(zero, one, (x &amp; mask) &gt; threshold); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00056">helpers.h:56</a></div></div>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000796</div><!-- fragment -->
797<p>Correctly-rounded-to-nearest division by a power-of-two. </p>
798<dl class="params"><dt>Parameters</dt><dd>
799 <table class="params">
800 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
801 </table>
802 </dd>
803</dl>
804<dl class="section return"><dt>Returns</dt><dd>Correctly-rounded-to-nearest division by a power-of-two. </dd></dl>
805
806<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00035">35</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
807
808</div>
809</div>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000810<a class="anchor" id="ad47fa44c1566aa4678fe524478490612"></a>
811<div class="memitem">
812<div class="memproto">
813 <table class="memname">
814 <tr>
815 <td class="memname">#define ASYMM_ROUNDING_HALF_SUM</td>
816 <td>(</td>
817 <td class="paramtype">&#160;</td>
818 <td class="paramname">a, </td>
819 </tr>
820 <tr>
821 <td class="paramkey"></td>
822 <td></td>
823 <td class="paramtype">&#160;</td>
824 <td class="paramname">b, </td>
825 </tr>
826 <tr>
827 <td class="paramkey"></td>
828 <td></td>
829 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100830 <td class="paramname">size&#160;</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000831 </tr>
832 <tr>
833 <td></td>
834 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100835 <td></td><td>&#160;&#160;&#160;asymm_rounding_half_sum##size(a, b)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000836 </tr>
837 </table>
838</div><div class="memdoc">
839
Jenkins52ba29e2018-08-29 15:32:11 +0000840<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00306">306</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000841
842</div>
843</div>
844<a class="anchor" id="a8d97c6698c0e44424deae3f3130c55ac"></a>
845<div class="memitem">
846<div class="memproto">
847 <table class="memname">
848 <tr>
849 <td class="memname">#define ASYMM_ROUNDING_HALF_SUM_IMPL</td>
850 <td>(</td>
851 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100852 <td class="paramname">size</td><td>)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000853 <td></td>
854 </tr>
855 </table>
856</div><div class="memdoc">
Jenkins52ba29e2018-08-29 15:32:11 +0000857<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, size) asymm_rounding_half_sum<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) a, VEC_DATA_TYPE(int, size) b) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> a64 = convert_long##size(a); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> b64 = convert_long##size(b); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> sum = a64 + b64; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(long, size) one = 1; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(long, size) minus_one = -1; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> sign = select(minus_one, one, sum &gt;= 0); \</span></div><div class="line"><span class="preprocessor"> return convert_int##size((sum + sign) / 2); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00056">helpers.h:56</a></div></div>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000858</div><!-- fragment -->
859<p>Calculates (a+b)/2, rounded to the nearest integer. </p>
860<p>Equivalent to VRHADD in the ARM NEON instruction set.</p>
861<dl class="params"><dt>Parameters</dt><dd>
862 <table class="params">
863 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
864 </table>
865 </dd>
866</dl>
867<dl class="section return"><dt>Returns</dt><dd>(a+b)/2, rounded to the nearest integer. </dd></dl>
868
Jenkins52ba29e2018-08-29 15:32:11 +0000869<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00235">235</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000870
871</div>
872</div>
873<a class="anchor" id="a4cc3ff3a2eeb5f5e9d6743e08f632928"></a>
874<div class="memitem">
875<div class="memproto">
876 <table class="memname">
877 <tr>
878 <td class="memname">#define ASYMM_SATURATING_ROUNDING_MULT_BY_POW2</td>
879 <td>(</td>
880 <td class="paramtype">&#160;</td>
881 <td class="paramname">x, </td>
882 </tr>
883 <tr>
884 <td class="paramkey"></td>
885 <td></td>
886 <td class="paramtype">&#160;</td>
887 <td class="paramname">exponent, </td>
888 </tr>
889 <tr>
890 <td class="paramkey"></td>
891 <td></td>
892 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100893 <td class="paramname">size&#160;</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000894 </tr>
895 <tr>
896 <td></td>
897 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100898 <td></td><td>&#160;&#160;&#160;asymm_saturating_rounding_mult_by_pow2##size(x, exponent)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000899 </tr>
900 </table>
901</div><div class="memdoc">
902
Jenkins52ba29e2018-08-29 15:32:11 +0000903<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00305">305</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000904
905</div>
906</div>
907<a class="anchor" id="a737312bc4a68c79a77cfab4849793bc0"></a>
908<div class="memitem">
909<div class="memproto">
910 <table class="memname">
911 <tr>
912 <td class="memname">#define ASYMM_SATURATING_ROUNDING_MULT_BY_POW2_IMPL</td>
913 <td>(</td>
914 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100915 <td class="paramname">size</td><td>)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000916 <td></td>
917 </tr>
918 </table>
919</div><div class="memdoc">
Jenkins52ba29e2018-08-29 15:32:11 +0000920<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, size) asymm_saturating_rounding_mult_by_pow2<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) x, int exponent) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> if(exponent &lt; 0) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> return ASYMM_ROUNDING_DIVIDE_BY_POW2(x, -exponent, size); \</span></div><div class="line"><span class="preprocessor"> } \</span></div><div class="line"><span class="preprocessor"> \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) min = INT_MIN; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) max = INT_MAX; \</span></div><div class="line"><span class="preprocessor"> int threshold = ((1 &lt;&lt; (31 - exponent)) - 1); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> positive_mask = ASYMM_MASK_IF_NON_ZERO(x &gt; threshold, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> negative_mask = ASYMM_MASK_IF_NON_ZERO(x &lt; -threshold, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> result = x &lt;&lt; exponent; \</span></div><div class="line"><span class="preprocessor"> result = ASYMM_SELECT_USING_MASK(positive_mask, max, result, size); \</span></div><div class="line"><span class="preprocessor"> result = ASYMM_SELECT_USING_MASK(negative_mask, min, result, size); \</span></div><div class="line"><span class="preprocessor"> return result; \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00056">helpers.h:56</a></div></div>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000921</div><!-- fragment -->
922<p>Calculates the product of a integer value by a power of two, with either a positive exponent (equivalent to an arithmetic left shift, saturating) or a negative exponent (equivalent to an arithmetic right shift, rounding to nearest). </p>
923<dl class="params"><dt>Parameters</dt><dd>
924 <table class="params">
925 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
926 </table>
927 </dd>
928</dl>
929<dl class="section return"><dt>Returns</dt><dd>Arithmetic left or right shift. </dd></dl>
930
Jenkins52ba29e2018-08-29 15:32:11 +0000931<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00206">206</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000932
933</div>
934</div>
935<a class="anchor" id="a9bc08a8c1833c5e6055ad6665e3ccf12"></a>
936<div class="memitem">
937<div class="memproto">
938 <table class="memname">
939 <tr>
940 <td class="memname">#define ASYMM_SELECT_USING_MASK</td>
941 <td>(</td>
942 <td class="paramtype">&#160;</td>
943 <td class="paramname">if_mask, </td>
944 </tr>
945 <tr>
946 <td class="paramkey"></td>
947 <td></td>
948 <td class="paramtype">&#160;</td>
949 <td class="paramname">then_val, </td>
950 </tr>
951 <tr>
952 <td class="paramkey"></td>
953 <td></td>
954 <td class="paramtype">&#160;</td>
955 <td class="paramname">else_val, </td>
956 </tr>
957 <tr>
958 <td class="paramkey"></td>
959 <td></td>
960 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100961 <td class="paramname">size&#160;</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000962 </tr>
963 <tr>
964 <td></td>
965 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100966 <td></td><td>&#160;&#160;&#160;asymm_select_using_mask##size(if_mask, then_val, else_val)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000967 </tr>
968 </table>
969</div><div class="memdoc">
970
Jenkins52ba29e2018-08-29 15:32:11 +0000971<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00299">299</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000972
973</div>
974</div>
975<a class="anchor" id="ab0b4069b25ac886d5cb6eb3b76473f88"></a>
976<div class="memitem">
977<div class="memproto">
978 <table class="memname">
979 <tr>
980 <td class="memname">#define ASYMM_SELECT_USING_MASK_IMPL</td>
981 <td>(</td>
982 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +0100983 <td class="paramname">size</td><td>)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000984 <td></td>
985 </tr>
986 </table>
987</div><div class="memdoc">
Jenkins52ba29e2018-08-29 15:32:11 +0000988<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, size) asymm_select_using_mask<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) if_mask, VEC_DATA_TYPE(int, size) then_val, VEC_DATA_TYPE(int, size) else_val) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> return (if_mask &amp; then_val) ^ (~if_mask &amp; else_val); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00056">helpers.h:56</a></div></div>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000989</div><!-- fragment -->
990<p>Each bit of the result is set to the corresponding bit of either then_val or else_val depending on whether the corresponding bit of if_mask is set. </p>
991<p>Equivalent to the VBSL instruction in ARM NEON.</p>
992<dl class="params"><dt>Parameters</dt><dd>
993 <table class="params">
994 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
995 </table>
996 </dd>
997</dl>
998<dl class="section return"><dt>Returns</dt><dd>Result contaning bits from <code>then_val</code> or from <code>else_val</code> depending on corresponding bit in <code>if_mask</code> is set or not. </dd></dl>
999
Jenkins52ba29e2018-08-29 15:32:11 +00001000<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00107">107</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001001
1002</div>
1003</div>
1004<a class="anchor" id="ace9ecff421cf885ad2c2d72d87c492cb"></a>
1005<div class="memitem">
1006<div class="memproto">
1007 <table class="memname">
1008 <tr>
1009 <td class="memname">#define EXP_BARREL_SHIFTER</td>
1010 <td>(</td>
1011 <td class="paramtype">&#160;</td>
1012 <td class="paramname">result, </td>
1013 </tr>
1014 <tr>
1015 <td class="paramkey"></td>
1016 <td></td>
1017 <td class="paramtype">&#160;</td>
1018 <td class="paramname">exponent, </td>
1019 </tr>
1020 <tr>
1021 <td class="paramkey"></td>
1022 <td></td>
1023 <td class="paramtype">&#160;</td>
1024 <td class="paramname">fp_multiplier, </td>
1025 </tr>
1026 <tr>
1027 <td class="paramkey"></td>
1028 <td></td>
1029 <td class="paramtype">&#160;</td>
1030 <td class="paramname">k_integer_bits, </td>
1031 </tr>
1032 <tr>
1033 <td class="paramkey"></td>
1034 <td></td>
1035 <td class="paramtype">&#160;</td>
1036 <td class="paramname">k_fractional_bits, </td>
1037 </tr>
1038 <tr>
1039 <td class="paramkey"></td>
1040 <td></td>
1041 <td class="paramtype">&#160;</td>
1042 <td class="paramname">remainder, </td>
1043 </tr>
1044 <tr>
1045 <td class="paramkey"></td>
1046 <td></td>
1047 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +01001048 <td class="paramname">size&#160;</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001049 </tr>
1050 <tr>
1051 <td></td>
1052 <td>)</td>
Jenkinsb3a371b2018-05-23 11:36:53 +01001053 <td></td><td>&#160;&#160;&#160;exp_barrel_shifter##size(result, exponent, fp_multiplier, k_integer_bits, k_fractional_bits, remainder)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001054 </tr>
1055 </table>
1056</div><div class="memdoc">
1057
Jenkins52ba29e2018-08-29 15:32:11 +00001058<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00302">302</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001059
1060</div>
1061</div>
1062<a class="anchor" id="aa12ca21cb9a54d2e4c26d57303fe44a7"></a>
1063<div class="memitem">
1064<div class="memproto">
1065 <table class="memname">
1066 <tr>
1067 <td class="memname">#define EXP_BARREL_SHIFTER_IMPL</td>
1068 <td>(</td>
1069 <td class="paramtype">&#160;</td>
Jenkinsb3a371b2018-05-23 11:36:53 +01001070 <td class="paramname">size</td><td>)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001071 <td></td>
1072 </tr>
1073 </table>
1074</div><div class="memdoc">
Jenkins52ba29e2018-08-29 15:32:11 +00001075<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, size) exp_barrel_shifter<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) result, int exponent, int fp_multiplier, int k_integer_bits, int k_fractional_bits, VEC_DATA_TYPE(int, size) remainder) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> if(k_integer_bits &gt; exponent) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> const int k_shift_amount = k_integer_bits &gt; exponent ? k_fractional_bits + exponent : 0; \</span></div><div class="line"><span class="preprocessor"> return ASYMM_SELECT_USING_MASK( \</span></div><div class="line"><span class="preprocessor"> ASYMM_MASK_IF_NON_ZERO(remainder &amp; (1 &lt;&lt; k_shift_amount), size), \</span></div><div class="line"><span class="preprocessor"> ASYMM_MULT(result, fp_multiplier, size), result, size); \</span></div><div class="line"><span class="preprocessor"> } \</span></div><div class="line"><span class="preprocessor"> \</span></div><div class="line"><span class="preprocessor"> return result; \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00056">helpers.h:56</a></div></div>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001076</div><!-- fragment -->
Jenkins52ba29e2018-08-29 15:32:11 +00001077<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00143">143</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001078
1079</div>
1080</div>
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001081<h2 class="groupheader">Function Documentation</h2>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001082<a class="anchor" id="a1d51b02a83af2a152fa52755f572f5a6"></a>
1083<div class="memitem">
1084<div class="memproto">
1085<table class="mlabels">
1086 <tr>
1087 <td class="mlabels-left">
1088 <table class="memname">
1089 <tr>
1090 <td class="memname">int16 asymm_exp_on_interval_between_negative_one_quarter_and_0_excl16 </td>
1091 <td>(</td>
1092 <td class="paramtype">int16&#160;</td>
1093 <td class="paramname"><em>a</em></td><td>)</td>
1094 <td></td>
1095 </tr>
1096 </table>
1097 </td>
1098 <td class="mlabels-right">
1099<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1100 </tr>
1101</table>
1102</div><div class="memdoc">
1103
Jenkins52ba29e2018-08-29 15:32:11 +00001104<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00322">322</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001105
1106</div>
1107</div>
1108<a class="anchor" id="a8eb88d417247a1b8b8929e5c8faeb48d"></a>
1109<div class="memitem">
1110<div class="memproto">
1111<table class="mlabels">
1112 <tr>
1113 <td class="mlabels-left">
1114 <table class="memname">
1115 <tr>
1116 <td class="memname">int2 asymm_exp_on_interval_between_negative_one_quarter_and_0_excl2 </td>
1117 <td>(</td>
1118 <td class="paramtype">int2&#160;</td>
1119 <td class="paramname"><em>a</em></td><td>)</td>
1120 <td></td>
1121 </tr>
1122 </table>
1123 </td>
1124 <td class="mlabels-right">
1125<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1126 </tr>
1127</table>
1128</div><div class="memdoc">
1129
Jenkins52ba29e2018-08-29 15:32:11 +00001130<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00319">319</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001131
1132</div>
1133</div>
1134<a class="anchor" id="a43aa0011bd9b23ce3f691a9ae205fe07"></a>
1135<div class="memitem">
1136<div class="memproto">
1137<table class="mlabels">
1138 <tr>
1139 <td class="mlabels-left">
1140 <table class="memname">
1141 <tr>
1142 <td class="memname">int4 asymm_exp_on_interval_between_negative_one_quarter_and_0_excl4 </td>
1143 <td>(</td>
1144 <td class="paramtype">int4&#160;</td>
1145 <td class="paramname"><em>a</em></td><td>)</td>
1146 <td></td>
1147 </tr>
1148 </table>
1149 </td>
1150 <td class="mlabels-right">
1151<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1152 </tr>
1153</table>
1154</div><div class="memdoc">
1155
Jenkins52ba29e2018-08-29 15:32:11 +00001156<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00320">320</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001157
1158</div>
1159</div>
1160<a class="anchor" id="accb6ee0e0c578704ae23e6ab0a57cdd0"></a>
1161<div class="memitem">
1162<div class="memproto">
1163<table class="mlabels">
1164 <tr>
1165 <td class="mlabels-left">
1166 <table class="memname">
1167 <tr>
1168 <td class="memname">int8 asymm_exp_on_interval_between_negative_one_quarter_and_0_excl8 </td>
1169 <td>(</td>
1170 <td class="paramtype">int8&#160;</td>
1171 <td class="paramname"><em>a</em></td><td>)</td>
1172 <td></td>
1173 </tr>
1174 </table>
1175 </td>
1176 <td class="mlabels-right">
1177<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1178 </tr>
1179</table>
1180</div><div class="memdoc">
1181
Jenkins52ba29e2018-08-29 15:32:11 +00001182<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00321">321</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001183
1184</div>
1185</div>
1186<a class="anchor" id="ae13cfab30e1d4c5f797f9d3d7c6acacf"></a>
1187<div class="memitem">
1188<div class="memproto">
1189<table class="mlabels">
1190 <tr>
1191 <td class="mlabels-left">
1192 <table class="memname">
1193 <tr>
1194 <td class="memname">int16 asymm_exp_on_negative_values16 </td>
1195 <td>(</td>
1196 <td class="paramtype">int16&#160;</td>
1197 <td class="paramname"><em>a</em>, </td>
1198 </tr>
1199 <tr>
1200 <td class="paramkey"></td>
1201 <td></td>
1202 <td class="paramtype">int&#160;</td>
1203 <td class="paramname"><em>k_integer_bits</em>&#160;</td>
1204 </tr>
1205 <tr>
1206 <td></td>
1207 <td>)</td>
1208 <td></td><td></td>
1209 </tr>
1210 </table>
1211 </td>
1212 <td class="mlabels-right">
1213<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1214 </tr>
1215</table>
1216</div><div class="memdoc">
1217
Jenkins52ba29e2018-08-29 15:32:11 +00001218<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00347">347</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001219
1220</div>
1221</div>
1222<a class="anchor" id="a35b98dc80eefc6ce799720861a668691"></a>
1223<div class="memitem">
1224<div class="memproto">
1225<table class="mlabels">
1226 <tr>
1227 <td class="mlabels-left">
1228 <table class="memname">
1229 <tr>
1230 <td class="memname">int2 asymm_exp_on_negative_values2 </td>
1231 <td>(</td>
1232 <td class="paramtype">int2&#160;</td>
1233 <td class="paramname"><em>a</em>, </td>
1234 </tr>
1235 <tr>
1236 <td class="paramkey"></td>
1237 <td></td>
1238 <td class="paramtype">int&#160;</td>
1239 <td class="paramname"><em>k_integer_bits</em>&#160;</td>
1240 </tr>
1241 <tr>
1242 <td></td>
1243 <td>)</td>
1244 <td></td><td></td>
1245 </tr>
1246 </table>
1247 </td>
1248 <td class="mlabels-right">
1249<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1250 </tr>
1251</table>
1252</div><div class="memdoc">
1253
Jenkins52ba29e2018-08-29 15:32:11 +00001254<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00344">344</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001255
1256</div>
1257</div>
1258<a class="anchor" id="aa1dda459c2b10a9620b2c14a928ed4ba"></a>
1259<div class="memitem">
1260<div class="memproto">
1261<table class="mlabels">
1262 <tr>
1263 <td class="mlabels-left">
1264 <table class="memname">
1265 <tr>
1266 <td class="memname">int4 asymm_exp_on_negative_values4 </td>
1267 <td>(</td>
1268 <td class="paramtype">int4&#160;</td>
1269 <td class="paramname"><em>a</em>, </td>
1270 </tr>
1271 <tr>
1272 <td class="paramkey"></td>
1273 <td></td>
1274 <td class="paramtype">int&#160;</td>
1275 <td class="paramname"><em>k_integer_bits</em>&#160;</td>
1276 </tr>
1277 <tr>
1278 <td></td>
1279 <td>)</td>
1280 <td></td><td></td>
1281 </tr>
1282 </table>
1283 </td>
1284 <td class="mlabels-right">
1285<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1286 </tr>
1287</table>
1288</div><div class="memdoc">
1289
Jenkins52ba29e2018-08-29 15:32:11 +00001290<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00345">345</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001291
1292</div>
1293</div>
1294<a class="anchor" id="a429f20ad96413c1f7d4ee968afed6f0d"></a>
1295<div class="memitem">
1296<div class="memproto">
1297<table class="mlabels">
1298 <tr>
1299 <td class="mlabels-left">
1300 <table class="memname">
1301 <tr>
1302 <td class="memname">int8 asymm_exp_on_negative_values8 </td>
1303 <td>(</td>
1304 <td class="paramtype">int8&#160;</td>
1305 <td class="paramname"><em>a</em>, </td>
1306 </tr>
1307 <tr>
1308 <td class="paramkey"></td>
1309 <td></td>
1310 <td class="paramtype">int&#160;</td>
1311 <td class="paramname"><em>k_integer_bits</em>&#160;</td>
1312 </tr>
1313 <tr>
1314 <td></td>
1315 <td>)</td>
1316 <td></td><td></td>
1317 </tr>
1318 </table>
1319 </td>
1320 <td class="mlabels-right">
1321<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1322 </tr>
1323</table>
1324</div><div class="memdoc">
1325
Jenkins52ba29e2018-08-29 15:32:11 +00001326<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00346">346</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001327
1328</div>
1329</div>
1330<a class="anchor" id="a1e1fef1353d2458beb7fab06cc8f460e"></a>
1331<div class="memitem">
1332<div class="memproto">
1333<table class="mlabels">
1334 <tr>
1335 <td class="mlabels-left">
1336 <table class="memname">
1337 <tr>
1338 <td class="memname">int16 asymm_mask_if_non_zero16 </td>
1339 <td>(</td>
1340 <td class="paramtype">int16&#160;</td>
1341 <td class="paramname"><em>a</em></td><td>)</td>
1342 <td></td>
1343 </tr>
1344 </table>
1345 </td>
1346 <td class="mlabels-right">
1347<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1348 </tr>
1349</table>
1350</div><div class="memdoc">
1351
Jenkins52ba29e2018-08-29 15:32:11 +00001352<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00337">337</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001353
1354</div>
1355</div>
1356<a class="anchor" id="a885a16f240b119acc9f0721c07acdce9"></a>
1357<div class="memitem">
1358<div class="memproto">
1359<table class="mlabels">
1360 <tr>
1361 <td class="mlabels-left">
1362 <table class="memname">
1363 <tr>
1364 <td class="memname">int2 asymm_mask_if_non_zero2 </td>
1365 <td>(</td>
1366 <td class="paramtype">int2&#160;</td>
1367 <td class="paramname"><em>a</em></td><td>)</td>
1368 <td></td>
1369 </tr>
1370 </table>
1371 </td>
1372 <td class="mlabels-right">
1373<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1374 </tr>
1375</table>
1376</div><div class="memdoc">
1377
Jenkins52ba29e2018-08-29 15:32:11 +00001378<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00334">334</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001379
1380</div>
1381</div>
1382<a class="anchor" id="a2f180955030087d7538d5dc89f29eba9"></a>
1383<div class="memitem">
1384<div class="memproto">
1385<table class="mlabels">
1386 <tr>
1387 <td class="mlabels-left">
1388 <table class="memname">
1389 <tr>
1390 <td class="memname">int4 asymm_mask_if_non_zero4 </td>
1391 <td>(</td>
1392 <td class="paramtype">int4&#160;</td>
1393 <td class="paramname"><em>a</em></td><td>)</td>
1394 <td></td>
1395 </tr>
1396 </table>
1397 </td>
1398 <td class="mlabels-right">
1399<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1400 </tr>
1401</table>
1402</div><div class="memdoc">
1403
Jenkins52ba29e2018-08-29 15:32:11 +00001404<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00335">335</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001405
1406</div>
1407</div>
1408<a class="anchor" id="a8de81d453a39d0f589b0d3e007c7fde1"></a>
1409<div class="memitem">
1410<div class="memproto">
1411<table class="mlabels">
1412 <tr>
1413 <td class="mlabels-left">
1414 <table class="memname">
1415 <tr>
1416 <td class="memname">int8 asymm_mask_if_non_zero8 </td>
1417 <td>(</td>
1418 <td class="paramtype">int8&#160;</td>
1419 <td class="paramname"><em>a</em></td><td>)</td>
1420 <td></td>
1421 </tr>
1422 </table>
1423 </td>
1424 <td class="mlabels-right">
1425<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1426 </tr>
1427</table>
1428</div><div class="memdoc">
1429
Jenkins52ba29e2018-08-29 15:32:11 +00001430<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00336">336</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001431
1432</div>
1433</div>
1434<a class="anchor" id="a509916b7ee582d87faf1312fde111c3b"></a>
1435<div class="memitem">
1436<div class="memproto">
1437<table class="mlabels">
1438 <tr>
1439 <td class="mlabels-left">
1440 <table class="memname">
1441 <tr>
1442 <td class="memname">int16 asymm_mask_if_zero16 </td>
1443 <td>(</td>
1444 <td class="paramtype">int16&#160;</td>
1445 <td class="paramname"><em>a</em></td><td>)</td>
1446 <td></td>
1447 </tr>
1448 </table>
1449 </td>
1450 <td class="mlabels-right">
1451<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1452 </tr>
1453</table>
1454</div><div class="memdoc">
1455
Jenkins52ba29e2018-08-29 15:32:11 +00001456<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00332">332</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001457
1458</div>
1459</div>
1460<a class="anchor" id="a6ed499c821cf4f6b3bc4049d49e35139"></a>
1461<div class="memitem">
1462<div class="memproto">
1463<table class="mlabels">
1464 <tr>
1465 <td class="mlabels-left">
1466 <table class="memname">
1467 <tr>
1468 <td class="memname">int2 asymm_mask_if_zero2 </td>
1469 <td>(</td>
1470 <td class="paramtype">int2&#160;</td>
1471 <td class="paramname"><em>a</em></td><td>)</td>
1472 <td></td>
1473 </tr>
1474 </table>
1475 </td>
1476 <td class="mlabels-right">
1477<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1478 </tr>
1479</table>
1480</div><div class="memdoc">
1481
Jenkins52ba29e2018-08-29 15:32:11 +00001482<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00329">329</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001483
1484</div>
1485</div>
1486<a class="anchor" id="aed95c68d9545d401d2323cd8ad287fe1"></a>
1487<div class="memitem">
1488<div class="memproto">
1489<table class="mlabels">
1490 <tr>
1491 <td class="mlabels-left">
1492 <table class="memname">
1493 <tr>
1494 <td class="memname">int4 asymm_mask_if_zero4 </td>
1495 <td>(</td>
1496 <td class="paramtype">int4&#160;</td>
1497 <td class="paramname"><em>a</em></td><td>)</td>
1498 <td></td>
1499 </tr>
1500 </table>
1501 </td>
1502 <td class="mlabels-right">
1503<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1504 </tr>
1505</table>
1506</div><div class="memdoc">
1507
Jenkins52ba29e2018-08-29 15:32:11 +00001508<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00330">330</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001509
1510</div>
1511</div>
1512<a class="anchor" id="abefb0a278a588f03dc561db900df0958"></a>
1513<div class="memitem">
1514<div class="memproto">
1515<table class="mlabels">
1516 <tr>
1517 <td class="mlabels-left">
1518 <table class="memname">
1519 <tr>
1520 <td class="memname">int8 asymm_mask_if_zero8 </td>
1521 <td>(</td>
1522 <td class="paramtype">int8&#160;</td>
1523 <td class="paramname"><em>a</em></td><td>)</td>
1524 <td></td>
1525 </tr>
1526 </table>
1527 </td>
1528 <td class="mlabels-right">
1529<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1530 </tr>
1531</table>
1532</div><div class="memdoc">
1533
Jenkins52ba29e2018-08-29 15:32:11 +00001534<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00331">331</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001535
1536</div>
1537</div>
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001538<a class="anchor" id="aef32e3a9c804f145deb6b88f0a444919"></a>
1539<div class="memitem">
1540<div class="memproto">
1541<table class="mlabels">
1542 <tr>
1543 <td class="mlabels-left">
1544 <table class="memname">
1545 <tr>
1546 <td class="memname">int16 asymm_mult16 </td>
1547 <td>(</td>
1548 <td class="paramtype">int16&#160;</td>
1549 <td class="paramname"><em>a</em>, </td>
1550 </tr>
1551 <tr>
1552 <td class="paramkey"></td>
1553 <td></td>
1554 <td class="paramtype">int16&#160;</td>
1555 <td class="paramname"><em>b</em>&#160;</td>
1556 </tr>
1557 <tr>
1558 <td></td>
1559 <td>)</td>
1560 <td></td><td></td>
1561 </tr>
1562 </table>
1563 </td>
1564 <td class="mlabels-right">
1565<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1566 </tr>
1567</table>
1568</div><div class="memdoc">
1569
Jenkins52ba29e2018-08-29 15:32:11 +00001570<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00317">317</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001571
1572</div>
1573</div>
1574<a class="anchor" id="a5038b78913b76d782cc0aa0d841bd7ed"></a>
1575<div class="memitem">
1576<div class="memproto">
1577<table class="mlabels">
1578 <tr>
1579 <td class="mlabels-left">
1580 <table class="memname">
1581 <tr>
1582 <td class="memname">int2 asymm_mult2 </td>
1583 <td>(</td>
1584 <td class="paramtype">int2&#160;</td>
1585 <td class="paramname"><em>a</em>, </td>
1586 </tr>
1587 <tr>
1588 <td class="paramkey"></td>
1589 <td></td>
1590 <td class="paramtype">int2&#160;</td>
1591 <td class="paramname"><em>b</em>&#160;</td>
1592 </tr>
1593 <tr>
1594 <td></td>
1595 <td>)</td>
1596 <td></td><td></td>
1597 </tr>
1598 </table>
1599 </td>
1600 <td class="mlabels-right">
1601<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1602 </tr>
1603</table>
1604</div><div class="memdoc">
1605
Jenkins52ba29e2018-08-29 15:32:11 +00001606<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00314">314</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001607
1608</div>
1609</div>
1610<a class="anchor" id="a6dca28649388d59ec0281af70d4507b2"></a>
1611<div class="memitem">
1612<div class="memproto">
1613<table class="mlabels">
1614 <tr>
1615 <td class="mlabels-left">
1616 <table class="memname">
1617 <tr>
1618 <td class="memname">int4 asymm_mult4 </td>
1619 <td>(</td>
1620 <td class="paramtype">int4&#160;</td>
1621 <td class="paramname"><em>a</em>, </td>
1622 </tr>
1623 <tr>
1624 <td class="paramkey"></td>
1625 <td></td>
1626 <td class="paramtype">int4&#160;</td>
1627 <td class="paramname"><em>b</em>&#160;</td>
1628 </tr>
1629 <tr>
1630 <td></td>
1631 <td>)</td>
1632 <td></td><td></td>
1633 </tr>
1634 </table>
1635 </td>
1636 <td class="mlabels-right">
1637<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1638 </tr>
1639</table>
1640</div><div class="memdoc">
1641
Jenkins52ba29e2018-08-29 15:32:11 +00001642<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00315">315</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001643
1644</div>
1645</div>
1646<a class="anchor" id="a165b0bbab841712ea2c9a17a09bfa166"></a>
1647<div class="memitem">
1648<div class="memproto">
1649<table class="mlabels">
1650 <tr>
1651 <td class="mlabels-left">
1652 <table class="memname">
1653 <tr>
1654 <td class="memname">int8 asymm_mult8 </td>
1655 <td>(</td>
1656 <td class="paramtype">int8&#160;</td>
1657 <td class="paramname"><em>a</em>, </td>
1658 </tr>
1659 <tr>
1660 <td class="paramkey"></td>
1661 <td></td>
1662 <td class="paramtype">int8&#160;</td>
1663 <td class="paramname"><em>b</em>&#160;</td>
1664 </tr>
1665 <tr>
1666 <td></td>
1667 <td>)</td>
1668 <td></td><td></td>
1669 </tr>
1670 </table>
1671 </td>
1672 <td class="mlabels-right">
1673<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1674 </tr>
1675</table>
1676</div><div class="memdoc">
1677
Jenkins52ba29e2018-08-29 15:32:11 +00001678<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00316">316</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001679
1680</div>
1681</div>
1682<a class="anchor" id="ac3316120c01b6c993ac8f2d3f2b4ff03"></a>
1683<div class="memitem">
1684<div class="memproto">
1685<table class="mlabels">
1686 <tr>
1687 <td class="mlabels-left">
1688 <table class="memname">
1689 <tr>
1690 <td class="memname">int16 asymm_one_over_one_plus_x_for_x_in_0_116 </td>
1691 <td>(</td>
1692 <td class="paramtype">int16&#160;</td>
1693 <td class="paramname"><em>a</em></td><td>)</td>
1694 <td></td>
1695 </tr>
1696 </table>
1697 </td>
1698 <td class="mlabels-right">
1699<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1700 </tr>
1701</table>
1702</div><div class="memdoc">
1703
Jenkins52ba29e2018-08-29 15:32:11 +00001704<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00362">362</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001705
1706</div>
1707</div>
1708<a class="anchor" id="a6524f601cf9a2ae69d5eab74576c93d0"></a>
1709<div class="memitem">
1710<div class="memproto">
1711<table class="mlabels">
1712 <tr>
1713 <td class="mlabels-left">
1714 <table class="memname">
1715 <tr>
1716 <td class="memname">int2 asymm_one_over_one_plus_x_for_x_in_0_12 </td>
1717 <td>(</td>
1718 <td class="paramtype">int2&#160;</td>
1719 <td class="paramname"><em>a</em></td><td>)</td>
1720 <td></td>
1721 </tr>
1722 </table>
1723 </td>
1724 <td class="mlabels-right">
1725<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1726 </tr>
1727</table>
1728</div><div class="memdoc">
1729
Jenkins52ba29e2018-08-29 15:32:11 +00001730<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00359">359</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001731
1732</div>
1733</div>
1734<a class="anchor" id="a049439083adb7b960079832ad6367389"></a>
1735<div class="memitem">
1736<div class="memproto">
1737<table class="mlabels">
1738 <tr>
1739 <td class="mlabels-left">
1740 <table class="memname">
1741 <tr>
1742 <td class="memname">int4 asymm_one_over_one_plus_x_for_x_in_0_14 </td>
1743 <td>(</td>
1744 <td class="paramtype">int4&#160;</td>
1745 <td class="paramname"><em>a</em></td><td>)</td>
1746 <td></td>
1747 </tr>
1748 </table>
1749 </td>
1750 <td class="mlabels-right">
1751<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1752 </tr>
1753</table>
1754</div><div class="memdoc">
1755
Jenkins52ba29e2018-08-29 15:32:11 +00001756<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00360">360</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001757
1758</div>
1759</div>
1760<a class="anchor" id="abe37c90e62ee60565cbfbb38c4358fd6"></a>
1761<div class="memitem">
1762<div class="memproto">
1763<table class="mlabels">
1764 <tr>
1765 <td class="mlabels-left">
1766 <table class="memname">
1767 <tr>
1768 <td class="memname">int8 asymm_one_over_one_plus_x_for_x_in_0_18 </td>
1769 <td>(</td>
1770 <td class="paramtype">int8&#160;</td>
1771 <td class="paramname"><em>a</em></td><td>)</td>
1772 <td></td>
1773 </tr>
1774 </table>
1775 </td>
1776 <td class="mlabels-right">
1777<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1778 </tr>
1779</table>
1780</div><div class="memdoc">
1781
Jenkins52ba29e2018-08-29 15:32:11 +00001782<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00361">361</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001783
1784</div>
1785</div>
1786<a class="anchor" id="a700e603af523859efb90ed4b52b41c84"></a>
1787<div class="memitem">
1788<div class="memproto">
1789<table class="mlabels">
1790 <tr>
1791 <td class="mlabels-left">
1792 <table class="memname">
1793 <tr>
1794 <td class="memname">int16 asymm_rescale16 </td>
1795 <td>(</td>
1796 <td class="paramtype">int16&#160;</td>
1797 <td class="paramname"><em>value</em>, </td>
1798 </tr>
1799 <tr>
1800 <td class="paramkey"></td>
1801 <td></td>
1802 <td class="paramtype">int&#160;</td>
1803 <td class="paramname"><em>src_integer_bits</em>, </td>
1804 </tr>
1805 <tr>
1806 <td class="paramkey"></td>
1807 <td></td>
1808 <td class="paramtype">int&#160;</td>
1809 <td class="paramname"><em>dst_integer_bits</em>&#160;</td>
1810 </tr>
1811 <tr>
1812 <td></td>
1813 <td>)</td>
1814 <td></td><td></td>
1815 </tr>
1816 </table>
1817 </td>
1818 <td class="mlabels-right">
1819<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1820 </tr>
1821</table>
1822</div><div class="memdoc">
1823
Jenkins52ba29e2018-08-29 15:32:11 +00001824<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00367">367</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001825
1826</div>
1827</div>
1828<a class="anchor" id="a49b94bfc99276975c6fed32c693cbac5"></a>
1829<div class="memitem">
1830<div class="memproto">
1831<table class="mlabels">
1832 <tr>
1833 <td class="mlabels-left">
1834 <table class="memname">
1835 <tr>
1836 <td class="memname">int2 asymm_rescale2 </td>
1837 <td>(</td>
1838 <td class="paramtype">int2&#160;</td>
1839 <td class="paramname"><em>value</em>, </td>
1840 </tr>
1841 <tr>
1842 <td class="paramkey"></td>
1843 <td></td>
1844 <td class="paramtype">int&#160;</td>
1845 <td class="paramname"><em>src_integer_bits</em>, </td>
1846 </tr>
1847 <tr>
1848 <td class="paramkey"></td>
1849 <td></td>
1850 <td class="paramtype">int&#160;</td>
1851 <td class="paramname"><em>dst_integer_bits</em>&#160;</td>
1852 </tr>
1853 <tr>
1854 <td></td>
1855 <td>)</td>
1856 <td></td><td></td>
1857 </tr>
1858 </table>
1859 </td>
1860 <td class="mlabels-right">
1861<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1862 </tr>
1863</table>
1864</div><div class="memdoc">
1865
Jenkins52ba29e2018-08-29 15:32:11 +00001866<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00364">364</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001867
1868</div>
1869</div>
1870<a class="anchor" id="a8f9d043040f28f051c7145281de94681"></a>
1871<div class="memitem">
1872<div class="memproto">
1873<table class="mlabels">
1874 <tr>
1875 <td class="mlabels-left">
1876 <table class="memname">
1877 <tr>
1878 <td class="memname">int4 asymm_rescale4 </td>
1879 <td>(</td>
1880 <td class="paramtype">int4&#160;</td>
1881 <td class="paramname"><em>value</em>, </td>
1882 </tr>
1883 <tr>
1884 <td class="paramkey"></td>
1885 <td></td>
1886 <td class="paramtype">int&#160;</td>
1887 <td class="paramname"><em>src_integer_bits</em>, </td>
1888 </tr>
1889 <tr>
1890 <td class="paramkey"></td>
1891 <td></td>
1892 <td class="paramtype">int&#160;</td>
1893 <td class="paramname"><em>dst_integer_bits</em>&#160;</td>
1894 </tr>
1895 <tr>
1896 <td></td>
1897 <td>)</td>
1898 <td></td><td></td>
1899 </tr>
1900 </table>
1901 </td>
1902 <td class="mlabels-right">
1903<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1904 </tr>
1905</table>
1906</div><div class="memdoc">
1907
Jenkins52ba29e2018-08-29 15:32:11 +00001908<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00365">365</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001909
1910</div>
1911</div>
1912<a class="anchor" id="a478b69bea5edb6ad939d8e7edd9e7e3f"></a>
1913<div class="memitem">
1914<div class="memproto">
1915<table class="mlabels">
1916 <tr>
1917 <td class="mlabels-left">
1918 <table class="memname">
1919 <tr>
1920 <td class="memname">int8 asymm_rescale8 </td>
1921 <td>(</td>
1922 <td class="paramtype">int8&#160;</td>
1923 <td class="paramname"><em>value</em>, </td>
1924 </tr>
1925 <tr>
1926 <td class="paramkey"></td>
1927 <td></td>
1928 <td class="paramtype">int&#160;</td>
1929 <td class="paramname"><em>src_integer_bits</em>, </td>
1930 </tr>
1931 <tr>
1932 <td class="paramkey"></td>
1933 <td></td>
1934 <td class="paramtype">int&#160;</td>
1935 <td class="paramname"><em>dst_integer_bits</em>&#160;</td>
1936 </tr>
1937 <tr>
1938 <td></td>
1939 <td>)</td>
1940 <td></td><td></td>
1941 </tr>
1942 </table>
1943 </td>
1944 <td class="mlabels-right">
1945<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1946 </tr>
1947</table>
1948</div><div class="memdoc">
1949
Jenkins52ba29e2018-08-29 15:32:11 +00001950<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00366">366</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001951
1952</div>
1953</div>
1954<a class="anchor" id="a21d65cd6ac14696d58509b82789db845"></a>
1955<div class="memitem">
1956<div class="memproto">
1957<table class="mlabels">
1958 <tr>
1959 <td class="mlabels-left">
1960 <table class="memname">
1961 <tr>
1962 <td class="memname">int16 asymm_rounding_divide_by_POW2_16 </td>
1963 <td>(</td>
1964 <td class="paramtype">int16&#160;</td>
1965 <td class="paramname"><em>x</em>, </td>
1966 </tr>
1967 <tr>
1968 <td class="paramkey"></td>
1969 <td></td>
1970 <td class="paramtype">int&#160;</td>
1971 <td class="paramname"><em>exponent</em>&#160;</td>
1972 </tr>
1973 <tr>
1974 <td></td>
1975 <td>)</td>
1976 <td></td><td></td>
1977 </tr>
1978 </table>
1979 </td>
1980 <td class="mlabels-right">
1981<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1982 </tr>
1983</table>
1984</div><div class="memdoc">
1985
Jenkins52ba29e2018-08-29 15:32:11 +00001986<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00312">312</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001987
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001988</div>
1989</div>
1990<a class="anchor" id="ae62b2416b40ca28724c065e95e18a25b"></a>
1991<div class="memitem">
1992<div class="memproto">
1993<table class="mlabels">
1994 <tr>
1995 <td class="mlabels-left">
1996 <table class="memname">
1997 <tr>
1998 <td class="memname">int2 asymm_rounding_divide_by_POW2_2 </td>
1999 <td>(</td>
2000 <td class="paramtype">int2&#160;</td>
2001 <td class="paramname"><em>x</em>, </td>
2002 </tr>
2003 <tr>
2004 <td class="paramkey"></td>
2005 <td></td>
2006 <td class="paramtype">int&#160;</td>
2007 <td class="paramname"><em>exponent</em>&#160;</td>
2008 </tr>
2009 <tr>
2010 <td></td>
2011 <td>)</td>
2012 <td></td><td></td>
2013 </tr>
2014 </table>
2015 </td>
2016 <td class="mlabels-right">
2017<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2018 </tr>
2019</table>
2020</div><div class="memdoc">
2021
Jenkins52ba29e2018-08-29 15:32:11 +00002022<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00309">309</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002023
2024</div>
2025</div>
2026<a class="anchor" id="a2660d5193f286b247cf533d8ca234e77"></a>
2027<div class="memitem">
2028<div class="memproto">
2029<table class="mlabels">
2030 <tr>
2031 <td class="mlabels-left">
2032 <table class="memname">
2033 <tr>
2034 <td class="memname">int4 asymm_rounding_divide_by_POW2_4 </td>
2035 <td>(</td>
2036 <td class="paramtype">int4&#160;</td>
2037 <td class="paramname"><em>x</em>, </td>
2038 </tr>
2039 <tr>
2040 <td class="paramkey"></td>
2041 <td></td>
2042 <td class="paramtype">int&#160;</td>
2043 <td class="paramname"><em>exponent</em>&#160;</td>
2044 </tr>
2045 <tr>
2046 <td></td>
2047 <td>)</td>
2048 <td></td><td></td>
2049 </tr>
2050 </table>
2051 </td>
2052 <td class="mlabels-right">
2053<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2054 </tr>
2055</table>
2056</div><div class="memdoc">
2057
Jenkins52ba29e2018-08-29 15:32:11 +00002058<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00310">310</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002059
Anthony Barbier8140e1e2017-12-14 23:48:46 +00002060</div>
2061</div>
2062<a class="anchor" id="a38afb1b30447264fd62ca7ad86e7ea19"></a>
2063<div class="memitem">
2064<div class="memproto">
2065<table class="mlabels">
2066 <tr>
2067 <td class="mlabels-left">
2068 <table class="memname">
2069 <tr>
2070 <td class="memname">int8 asymm_rounding_divide_by_POW2_8 </td>
2071 <td>(</td>
2072 <td class="paramtype">int8&#160;</td>
2073 <td class="paramname"><em>x</em>, </td>
2074 </tr>
2075 <tr>
2076 <td class="paramkey"></td>
2077 <td></td>
2078 <td class="paramtype">int&#160;</td>
2079 <td class="paramname"><em>exponent</em>&#160;</td>
2080 </tr>
2081 <tr>
2082 <td></td>
2083 <td>)</td>
2084 <td></td><td></td>
2085 </tr>
2086 </table>
2087 </td>
2088 <td class="mlabels-right">
2089<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2090 </tr>
2091</table>
2092</div><div class="memdoc">
2093
Jenkins52ba29e2018-08-29 15:32:11 +00002094<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00311">311</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002095
2096</div>
2097</div>
2098<a class="anchor" id="ab13b1910b09c0cf268f6a8af0e2013e2"></a>
2099<div class="memitem">
2100<div class="memproto">
2101<table class="mlabels">
2102 <tr>
2103 <td class="mlabels-left">
2104 <table class="memname">
2105 <tr>
2106 <td class="memname">int16 asymm_rounding_half_sum16 </td>
2107 <td>(</td>
2108 <td class="paramtype">int16&#160;</td>
2109 <td class="paramname"><em>a</em>, </td>
2110 </tr>
2111 <tr>
2112 <td class="paramkey"></td>
2113 <td></td>
2114 <td class="paramtype">int16&#160;</td>
2115 <td class="paramname"><em>b</em>&#160;</td>
2116 </tr>
2117 <tr>
2118 <td></td>
2119 <td>)</td>
2120 <td></td><td></td>
2121 </tr>
2122 </table>
2123 </td>
2124 <td class="mlabels-right">
2125<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2126 </tr>
2127</table>
2128</div><div class="memdoc">
2129
Jenkins52ba29e2018-08-29 15:32:11 +00002130<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00357">357</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002131
2132</div>
2133</div>
2134<a class="anchor" id="acd43480a8530400e781603a995adcad0"></a>
2135<div class="memitem">
2136<div class="memproto">
2137<table class="mlabels">
2138 <tr>
2139 <td class="mlabels-left">
2140 <table class="memname">
2141 <tr>
2142 <td class="memname">int2 asymm_rounding_half_sum2 </td>
2143 <td>(</td>
2144 <td class="paramtype">int2&#160;</td>
2145 <td class="paramname"><em>a</em>, </td>
2146 </tr>
2147 <tr>
2148 <td class="paramkey"></td>
2149 <td></td>
2150 <td class="paramtype">int2&#160;</td>
2151 <td class="paramname"><em>b</em>&#160;</td>
2152 </tr>
2153 <tr>
2154 <td></td>
2155 <td>)</td>
2156 <td></td><td></td>
2157 </tr>
2158 </table>
2159 </td>
2160 <td class="mlabels-right">
2161<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2162 </tr>
2163</table>
2164</div><div class="memdoc">
2165
Jenkins52ba29e2018-08-29 15:32:11 +00002166<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00354">354</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002167
2168</div>
2169</div>
2170<a class="anchor" id="a7dda5bba50450367760a7ad1148881be"></a>
2171<div class="memitem">
2172<div class="memproto">
2173<table class="mlabels">
2174 <tr>
2175 <td class="mlabels-left">
2176 <table class="memname">
2177 <tr>
2178 <td class="memname">int4 asymm_rounding_half_sum4 </td>
2179 <td>(</td>
2180 <td class="paramtype">int4&#160;</td>
2181 <td class="paramname"><em>a</em>, </td>
2182 </tr>
2183 <tr>
2184 <td class="paramkey"></td>
2185 <td></td>
2186 <td class="paramtype">int4&#160;</td>
2187 <td class="paramname"><em>b</em>&#160;</td>
2188 </tr>
2189 <tr>
2190 <td></td>
2191 <td>)</td>
2192 <td></td><td></td>
2193 </tr>
2194 </table>
2195 </td>
2196 <td class="mlabels-right">
2197<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2198 </tr>
2199</table>
2200</div><div class="memdoc">
2201
Jenkins52ba29e2018-08-29 15:32:11 +00002202<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00355">355</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002203
2204</div>
2205</div>
2206<a class="anchor" id="acba55fb1a4dfa6ab5080cc276550d5fd"></a>
2207<div class="memitem">
2208<div class="memproto">
2209<table class="mlabels">
2210 <tr>
2211 <td class="mlabels-left">
2212 <table class="memname">
2213 <tr>
2214 <td class="memname">int8 asymm_rounding_half_sum8 </td>
2215 <td>(</td>
2216 <td class="paramtype">int8&#160;</td>
2217 <td class="paramname"><em>a</em>, </td>
2218 </tr>
2219 <tr>
2220 <td class="paramkey"></td>
2221 <td></td>
2222 <td class="paramtype">int8&#160;</td>
2223 <td class="paramname"><em>b</em>&#160;</td>
2224 </tr>
2225 <tr>
2226 <td></td>
2227 <td>)</td>
2228 <td></td><td></td>
2229 </tr>
2230 </table>
2231 </td>
2232 <td class="mlabels-right">
2233<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2234 </tr>
2235</table>
2236</div><div class="memdoc">
2237
Jenkins52ba29e2018-08-29 15:32:11 +00002238<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00356">356</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002239
2240</div>
2241</div>
2242<a class="anchor" id="a88b3d0aae3bcf134f9eb4b5637a4b73c"></a>
2243<div class="memitem">
2244<div class="memproto">
2245<table class="mlabels">
2246 <tr>
2247 <td class="mlabels-left">
2248 <table class="memname">
2249 <tr>
2250 <td class="memname">int16 asymm_saturating_rounding_mult_by_pow216 </td>
2251 <td>(</td>
2252 <td class="paramtype">int16&#160;</td>
2253 <td class="paramname"><em>x</em>, </td>
2254 </tr>
2255 <tr>
2256 <td class="paramkey"></td>
2257 <td></td>
2258 <td class="paramtype">int&#160;</td>
2259 <td class="paramname"><em>exponent</em>&#160;</td>
2260 </tr>
2261 <tr>
2262 <td></td>
2263 <td>)</td>
2264 <td></td><td></td>
2265 </tr>
2266 </table>
2267 </td>
2268 <td class="mlabels-right">
2269<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2270 </tr>
2271</table>
2272</div><div class="memdoc">
2273
Jenkins52ba29e2018-08-29 15:32:11 +00002274<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00352">352</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002275
2276</div>
2277</div>
2278<a class="anchor" id="ac5d336b40941ee7c63a750b3dc92b030"></a>
2279<div class="memitem">
2280<div class="memproto">
2281<table class="mlabels">
2282 <tr>
2283 <td class="mlabels-left">
2284 <table class="memname">
2285 <tr>
2286 <td class="memname">int2 asymm_saturating_rounding_mult_by_pow22 </td>
2287 <td>(</td>
2288 <td class="paramtype">int2&#160;</td>
2289 <td class="paramname"><em>x</em>, </td>
2290 </tr>
2291 <tr>
2292 <td class="paramkey"></td>
2293 <td></td>
2294 <td class="paramtype">int&#160;</td>
2295 <td class="paramname"><em>exponent</em>&#160;</td>
2296 </tr>
2297 <tr>
2298 <td></td>
2299 <td>)</td>
2300 <td></td><td></td>
2301 </tr>
2302 </table>
2303 </td>
2304 <td class="mlabels-right">
2305<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2306 </tr>
2307</table>
2308</div><div class="memdoc">
2309
Jenkins52ba29e2018-08-29 15:32:11 +00002310<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00349">349</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002311
2312</div>
2313</div>
2314<a class="anchor" id="af06991bb67792a6fec9c426923f39745"></a>
2315<div class="memitem">
2316<div class="memproto">
2317<table class="mlabels">
2318 <tr>
2319 <td class="mlabels-left">
2320 <table class="memname">
2321 <tr>
2322 <td class="memname">int4 asymm_saturating_rounding_mult_by_pow24 </td>
2323 <td>(</td>
2324 <td class="paramtype">int4&#160;</td>
2325 <td class="paramname"><em>x</em>, </td>
2326 </tr>
2327 <tr>
2328 <td class="paramkey"></td>
2329 <td></td>
2330 <td class="paramtype">int&#160;</td>
2331 <td class="paramname"><em>exponent</em>&#160;</td>
2332 </tr>
2333 <tr>
2334 <td></td>
2335 <td>)</td>
2336 <td></td><td></td>
2337 </tr>
2338 </table>
2339 </td>
2340 <td class="mlabels-right">
2341<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2342 </tr>
2343</table>
2344</div><div class="memdoc">
2345
Jenkins52ba29e2018-08-29 15:32:11 +00002346<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00350">350</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002347
2348</div>
2349</div>
2350<a class="anchor" id="a1bfbcc866bf09921d6bf4fc39cd38d89"></a>
2351<div class="memitem">
2352<div class="memproto">
2353<table class="mlabels">
2354 <tr>
2355 <td class="mlabels-left">
2356 <table class="memname">
2357 <tr>
2358 <td class="memname">int8 asymm_saturating_rounding_mult_by_pow28 </td>
2359 <td>(</td>
2360 <td class="paramtype">int8&#160;</td>
2361 <td class="paramname"><em>x</em>, </td>
2362 </tr>
2363 <tr>
2364 <td class="paramkey"></td>
2365 <td></td>
2366 <td class="paramtype">int&#160;</td>
2367 <td class="paramname"><em>exponent</em>&#160;</td>
2368 </tr>
2369 <tr>
2370 <td></td>
2371 <td>)</td>
2372 <td></td><td></td>
2373 </tr>
2374 </table>
2375 </td>
2376 <td class="mlabels-right">
2377<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2378 </tr>
2379</table>
2380</div><div class="memdoc">
2381
Jenkins52ba29e2018-08-29 15:32:11 +00002382<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00351">351</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002383
2384</div>
2385</div>
2386<a class="anchor" id="a7effd9e7de9fefa9d4ae4eb2cfc06090"></a>
2387<div class="memitem">
2388<div class="memproto">
2389<table class="mlabels">
2390 <tr>
2391 <td class="mlabels-left">
2392 <table class="memname">
2393 <tr>
2394 <td class="memname">int16 asymm_select_using_mask16 </td>
2395 <td>(</td>
2396 <td class="paramtype">int16&#160;</td>
2397 <td class="paramname"><em>if_mask</em>, </td>
2398 </tr>
2399 <tr>
2400 <td class="paramkey"></td>
2401 <td></td>
2402 <td class="paramtype">int16&#160;</td>
2403 <td class="paramname"><em>then_val</em>, </td>
2404 </tr>
2405 <tr>
2406 <td class="paramkey"></td>
2407 <td></td>
2408 <td class="paramtype">int16&#160;</td>
2409 <td class="paramname"><em>else_val</em>&#160;</td>
2410 </tr>
2411 <tr>
2412 <td></td>
2413 <td>)</td>
2414 <td></td><td></td>
2415 </tr>
2416 </table>
2417 </td>
2418 <td class="mlabels-right">
2419<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2420 </tr>
2421</table>
2422</div><div class="memdoc">
2423
Jenkins52ba29e2018-08-29 15:32:11 +00002424<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00327">327</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002425
2426</div>
2427</div>
2428<a class="anchor" id="a0dade5bb9ed9aae49b6bb2875e273d89"></a>
2429<div class="memitem">
2430<div class="memproto">
2431<table class="mlabels">
2432 <tr>
2433 <td class="mlabels-left">
2434 <table class="memname">
2435 <tr>
2436 <td class="memname">int2 asymm_select_using_mask2 </td>
2437 <td>(</td>
2438 <td class="paramtype">int2&#160;</td>
2439 <td class="paramname"><em>if_mask</em>, </td>
2440 </tr>
2441 <tr>
2442 <td class="paramkey"></td>
2443 <td></td>
2444 <td class="paramtype">int2&#160;</td>
2445 <td class="paramname"><em>then_val</em>, </td>
2446 </tr>
2447 <tr>
2448 <td class="paramkey"></td>
2449 <td></td>
2450 <td class="paramtype">int2&#160;</td>
2451 <td class="paramname"><em>else_val</em>&#160;</td>
2452 </tr>
2453 <tr>
2454 <td></td>
2455 <td>)</td>
2456 <td></td><td></td>
2457 </tr>
2458 </table>
2459 </td>
2460 <td class="mlabels-right">
2461<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2462 </tr>
2463</table>
2464</div><div class="memdoc">
2465
Jenkins52ba29e2018-08-29 15:32:11 +00002466<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00324">324</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002467
2468</div>
2469</div>
2470<a class="anchor" id="a44e4d74ed42006c4153a9cb6c97285de"></a>
2471<div class="memitem">
2472<div class="memproto">
2473<table class="mlabels">
2474 <tr>
2475 <td class="mlabels-left">
2476 <table class="memname">
2477 <tr>
2478 <td class="memname">int4 asymm_select_using_mask4 </td>
2479 <td>(</td>
2480 <td class="paramtype">int4&#160;</td>
2481 <td class="paramname"><em>if_mask</em>, </td>
2482 </tr>
2483 <tr>
2484 <td class="paramkey"></td>
2485 <td></td>
2486 <td class="paramtype">int4&#160;</td>
2487 <td class="paramname"><em>then_val</em>, </td>
2488 </tr>
2489 <tr>
2490 <td class="paramkey"></td>
2491 <td></td>
2492 <td class="paramtype">int4&#160;</td>
2493 <td class="paramname"><em>else_val</em>&#160;</td>
2494 </tr>
2495 <tr>
2496 <td></td>
2497 <td>)</td>
2498 <td></td><td></td>
2499 </tr>
2500 </table>
2501 </td>
2502 <td class="mlabels-right">
2503<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2504 </tr>
2505</table>
2506</div><div class="memdoc">
2507
Jenkins52ba29e2018-08-29 15:32:11 +00002508<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00325">325</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002509
2510</div>
2511</div>
2512<a class="anchor" id="a64682bc22716ad771d012ce4c7398652"></a>
2513<div class="memitem">
2514<div class="memproto">
2515<table class="mlabels">
2516 <tr>
2517 <td class="mlabels-left">
2518 <table class="memname">
2519 <tr>
2520 <td class="memname">int8 asymm_select_using_mask8 </td>
2521 <td>(</td>
2522 <td class="paramtype">int8&#160;</td>
2523 <td class="paramname"><em>if_mask</em>, </td>
2524 </tr>
2525 <tr>
2526 <td class="paramkey"></td>
2527 <td></td>
2528 <td class="paramtype">int8&#160;</td>
2529 <td class="paramname"><em>then_val</em>, </td>
2530 </tr>
2531 <tr>
2532 <td class="paramkey"></td>
2533 <td></td>
2534 <td class="paramtype">int8&#160;</td>
2535 <td class="paramname"><em>else_val</em>&#160;</td>
2536 </tr>
2537 <tr>
2538 <td></td>
2539 <td>)</td>
2540 <td></td><td></td>
2541 </tr>
2542 </table>
2543 </td>
2544 <td class="mlabels-right">
2545<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2546 </tr>
2547</table>
2548</div><div class="memdoc">
2549
Jenkins52ba29e2018-08-29 15:32:11 +00002550<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00326">326</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002551
2552</div>
2553</div>
2554<a class="anchor" id="a4bde4cd395697b5d37af5116773f16ed"></a>
2555<div class="memitem">
2556<div class="memproto">
2557<table class="mlabels">
2558 <tr>
2559 <td class="mlabels-left">
2560 <table class="memname">
2561 <tr>
2562 <td class="memname">int16 exp_barrel_shifter16 </td>
2563 <td>(</td>
2564 <td class="paramtype">int16&#160;</td>
2565 <td class="paramname"><em>result</em>, </td>
2566 </tr>
2567 <tr>
2568 <td class="paramkey"></td>
2569 <td></td>
2570 <td class="paramtype">int&#160;</td>
2571 <td class="paramname"><em>exponent</em>, </td>
2572 </tr>
2573 <tr>
2574 <td class="paramkey"></td>
2575 <td></td>
2576 <td class="paramtype">int&#160;</td>
2577 <td class="paramname"><em>fp_multiplier</em>, </td>
2578 </tr>
2579 <tr>
2580 <td class="paramkey"></td>
2581 <td></td>
2582 <td class="paramtype">int&#160;</td>
2583 <td class="paramname"><em>k_integer_bits</em>, </td>
2584 </tr>
2585 <tr>
2586 <td class="paramkey"></td>
2587 <td></td>
2588 <td class="paramtype">int&#160;</td>
2589 <td class="paramname"><em>k_fractional_bits</em>, </td>
2590 </tr>
2591 <tr>
2592 <td class="paramkey"></td>
2593 <td></td>
2594 <td class="paramtype">int16&#160;</td>
2595 <td class="paramname"><em>remainder</em>&#160;</td>
2596 </tr>
2597 <tr>
2598 <td></td>
2599 <td>)</td>
2600 <td></td><td></td>
2601 </tr>
2602 </table>
2603 </td>
2604 <td class="mlabels-right">
2605<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2606 </tr>
2607</table>
2608</div><div class="memdoc">
2609
Jenkins52ba29e2018-08-29 15:32:11 +00002610<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00342">342</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002611
2612</div>
2613</div>
2614<a class="anchor" id="ad12110cc5f3099fa90b631e7b05772a0"></a>
2615<div class="memitem">
2616<div class="memproto">
2617<table class="mlabels">
2618 <tr>
2619 <td class="mlabels-left">
2620 <table class="memname">
2621 <tr>
2622 <td class="memname">int2 exp_barrel_shifter2 </td>
2623 <td>(</td>
2624 <td class="paramtype">int2&#160;</td>
2625 <td class="paramname"><em>result</em>, </td>
2626 </tr>
2627 <tr>
2628 <td class="paramkey"></td>
2629 <td></td>
2630 <td class="paramtype">int&#160;</td>
2631 <td class="paramname"><em>exponent</em>, </td>
2632 </tr>
2633 <tr>
2634 <td class="paramkey"></td>
2635 <td></td>
2636 <td class="paramtype">int&#160;</td>
2637 <td class="paramname"><em>fp_multiplier</em>, </td>
2638 </tr>
2639 <tr>
2640 <td class="paramkey"></td>
2641 <td></td>
2642 <td class="paramtype">int&#160;</td>
2643 <td class="paramname"><em>k_integer_bits</em>, </td>
2644 </tr>
2645 <tr>
2646 <td class="paramkey"></td>
2647 <td></td>
2648 <td class="paramtype">int&#160;</td>
2649 <td class="paramname"><em>k_fractional_bits</em>, </td>
2650 </tr>
2651 <tr>
2652 <td class="paramkey"></td>
2653 <td></td>
2654 <td class="paramtype">int2&#160;</td>
2655 <td class="paramname"><em>remainder</em>&#160;</td>
2656 </tr>
2657 <tr>
2658 <td></td>
2659 <td>)</td>
2660 <td></td><td></td>
2661 </tr>
2662 </table>
2663 </td>
2664 <td class="mlabels-right">
2665<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2666 </tr>
2667</table>
2668</div><div class="memdoc">
2669
Jenkins52ba29e2018-08-29 15:32:11 +00002670<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00339">339</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002671
2672</div>
2673</div>
2674<a class="anchor" id="a521e3ded9b6ca69692e9415ef9b4cee1"></a>
2675<div class="memitem">
2676<div class="memproto">
2677<table class="mlabels">
2678 <tr>
2679 <td class="mlabels-left">
2680 <table class="memname">
2681 <tr>
2682 <td class="memname">int4 exp_barrel_shifter4 </td>
2683 <td>(</td>
2684 <td class="paramtype">int4&#160;</td>
2685 <td class="paramname"><em>result</em>, </td>
2686 </tr>
2687 <tr>
2688 <td class="paramkey"></td>
2689 <td></td>
2690 <td class="paramtype">int&#160;</td>
2691 <td class="paramname"><em>exponent</em>, </td>
2692 </tr>
2693 <tr>
2694 <td class="paramkey"></td>
2695 <td></td>
2696 <td class="paramtype">int&#160;</td>
2697 <td class="paramname"><em>fp_multiplier</em>, </td>
2698 </tr>
2699 <tr>
2700 <td class="paramkey"></td>
2701 <td></td>
2702 <td class="paramtype">int&#160;</td>
2703 <td class="paramname"><em>k_integer_bits</em>, </td>
2704 </tr>
2705 <tr>
2706 <td class="paramkey"></td>
2707 <td></td>
2708 <td class="paramtype">int&#160;</td>
2709 <td class="paramname"><em>k_fractional_bits</em>, </td>
2710 </tr>
2711 <tr>
2712 <td class="paramkey"></td>
2713 <td></td>
2714 <td class="paramtype">int4&#160;</td>
2715 <td class="paramname"><em>remainder</em>&#160;</td>
2716 </tr>
2717 <tr>
2718 <td></td>
2719 <td>)</td>
2720 <td></td><td></td>
2721 </tr>
2722 </table>
2723 </td>
2724 <td class="mlabels-right">
2725<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2726 </tr>
2727</table>
2728</div><div class="memdoc">
2729
Jenkins52ba29e2018-08-29 15:32:11 +00002730<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00340">340</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002731
2732</div>
2733</div>
2734<a class="anchor" id="a936aed524c644efcf20b28877e3a0f3f"></a>
2735<div class="memitem">
2736<div class="memproto">
2737<table class="mlabels">
2738 <tr>
2739 <td class="mlabels-left">
2740 <table class="memname">
2741 <tr>
2742 <td class="memname">int8 exp_barrel_shifter8 </td>
2743 <td>(</td>
2744 <td class="paramtype">int8&#160;</td>
2745 <td class="paramname"><em>result</em>, </td>
2746 </tr>
2747 <tr>
2748 <td class="paramkey"></td>
2749 <td></td>
2750 <td class="paramtype">int&#160;</td>
2751 <td class="paramname"><em>exponent</em>, </td>
2752 </tr>
2753 <tr>
2754 <td class="paramkey"></td>
2755 <td></td>
2756 <td class="paramtype">int&#160;</td>
2757 <td class="paramname"><em>fp_multiplier</em>, </td>
2758 </tr>
2759 <tr>
2760 <td class="paramkey"></td>
2761 <td></td>
2762 <td class="paramtype">int&#160;</td>
2763 <td class="paramname"><em>k_integer_bits</em>, </td>
2764 </tr>
2765 <tr>
2766 <td class="paramkey"></td>
2767 <td></td>
2768 <td class="paramtype">int&#160;</td>
2769 <td class="paramname"><em>k_fractional_bits</em>, </td>
2770 </tr>
2771 <tr>
2772 <td class="paramkey"></td>
2773 <td></td>
2774 <td class="paramtype">int8&#160;</td>
2775 <td class="paramname"><em>remainder</em>&#160;</td>
2776 </tr>
2777 <tr>
2778 <td></td>
2779 <td>)</td>
2780 <td></td><td></td>
2781 </tr>
2782 </table>
2783 </td>
2784 <td class="mlabels-right">
2785<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2786 </tr>
2787</table>
2788</div><div class="memdoc">
2789
Jenkins52ba29e2018-08-29 15:32:11 +00002790<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00341">341</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002791
Anthony Barbier8140e1e2017-12-14 23:48:46 +00002792</div>
2793</div>
2794</div><!-- contents -->
2795</div><!-- doc-content -->
2796<!-- start footer part -->
2797<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
2798 <ul>
2799 <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.xhtml">src</a></li><li class="navelem"><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.xhtml">core</a></li><li class="navelem"><a class="el" href="dir_8c278f79c760e5c5fbd911f9870614c1.xhtml">CL</a></li><li class="navelem"><a class="el" href="dir_25885286e9dad4fa105b7b25a8031bbf.xhtml">cl_kernels</a></li><li class="navelem"><a class="el" href="helpers__asymm_8h.xhtml">helpers_asymm.h</a></li>
Jenkins52ba29e2018-08-29 15:32:11 +00002800 <li class="footer">Generated on Wed Aug 29 2018 15:31:38 for Compute Library by
Anthony Barbier8140e1e2017-12-14 23:48:46 +00002801 <a href="http://www.doxygen.org/index.html">
2802 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
2803 </ul>
2804</div>
2805</body>
2806</html>