blob: 09d379270716ca8eeef7b29be75ba1f9c9046af5 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mxnet: /work/mxnet/3rdparty/mshadow/mshadow/expression.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">mxnet
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_3e48ced36faa4eaa1b41f6d960bf0edb.html">mshadow</a></li><li class="navelem"><a class="el" href="dir_00b035bb2ad81894e6ad291054ea5f82.html">mshadow</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">expression.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="expression_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * KIND, either express or implied. See the License for the</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * under the License.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#ifndef MSHADOW_EXPRESSION_H_</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#define MSHADOW_EXPRESSION_H_</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html">./base.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemshadow.html">mshadow</a> {</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">namespace </span>expr {</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr_1_1type.html"> 38</a></span>&#160;<span class="keyword">namespace </span>type {</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// type expression type are defined as bitmask</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">// subtype relationshop kRValue &lt; kMapper &lt; kPull &lt; kComplex</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr_1_1type.html#a087b8526cc89b1ecf343d0ba363c4bc6"> 45</a></span>&#160;<span class="comment"></span><span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacemshadow_1_1expr_1_1type.html#a087b8526cc89b1ecf343d0ba363c4bc6">kRValue</a> = 0;</div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca"> 50</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">kMapper</a> = 1;</div>
<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr_1_1type.html#a4b13cee4847e885783f2d60deac391df"> 56</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacemshadow_1_1expr_1_1type.html#a4b13cee4847e885783f2d60deac391df">kChainer</a> = 3;</div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr_1_1type.html#a2c0e6f39c75bd68402f9ad902bb452c2"> 58</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacemshadow_1_1expr_1_1type.html#a2c0e6f39c75bd68402f9ad902bb452c2">kComplex</a> = 7;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;} <span class="comment">// namespace type</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Saver, <span class="keyword">typename</span> RValue, <span class="keyword">typename</span> DType&gt;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1ExpEngine.html">ExpEngine</a>;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">// template&lt;typename EType&gt;</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">// inline static void Eval(RValue *dst, const EType &amp;exp);</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> SubType, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> exp_type&gt;</div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1Exp.html"> 79</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp</a> {</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f"> 82</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> SubType&amp; <span class="keyword">self</span>(void) <span class="keyword">const</span> {</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">static_cast&lt;</span><span class="keyword">const </span>SubType*<span class="keyword">&gt;</span>(<span class="keyword">this</span>);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div>
<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22"> 86</a></span>&#160; <span class="keyword">inline</span> SubType* <a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>(<span class="keywordtype">void</span>) {</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>SubType*<span class="keyword">&gt;</span>(<span class="keyword">this</span>);</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;};</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> DType&gt;</div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ScalarExp.html"> 95</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1ScalarExp.html">ScalarExp</a>: <span class="keyword">public</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp</a>&lt;ScalarExp&lt;DType&gt;, DType, type::kMapper&gt; {</div>
<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ScalarExp.html#a8c1e8ed3c405b3fc464861a47ab13a0a"> 97</a></span>&#160; DType <a class="code" href="structmshadow_1_1expr_1_1ScalarExp.html#a8c1e8ed3c405b3fc464861a47ab13a0a">scalar_</a>;</div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ScalarExp.html#ac0000fe460cacabcaca616b2102cd7b2"> 99</a></span>&#160; <a class="code" href="structmshadow_1_1expr_1_1ScalarExp.html#ac0000fe460cacabcaca616b2102cd7b2">ScalarExp</a>(DType <a class="code" href="namespacemshadow_1_1expr.html#ac547eb1dceee713542019c2cc6da378b">scalar</a>) : <a class="code" href="structmshadow_1_1expr_1_1ScalarExp.html#a8c1e8ed3c405b3fc464861a47ab13a0a">scalar_</a>(<a class="code" href="namespacemshadow_1_1expr.html#ac547eb1dceee713542019c2cc6da378b">scalar</a>) {} <span class="comment">// NOLINT(*)</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;};</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> DType&gt;</div>
<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#ac547eb1dceee713542019c2cc6da378b"> 103</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ScalarExp.html">ScalarExp&lt;DType&gt;</a> <a class="code" href="namespacemshadow_1_1expr.html#ac547eb1dceee713542019c2cc6da378b">scalar</a>(DType s) {</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1ScalarExp.html">ScalarExp&lt;DType&gt;</a>(s);</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;}</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> DstDType, <span class="keyword">typename</span> SrcDType, <span class="keyword">typename</span> EType, <span class="keywordtype">int</span> etype&gt;</div>
<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1TypecastExp.html"> 114</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1TypecastExp.html">TypecastExp</a>:</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">public</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp</a>&lt;TypecastExp&lt;DstDType, SrcDType, EType, etype&gt;,</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; DstDType, etype&gt; {</div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1TypecastExp.html#ab06a667c92d1e065532653024e603719"> 118</a></span>&#160; <span class="keyword">const</span> EType &amp;<a class="code" href="structmshadow_1_1expr_1_1TypecastExp.html#ab06a667c92d1e065532653024e603719">exp</a>;</div>
<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1TypecastExp.html#aaea147667aa7a286cd47ea0406da2b83"> 120</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="structmshadow_1_1expr_1_1TypecastExp.html#aaea147667aa7a286cd47ea0406da2b83">TypecastExp</a>(<span class="keyword">const</span> EType &amp;e) : <a class="code" href="structmshadow_1_1expr_1_1TypecastExp.html#ab06a667c92d1e065532653024e603719">exp</a>(e) {}</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;};</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> DstDType, <span class="keyword">typename</span> SrcDType,</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">typename</span> EType, <span class="keywordtype">int</span> etype&gt;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keyword">inline</span> TypecastExp&lt;DstDType, SrcDType, EType, (etype|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div>
<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a513b76339ce18f021c559e17759137fd"> 126</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a513b76339ce18f021c559e17759137fd">tcast</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;EType, SrcDType, etype&gt;</a> &amp;exp) {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1TypecastExp.html">TypecastExp&lt;DstDType, SrcDType, EType, (etype|type::kMapper)&gt;</a>(exp.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>());</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;}</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> EType, <span class="keyword">typename</span> DType&gt;</div>
<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1TransposeExp.html"> 131</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html">TransposeExp</a>: <span class="keyword">public</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp</a>&lt;TransposeExp&lt;EType, DType&gt;,</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; DType, type::kChainer&gt; {</div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1TransposeExp.html#a4dc0f3df318d1d4b21fb6630dae7edb9"> 134</a></span>&#160; <span class="keyword">const</span> EType &amp;<a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html#a4dc0f3df318d1d4b21fb6630dae7edb9">exp</a>;</div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1TransposeExp.html#aedd49aa2530e247ea7a38ac4046f91be"> 136</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html#aedd49aa2530e247ea7a38ac4046f91be">TransposeExp</a>(<span class="keyword">const</span> EType &amp;e) : <a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html#a4dc0f3df318d1d4b21fb6630dae7edb9">exp</a>(e) {}</div>
<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1TransposeExp.html#add20967231669c6eaf184845787af184"> 138</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> EType &amp;<a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html#add20967231669c6eaf184845787af184">T</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html#a4dc0f3df318d1d4b21fb6630dae7edb9">exp</a>;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;};</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Container, <span class="keyword">typename</span> DType&gt;</div>
<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1RValueExp.html"> 148</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmshadow_1_1expr_1_1RValueExp.html">RValueExp</a>: <span class="keyword">public</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp</a>&lt;Container, DType, type::kRValue&gt; {</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1RValueExp.html#afbddc739cc4f38e6509be4fcab0c6158"> 154</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html">TransposeExp&lt;Container, DType&gt;</a> <a class="code" href="classmshadow_1_1expr_1_1RValueExp.html#afbddc739cc4f38e6509be4fcab0c6158">T</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html">TransposeExp&lt;Container, DType&gt;</a>(this-&gt;<span class="keyword">self</span>());</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div>
<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1RValueExp.html#a9b71e7ff1b97916f59e80189d00c3397"> 158</a></span>&#160; <span class="keyword">inline</span> Container &amp;<a class="code" href="classmshadow_1_1expr_1_1RValueExp.html#a9b71e7ff1b97916f59e80189d00c3397">operator+=</a>(DType s) {</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="structmshadow_1_1expr_1_1ExpEngine.html#a3b062e4fdaea220232e1d2bcb8719510">ExpEngine&lt;sv::plusto, Container, DType&gt;::Eval</a>(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>(), scalar&lt;DType&gt;(s));</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> *(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>());</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div>
<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1RValueExp.html#a5a57ebc2e4664dbd449d5fad81437971"> 163</a></span>&#160; <span class="keyword">inline</span> Container &amp;<a class="code" href="classmshadow_1_1expr_1_1RValueExp.html#a5a57ebc2e4664dbd449d5fad81437971">operator-=</a>(DType s) {</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="structmshadow_1_1expr_1_1ExpEngine.html#a3b062e4fdaea220232e1d2bcb8719510">ExpEngine&lt;sv::minusto, Container, DType&gt;::Eval</a>(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>(), scalar&lt;DType&gt;(s));</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> *(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>());</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div>
<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1RValueExp.html#a2e48826ba1a6652d414fc3f18e7da7d3"> 168</a></span>&#160; <span class="keyword">inline</span> Container &amp;<a class="code" href="classmshadow_1_1expr_1_1RValueExp.html#a2e48826ba1a6652d414fc3f18e7da7d3">operator*=</a>(DType s) {</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="structmshadow_1_1expr_1_1ExpEngine.html#a3b062e4fdaea220232e1d2bcb8719510">ExpEngine&lt;sv::multo, Container, DType&gt;::Eval</a>(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>(), scalar&lt;DType&gt;(s));</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> *(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>());</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div>
<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1RValueExp.html#a74899aa6fba6c7244733947b2082e419"> 173</a></span>&#160; <span class="keyword">inline</span> Container &amp;<a class="code" href="classmshadow_1_1expr_1_1RValueExp.html#a74899aa6fba6c7244733947b2082e419">operator/=</a>(DType s) {</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="structmshadow_1_1expr_1_1ExpEngine.html#a3b062e4fdaea220232e1d2bcb8719510">ExpEngine&lt;sv::divto, Container, DType&gt;::Eval</a>(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>(), scalar&lt;DType&gt;(s));</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> *(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>());</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1RValueExp.html#a97259deba3e7b8b1876e1c032f62bd08"> 178</a></span>&#160; <span class="keyword">inline</span> Container &amp;<a class="code" href="classmshadow_1_1expr_1_1RValueExp.html#a97259deba3e7b8b1876e1c032f62bd08">__assign</a>(DType s) {</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="structmshadow_1_1expr_1_1ExpEngine.html#a3b062e4fdaea220232e1d2bcb8719510">ExpEngine&lt;sv::saveto, Container, DType&gt;::Eval</a>(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>(), scalar&lt;DType&gt;(s));</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> *(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>());</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> E, <span class="keywordtype">int</span> etype&gt;</div>
<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1RValueExp.html#a77989f0785ef5c2155af97b1387bf74d"> 184</a></span>&#160; <span class="keyword">inline</span> Container &amp;<a class="code" href="classmshadow_1_1expr_1_1RValueExp.html#a77989f0785ef5c2155af97b1387bf74d">__assign</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;E, DType, etype&gt;</a> &amp;exp) {</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="structmshadow_1_1expr_1_1ExpEngine.html#a3b062e4fdaea220232e1d2bcb8719510">ExpEngine&lt;sv::saveto, Container, DType&gt;::Eval</a>(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>(), exp.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>());</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> *(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>());</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">inline</span> Container &amp;<a class="code" href="classmshadow_1_1expr_1_1RValueExp.html#a97259deba3e7b8b1876e1c032f62bd08">__assign</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;Container, DType, type::kRValue&gt;</a> &amp;exp);</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> E, <span class="keywordtype">int</span> etype&gt;</div>
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1RValueExp.html#a90fd315110a1411242d01910a62606b0"> 192</a></span>&#160; <span class="keyword">inline</span> Container &amp;<a class="code" href="classmshadow_1_1expr_1_1RValueExp.html#a90fd315110a1411242d01910a62606b0">operator+=</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;E, DType, etype&gt;</a> &amp;exp) {</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="structmshadow_1_1expr_1_1ExpEngine.html#a3b062e4fdaea220232e1d2bcb8719510">ExpEngine&lt;sv::plusto, Container, DType&gt;::Eval</a>(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>(), exp.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>());</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span> *(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>());</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> E, <span class="keywordtype">int</span> etype&gt;</div>
<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1RValueExp.html#af17249e9767315e4354b47a6f8d32863"> 198</a></span>&#160; <span class="keyword">inline</span> Container &amp;<a class="code" href="classmshadow_1_1expr_1_1RValueExp.html#af17249e9767315e4354b47a6f8d32863">operator-=</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;E, DType, etype&gt;</a> &amp;exp) {</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="structmshadow_1_1expr_1_1ExpEngine.html#a3b062e4fdaea220232e1d2bcb8719510">ExpEngine&lt;sv::minusto, Container, DType&gt;::Eval</a>(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>(), exp.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>());</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> *(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>());</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> E, <span class="keywordtype">int</span> etype&gt;</div>
<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1RValueExp.html#a00168acddb335d598037453e72442f35"> 204</a></span>&#160; <span class="keyword">inline</span> Container &amp;<a class="code" href="classmshadow_1_1expr_1_1RValueExp.html#a00168acddb335d598037453e72442f35">operator*=</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;E, DType, etype&gt;</a> &amp;exp) {</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="structmshadow_1_1expr_1_1ExpEngine.html#a3b062e4fdaea220232e1d2bcb8719510">ExpEngine&lt;sv::multo, Container, DType&gt;::Eval</a>(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>(), exp.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>());</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> *(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>());</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> E, <span class="keywordtype">int</span> etype&gt;</div>
<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1RValueExp.html#abe11ee1a68265237fc9b64aee7df0ff4"> 210</a></span>&#160; <span class="keyword">inline</span> Container &amp;<a class="code" href="classmshadow_1_1expr_1_1RValueExp.html#abe11ee1a68265237fc9b64aee7df0ff4">operator/=</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;E, DType, etype&gt;</a> &amp;exp) {</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="structmshadow_1_1expr_1_1ExpEngine.html#a3b062e4fdaea220232e1d2bcb8719510">ExpEngine&lt;sv::divto, Container, DType&gt;::Eval</a>(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>(), exp.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>());</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> *(this-&gt;<a class="code" href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">ptrself</a>());</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;};</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keywordtype">bool</span> ltrans, <span class="keywordtype">bool</span> rtrans, <span class="keyword">typename</span> DType&gt;</div>
<div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1DotExp.html"> 224</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1DotExp.html">DotExp</a>: <span class="keyword">public</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp</a>&lt;DotExp&lt;TA, TB, ltrans, rtrans, DType&gt;,</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; DType, type::kComplex&gt; {</div>
<div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1DotExp.html#a2a38e4b023f1fc0e379973f5cc081662"> 227</a></span>&#160; <span class="keyword">const</span> TA &amp;<a class="code" href="structmshadow_1_1expr_1_1DotExp.html#a2a38e4b023f1fc0e379973f5cc081662">lhs_</a>;</div>
<div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1DotExp.html#adb6e2f6570662aff428a2432dfc07e6f"> 229</a></span>&#160; <span class="keyword">const</span> TB &amp;<a class="code" href="structmshadow_1_1expr_1_1DotExp.html#adb6e2f6570662aff428a2432dfc07e6f">rhs_</a>;</div>
<div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1DotExp.html#a6fa3faab0b6b6bd027a14a7a80bf2f4a"> 231</a></span>&#160; DType <a class="code" href="structmshadow_1_1expr_1_1DotExp.html#a6fa3faab0b6b6bd027a14a7a80bf2f4a">scale_</a>;</div>
<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1DotExp.html#abb9d8d8927cd0dae640564406b0c7c53"> 233</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="structmshadow_1_1expr_1_1DotExp.html#abb9d8d8927cd0dae640564406b0c7c53">DotExp</a>(<span class="keyword">const</span> TA &amp;lhs, <span class="keyword">const</span> TB &amp;rhs, DType scale)</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; : <a class="code" href="structmshadow_1_1expr_1_1DotExp.html#a2a38e4b023f1fc0e379973f5cc081662">lhs_</a>(lhs), <a class="code" href="structmshadow_1_1expr_1_1DotExp.html#adb6e2f6570662aff428a2432dfc07e6f">rhs_</a>(rhs), <a class="code" href="structmshadow_1_1expr_1_1DotExp.html#a6fa3faab0b6b6bd027a14a7a80bf2f4a">scale_</a>(scale) {}</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;};</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment">// definition of dot expression</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> DType&gt;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="keyword">inline</span> DotExp&lt;TA, TB, false, false, DType&gt;</div>
<div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a496d2f5fb874d0a8d59b6a0b4374e2df"> 240</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a496d2f5fb874d0a8d59b6a0b4374e2df">dot</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1RValueExp.html">RValueExp&lt;TA, DType&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1RValueExp.html">RValueExp&lt;TB, DType&gt;</a> &amp;rhs) {</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1DotExp.html">DotExp&lt;TA, TB, false, false, DType&gt;</a>(lhs.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>(), rhs.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>(), DType(1.0f));</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;}</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> DType&gt;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="keyword">inline</span> DotExp&lt;TA, TB, true, false, DType&gt;</div>
<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#af130ed37f8182c86209b1e5679c4c53a"> 246</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a496d2f5fb874d0a8d59b6a0b4374e2df">dot</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html">TransposeExp&lt;TA, DType&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1RValueExp.html">RValueExp&lt;TB, DType&gt;</a> &amp;rhs) {</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1DotExp.html">DotExp&lt;TA, TB, true, false, DType&gt;</a>(lhs.<a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html#a4dc0f3df318d1d4b21fb6630dae7edb9">exp</a>, rhs.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>(), DType(1.0f));</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> DType&gt;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="keyword">inline</span> DotExp&lt;TA, TB, false, true, DType&gt;</div>
<div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a96329b25d94f1c7a6ad0cfe74cc0cd01"> 252</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a496d2f5fb874d0a8d59b6a0b4374e2df">dot</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1RValueExp.html">RValueExp&lt;TA, DType&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html">TransposeExp&lt;TB, DType&gt;</a> &amp;rhs) {</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1DotExp.html">DotExp&lt;TA, TB, false, true, DType&gt;</a>(lhs.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>(), rhs.<a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html#a4dc0f3df318d1d4b21fb6630dae7edb9">exp</a>, DType(1.0f));</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;}</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> DType&gt;</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="keyword">inline</span> DotExp&lt;TA, TB, true, true, DType&gt;</div>
<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a8857dc8dec6fc72b6a4087d6c3201363"> 258</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a496d2f5fb874d0a8d59b6a0b4374e2df">dot</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html">TransposeExp&lt;TA, DType&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html">TransposeExp&lt;TB, DType&gt;</a> &amp;rhs) {</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1DotExp.html">DotExp&lt;TA, TB, true, true, DType&gt;</a>(lhs.<a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html#a4dc0f3df318d1d4b21fb6630dae7edb9">exp</a>, rhs.<a class="code" href="structmshadow_1_1expr_1_1TransposeExp.html#a4dc0f3df318d1d4b21fb6630dae7edb9">exp</a>, DType(1.0f));</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;}</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">bool</span> transpose_left, <span class="keywordtype">bool</span> transpose_right, <span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> DType&gt;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="keyword">inline</span> DotExp&lt;TA, TB, transpose_left, transpose_right, DType&gt;</div>
<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a1f9c3a5d39b8b252ff12fe691665db2e"> 264</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a1f9c3a5d39b8b252ff12fe691665db2e">batch_dot</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1RValueExp.html">RValueExp&lt;TA, DType&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1RValueExp.html">RValueExp&lt;TB, DType&gt;</a> &amp;rhs) {</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1DotExp.html">DotExp&lt;TA, TB, transpose_left, transpose_right, DType&gt;</a>(</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; lhs.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>(), rhs.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>(), DType(1.0f));</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;}</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment">//---------------</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment">// TernaryMapExp</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment">// --------------</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> TC, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> etype&gt;</div>
<div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1TernaryMapExp.html"> 279</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1TernaryMapExp.html">TernaryMapExp</a>: <span class="keyword">public</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp</a>&lt;TernaryMapExp&lt;OP, TA, TB, TC, DType, etype&gt;,</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; DType, etype&gt; {</div>
<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1TernaryMapExp.html#a2c0e60dca07dc380daaf466bf3865d50"> 282</a></span>&#160; <span class="keyword">const</span> TA &amp;<a class="code" href="structmshadow_1_1expr_1_1TernaryMapExp.html#a2c0e60dca07dc380daaf466bf3865d50">item1_</a>;</div>
<div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1TernaryMapExp.html#a357cad3472616e53a72e8fdd789ae2be"> 284</a></span>&#160; <span class="keyword">const</span> TB &amp;<a class="code" href="structmshadow_1_1expr_1_1TernaryMapExp.html#a357cad3472616e53a72e8fdd789ae2be">item2_</a>;</div>
<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1TernaryMapExp.html#af59015a8e257dc844f30cd57b864490f"> 286</a></span>&#160; <span class="keyword">const</span> TC &amp;<a class="code" href="structmshadow_1_1expr_1_1TernaryMapExp.html#af59015a8e257dc844f30cd57b864490f">item3_</a>;</div>
<div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1TernaryMapExp.html#a0398189bd6c5398c2b04d3cf1e10e31c"> 288</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="structmshadow_1_1expr_1_1TernaryMapExp.html#a0398189bd6c5398c2b04d3cf1e10e31c">TernaryMapExp</a>(<span class="keyword">const</span> TA &amp;item1, <span class="keyword">const</span> TB &amp;item2, <span class="keyword">const</span> TC &amp;item3)</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; :<a class="code" href="structmshadow_1_1expr_1_1TernaryMapExp.html#a2c0e60dca07dc380daaf466bf3865d50">item1_</a>(item1), <a class="code" href="structmshadow_1_1expr_1_1TernaryMapExp.html#a357cad3472616e53a72e8fdd789ae2be">item2_</a>(item2), <a class="code" href="structmshadow_1_1expr_1_1TernaryMapExp.html#af59015a8e257dc844f30cd57b864490f">item3_</a>(item3) {}</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;};</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; </div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> TC, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> ta, <span class="keywordtype">int</span> tb, <span class="keywordtype">int</span> tc&gt;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="keyword">inline</span> TernaryMapExp&lt;OP, TA, TB, TC, DType, (ta|tb|tc|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div>
<div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a442b8eeb8062cb8994c093f74d28c590"> 295</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a442b8eeb8062cb8994c093f74d28c590">MakeExp</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TA, DType, ta&gt;</a> &amp;item1, <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TB, DType, tb&gt;</a> &amp;item2,</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TC, DType, tc&gt;</a> &amp;item3) {</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1TernaryMapExp.html">TernaryMapExp</a>&lt;OP, TA, TB, TC, DType,</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; (ta|tb|tc|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;(item1.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>(), item2.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>(), item3.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>());</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;}</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment">// Ternary</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> TC, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> ta, <span class="keywordtype">int</span> tb, <span class="keywordtype">int</span> tc&gt;</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="keyword">inline</span> TernaryMapExp&lt;OP, TA, TB, TC, DType, (ta|tb|tc|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div>
<div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a35d03249156f3202fa2411370194d26b"> 319</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a78641f307f27330ec67149865eb2222f">F</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TA, DType, ta&gt;</a> &amp;item1, <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TB, DType, tb&gt;</a> &amp;item2,</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TC, DType, tc&gt;</a> &amp;item3) {</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> MakeExp&lt;OP&gt;(item1, item2, item3);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;}</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="comment">//---------------</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment">// BinaryMapExp</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment">// --------------</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> etype&gt;</div>
<div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1BinaryMapExp.html"> 334</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1BinaryMapExp.html">BinaryMapExp</a>: <span class="keyword">public</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp</a>&lt;BinaryMapExp&lt;OP, TA, TB, DType, etype&gt;,</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; DType, etype&gt; {</div>
<div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1BinaryMapExp.html#ae4d3d912e56bbad508abeeed4743c38c"> 337</a></span>&#160; <span class="keyword">const</span> TA &amp;<a class="code" href="structmshadow_1_1expr_1_1BinaryMapExp.html#ae4d3d912e56bbad508abeeed4743c38c">lhs_</a>;</div>
<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1BinaryMapExp.html#a9afdad54a6a226b251fc4cd4ed92050f"> 339</a></span>&#160; <span class="keyword">const</span> TB &amp;<a class="code" href="structmshadow_1_1expr_1_1BinaryMapExp.html#a9afdad54a6a226b251fc4cd4ed92050f">rhs_</a>;</div>
<div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1BinaryMapExp.html#a6d8c85b45bf135282092125b133dd3f7"> 341</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="structmshadow_1_1expr_1_1BinaryMapExp.html#a6d8c85b45bf135282092125b133dd3f7">BinaryMapExp</a>(<span class="keyword">const</span> TA &amp;lhs, <span class="keyword">const</span> TB &amp;rhs)</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; :<a class="code" href="structmshadow_1_1expr_1_1BinaryMapExp.html#ae4d3d912e56bbad508abeeed4743c38c">lhs_</a>(lhs), <a class="code" href="structmshadow_1_1expr_1_1BinaryMapExp.html#a9afdad54a6a226b251fc4cd4ed92050f">rhs_</a>(rhs) {}</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;};</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; </div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> ta, <span class="keywordtype">int</span> tb&gt;</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="keyword">inline</span> BinaryMapExp&lt;OP, TA, TB, DType, (ta|tb|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div>
<div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a7c4f7f5cef472d6843e13ca4e5b5e396"> 348</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a442b8eeb8062cb8994c093f74d28c590">MakeExp</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TA, DType, ta&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TB, DType, tb&gt;</a> &amp;rhs) {</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1BinaryMapExp.html">BinaryMapExp</a>&lt;OP, TA, TB, DType,</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; (ta|tb|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;(lhs.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>(), rhs.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>());</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;}</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> ta, <span class="keywordtype">int</span> tb&gt;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="keyword">inline</span> BinaryMapExp&lt;OP, TA, TB, DType, (ta|tb|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div>
<div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a81957f05f494b745aa7d817c747cbdd6"> 366</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a78641f307f27330ec67149865eb2222f">F</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TA, DType, ta&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TB, DType, tb&gt;</a> &amp;rhs) {</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> MakeExp&lt;OP&gt;(lhs, rhs);</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;}</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="comment">// operator rules</span></div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> ta, <span class="keywordtype">int</span> tb&gt;</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="keyword">inline</span> BinaryMapExp&lt;<a class="code" href="structmshadow_1_1op_1_1plus.html">op::plus</a>, TA, TB, DType, (ta|tb|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div>
<div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a5e09e9fb33de05e81dfc9f80251a59a7"> 373</a></span>&#160;<span class="keyword">operator</span>+(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TA, DType, ta&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TB, DType, tb&gt;</a> &amp;rhs) {</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> MakeExp&lt;op::plus&gt;(lhs, rhs);</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;}</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> ta, <span class="keywordtype">int</span> tb&gt;</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="keyword">inline</span> BinaryMapExp&lt;<a class="code" href="structmshadow_1_1op_1_1minus.html">op::minus</a>, TA, TB, DType, (ta|tb|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div>
<div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a655e4f6c60a2673860c2dc23c218266b"> 379</a></span>&#160;<span class="keyword">operator</span>-(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TA, DType, ta&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TB, DType, tb&gt;</a> &amp;rhs) {</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">return</span> MakeExp&lt;op::minus&gt;(lhs, rhs);</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;}</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> ta, <span class="keywordtype">int</span> tb&gt;</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="keyword">inline</span> BinaryMapExp&lt;<a class="code" href="structmshadow_1_1op_1_1mul.html">op::mul</a>, TA, TB, DType, (ta|tb|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div>
<div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a1858113c1415f381b4699fe0a2fd5db5"> 385</a></span>&#160;<span class="keyword">operator</span>*(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TA, DType, ta&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TB, DType, tb&gt;</a> &amp;rhs) {</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span> MakeExp&lt;op::mul&gt;(lhs, rhs);</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;}</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> ta, <span class="keywordtype">int</span> tb&gt;</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="keyword">inline</span> BinaryMapExp&lt;<a class="code" href="structmshadow_1_1op_1_1div.html">op::div</a>, TA, TB, DType, (ta|tb|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div>
<div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a4ef511dcd1a5962b443e39e849afe570"> 391</a></span>&#160;<span class="keyword">operator</span>/(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TA, DType, ta&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TB, DType, tb&gt;</a> &amp;rhs) {</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span> MakeExp&lt;op::div&gt;(lhs, rhs);</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;}</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment">//---------------</span></div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment">// UnaryMapExp</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment">// --------------</span></div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> etype&gt;</div>
<div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1UnaryMapExp.html"> 404</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1UnaryMapExp.html">UnaryMapExp</a>: <span class="keyword">public</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp</a>&lt;UnaryMapExp&lt;OP, TA, DType, etype&gt;,</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; DType, etype&gt; {</div>
<div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1UnaryMapExp.html#a2916051247ff9e5f1ff4c5020738d36c"> 407</a></span>&#160; <span class="keyword">const</span> TA &amp;<a class="code" href="structmshadow_1_1expr_1_1UnaryMapExp.html#a2916051247ff9e5f1ff4c5020738d36c">src_</a>;</div>
<div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1UnaryMapExp.html#a2979e6396e5b22d347cd785f14e3675a"> 409</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="structmshadow_1_1expr_1_1UnaryMapExp.html#a2979e6396e5b22d347cd785f14e3675a">UnaryMapExp</a>(<span class="keyword">const</span> TA &amp;src) : <a class="code" href="structmshadow_1_1expr_1_1UnaryMapExp.html#a2916051247ff9e5f1ff4c5020738d36c">src_</a>(src) {}</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;};</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; </div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> ta&gt;</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="keyword">inline</span> UnaryMapExp&lt;OP, TA, DType, (ta|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div>
<div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#ade38b0eaf0a6f67cea58c85e09c70a66"> 415</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a442b8eeb8062cb8994c093f74d28c590">MakeExp</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TA, DType, ta&gt;</a> &amp;src) {</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1UnaryMapExp.html">UnaryMapExp&lt;OP, TA, DType, (ta|type::kMapper)&gt;</a>(src.<a class="code" href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">self</a>());</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;}</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> ta&gt;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="keyword">inline</span> UnaryMapExp&lt;OP, TA, DType, (ta|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div>
<div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a4497b70d1fcd20ec79449c2a35409b49"> 429</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a78641f307f27330ec67149865eb2222f">F</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;TA, DType, ta&gt;</a> &amp;src) {</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">return</span> MakeExp&lt;OP&gt;(src);</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;}</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;} <span class="comment">// namespace expr</span></div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;} <span class="comment">// namespace mshadow</span></div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="preprocessor">#endif // MSHADOW_EXPRESSION_H_</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="astructmshadow_1_1expr_1_1Exp_html_adb7e4afd0baed78d66cff87de0a6621f"><div class="ttname"><a href="structmshadow_1_1expr_1_1Exp.html#adb7e4afd0baed78d66cff87de0a6621f">mshadow::expr::Exp::self</a></div><div class="ttdeci">const SubType &amp; self(void) const</div><div class="ttdef"><b>Definition:</b> expression.h:82</div></div>
<div class="ttc" id="anamespacemshadow_1_1expr_html_ac547eb1dceee713542019c2cc6da378b"><div class="ttname"><a href="namespacemshadow_1_1expr.html#ac547eb1dceee713542019c2cc6da378b">mshadow::expr::scalar</a></div><div class="ttdeci">ScalarExp&lt; DType &gt; scalar(DType s)</div><div class="ttdoc">create an scalar expression</div><div class="ttdef"><b>Definition:</b> expression.h:103</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1TypecastExp_html_ab06a667c92d1e065532653024e603719"><div class="ttname"><a href="structmshadow_1_1expr_1_1TypecastExp.html#ab06a667c92d1e065532653024e603719">mshadow::expr::TypecastExp::exp</a></div><div class="ttdeci">const EType &amp; exp</div><div class="ttdoc">expression to be typecasted</div><div class="ttdef"><b>Definition:</b> expression.h:118</div></div>
<div class="ttc" id="anamespacemshadow_1_1expr_html_a442b8eeb8062cb8994c093f74d28c590"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a442b8eeb8062cb8994c093f74d28c590">mshadow::expr::MakeExp</a></div><div class="ttdeci">TernaryMapExp&lt; OP, TA, TB, TC, DType,(ta|tb|tc|type::kMapper)&gt; MakeExp(const Exp&lt; TA, DType, ta &gt; &amp;item1, const Exp&lt; TB, DType, tb &gt; &amp;item2, const Exp&lt; TC, DType, tc &gt; &amp;item3)</div><div class="ttdoc">make expression</div><div class="ttdef"><b>Definition:</b> expression.h:295</div></div>
<div class="ttc" id="aclassmshadow_1_1expr_1_1RValueExp_html_abe11ee1a68265237fc9b64aee7df0ff4"><div class="ttname"><a href="classmshadow_1_1expr_1_1RValueExp.html#abe11ee1a68265237fc9b64aee7df0ff4">mshadow::expr::RValueExp::operator/=</a></div><div class="ttdeci">Container &amp; operator/=(const Exp&lt; E, DType, etype &gt; &amp;exp)</div><div class="ttdoc">implementation of operator/=</div><div class="ttdef"><b>Definition:</b> expression.h:210</div></div>
<div class="ttc" id="aclassmshadow_1_1expr_1_1RValueExp_html_afbddc739cc4f38e6509be4fcab0c6158"><div class="ttname"><a href="classmshadow_1_1expr_1_1RValueExp.html#afbddc739cc4f38e6509be4fcab0c6158">mshadow::expr::RValueExp::T</a></div><div class="ttdeci">const TransposeExp&lt; Container, DType &gt; T(void) const</div><div class="ttdoc">transpose of a matrix</div><div class="ttdef"><b>Definition:</b> expression.h:154</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1TypecastExp_html_aaea147667aa7a286cd47ea0406da2b83"><div class="ttname"><a href="structmshadow_1_1expr_1_1TypecastExp.html#aaea147667aa7a286cd47ea0406da2b83">mshadow::expr::TypecastExp::TypecastExp</a></div><div class="ttdeci">TypecastExp(const EType &amp;e)</div><div class="ttdoc">constructor</div><div class="ttdef"><b>Definition:</b> expression.h:120</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1Exp_html_ad6f23b53ba2fc3c2b594cf2ddfba5b22"><div class="ttname"><a href="structmshadow_1_1expr_1_1Exp.html#ad6f23b53ba2fc3c2b594cf2ddfba5b22">mshadow::expr::Exp::ptrself</a></div><div class="ttdeci">SubType * ptrself(void)</div><div class="ttdef"><b>Definition:</b> expression.h:86</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1TypecastExp_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1TypecastExp.html">mshadow::expr::TypecastExp</a></div><div class="ttdoc">typecast expression, cast the type of elements</div><div class="ttdef"><b>Definition:</b> expression.h:114</div></div>
<div class="ttc" id="anamespacemshadow_1_1expr_html_a1f9c3a5d39b8b252ff12fe691665db2e"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a1f9c3a5d39b8b252ff12fe691665db2e">mshadow::expr::batch_dot</a></div><div class="ttdeci">DotExp&lt; TA, TB, transpose_left, transpose_right, DType &gt; batch_dot(const RValueExp&lt; TA, DType &gt; &amp;lhs, const RValueExp&lt; TB, DType &gt; &amp;rhs)</div><div class="ttdoc">batch_dot operator def</div><div class="ttdef"><b>Definition:</b> expression.h:264</div></div>
<div class="ttc" id="aclassmshadow_1_1expr_1_1RValueExp_html_a5a57ebc2e4664dbd449d5fad81437971"><div class="ttname"><a href="classmshadow_1_1expr_1_1RValueExp.html#a5a57ebc2e4664dbd449d5fad81437971">mshadow::expr::RValueExp::operator-=</a></div><div class="ttdeci">Container &amp; operator-=(DType s)</div><div class="ttdoc">operator overload</div><div class="ttdef"><b>Definition:</b> expression.h:163</div></div>
<div class="ttc" id="astructmshadow_1_1op_1_1minus_html"><div class="ttname"><a href="structmshadow_1_1op_1_1minus.html">mshadow::op::minus</a></div><div class="ttdoc">minus operator</div><div class="ttdef"><b>Definition:</b> base.h:641</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1DotExp_html_abb9d8d8927cd0dae640564406b0c7c53"><div class="ttname"><a href="structmshadow_1_1expr_1_1DotExp.html#abb9d8d8927cd0dae640564406b0c7c53">mshadow::expr::DotExp::DotExp</a></div><div class="ttdeci">DotExp(const TA &amp;lhs, const TB &amp;rhs, DType scale)</div><div class="ttdoc">constructor</div><div class="ttdef"><b>Definition:</b> expression.h:233</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1DotExp_html_a2a38e4b023f1fc0e379973f5cc081662"><div class="ttname"><a href="structmshadow_1_1expr_1_1DotExp.html#a2a38e4b023f1fc0e379973f5cc081662">mshadow::expr::DotExp::lhs_</a></div><div class="ttdeci">const TA &amp; lhs_</div><div class="ttdoc">left operand</div><div class="ttdef"><b>Definition:</b> expression.h:227</div></div>
<div class="ttc" id="astructmshadow_1_1op_1_1div_html"><div class="ttname"><a href="structmshadow_1_1op_1_1div.html">mshadow::op::div</a></div><div class="ttdoc">divide operator</div><div class="ttdef"><b>Definition:</b> base.h:649</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1TernaryMapExp_html_af59015a8e257dc844f30cd57b864490f"><div class="ttname"><a href="structmshadow_1_1expr_1_1TernaryMapExp.html#af59015a8e257dc844f30cd57b864490f">mshadow::expr::TernaryMapExp::item3_</a></div><div class="ttdeci">const TC &amp; item3_</div><div class="ttdoc">third operand</div><div class="ttdef"><b>Definition:</b> expression.h:286</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1ExpEngine_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1ExpEngine.html">mshadow::expr::ExpEngine</a></div><div class="ttdoc">the engine that dispatches simple operations</div><div class="ttdef"><b>Definition:</b> expr_engine-inl.h:460</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1TernaryMapExp_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1TernaryMapExp.html">mshadow::expr::TernaryMapExp</a></div><div class="ttdoc">ternary map expression</div><div class="ttdef"><b>Definition:</b> expression.h:279</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1TernaryMapExp_html_a2c0e60dca07dc380daaf466bf3865d50"><div class="ttname"><a href="structmshadow_1_1expr_1_1TernaryMapExp.html#a2c0e60dca07dc380daaf466bf3865d50">mshadow::expr::TernaryMapExp::item1_</a></div><div class="ttdeci">const TA &amp; item1_</div><div class="ttdoc">first operand</div><div class="ttdef"><b>Definition:</b> expression.h:282</div></div>
<div class="ttc" id="aclassmshadow_1_1expr_1_1RValueExp_html_a00168acddb335d598037453e72442f35"><div class="ttname"><a href="classmshadow_1_1expr_1_1RValueExp.html#a00168acddb335d598037453e72442f35">mshadow::expr::RValueExp::operator*=</a></div><div class="ttdeci">Container &amp; operator*=(const Exp&lt; E, DType, etype &gt; &amp;exp)</div><div class="ttdoc">implementation of operator*=</div><div class="ttdef"><b>Definition:</b> expression.h:204</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1BinaryMapExp_html_a6d8c85b45bf135282092125b133dd3f7"><div class="ttname"><a href="structmshadow_1_1expr_1_1BinaryMapExp.html#a6d8c85b45bf135282092125b133dd3f7">mshadow::expr::BinaryMapExp::BinaryMapExp</a></div><div class="ttdeci">BinaryMapExp(const TA &amp;lhs, const TB &amp;rhs)</div><div class="ttdoc">constructor</div><div class="ttdef"><b>Definition:</b> expression.h:341</div></div>
<div class="ttc" id="anamespacemshadow_1_1expr_html_a78641f307f27330ec67149865eb2222f"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a78641f307f27330ec67149865eb2222f">mshadow::expr::F</a></div><div class="ttdeci">BinaryMapExp&lt; OP, TA, ScalarExp&lt; MSHADOW_SCALAR_ &gt;, MSHADOW_SCALAR_,(ta|type::kMapper)&gt; F(const Exp&lt; TA, MSHADOW_SCALAR_, ta &gt; &amp;lhs, const ScalarExp&lt; MSHADOW_SCALAR_ &gt; &amp;rhs)</div><div class="ttdoc">operator overload for const</div><div class="ttdef"><b>Definition:</b> expr_scalar-inl.h:71</div></div>
<div class="ttc" id="anamespacemshadow_1_1expr_html_a513b76339ce18f021c559e17759137fd"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a513b76339ce18f021c559e17759137fd">mshadow::expr::tcast</a></div><div class="ttdeci">TypecastExp&lt; DstDType, SrcDType, EType,(etype|type::kMapper)&gt; tcast(const Exp&lt; EType, SrcDType, etype &gt; &amp;exp)</div><div class="ttdoc">create an scalar expression</div><div class="ttdef"><b>Definition:</b> expression.h:126</div></div>
<div class="ttc" id="anamespacemshadow_1_1expr_1_1type_html_aa700f17fa964d262266efd336d5c50ca"><div class="ttname"><a href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">mshadow::expr::type::kMapper</a></div><div class="ttdeci">const int kMapper</div><div class="ttdoc">expression contains element-wise tensor operations, map a expression to same shape</div><div class="ttdef"><b>Definition:</b> expression.h:50</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1BinaryMapExp_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1BinaryMapExp.html">mshadow::expr::BinaryMapExp</a></div><div class="ttdoc">binary map expression lhs [op] rhs</div><div class="ttdef"><b>Definition:</b> expression.h:334</div></div>
<div class="ttc" id="aclassmshadow_1_1expr_1_1RValueExp_html_af17249e9767315e4354b47a6f8d32863"><div class="ttname"><a href="classmshadow_1_1expr_1_1RValueExp.html#af17249e9767315e4354b47a6f8d32863">mshadow::expr::RValueExp::operator-=</a></div><div class="ttdeci">Container &amp; operator-=(const Exp&lt; E, DType, etype &gt; &amp;exp)</div><div class="ttdoc">implementation of operator-=</div><div class="ttdef"><b>Definition:</b> expression.h:198</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1TransposeExp_html_add20967231669c6eaf184845787af184"><div class="ttname"><a href="structmshadow_1_1expr_1_1TransposeExp.html#add20967231669c6eaf184845787af184">mshadow::expr::TransposeExp::T</a></div><div class="ttdeci">const EType &amp; T(void) const</div><div class="ttdoc">transpose expression</div><div class="ttdef"><b>Definition:</b> expression.h:138</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1DotExp_html_a6fa3faab0b6b6bd027a14a7a80bf2f4a"><div class="ttname"><a href="structmshadow_1_1expr_1_1DotExp.html#a6fa3faab0b6b6bd027a14a7a80bf2f4a">mshadow::expr::DotExp::scale_</a></div><div class="ttdeci">DType scale_</div><div class="ttdoc">scale over result</div><div class="ttdef"><b>Definition:</b> expression.h:231</div></div>
<div class="ttc" id="astructmshadow_1_1op_1_1plus_html"><div class="ttname"><a href="structmshadow_1_1op_1_1plus.html">mshadow::op::plus</a></div><div class="ttdoc">plus operator</div><div class="ttdef"><b>Definition:</b> base.h:633</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1DotExp_html_adb6e2f6570662aff428a2432dfc07e6f"><div class="ttname"><a href="structmshadow_1_1expr_1_1DotExp.html#adb6e2f6570662aff428a2432dfc07e6f">mshadow::expr::DotExp::rhs_</a></div><div class="ttdeci">const TB &amp; rhs_</div><div class="ttdoc">right operand</div><div class="ttdef"><b>Definition:</b> expression.h:229</div></div>
<div class="ttc" id="aclassmshadow_1_1expr_1_1RValueExp_html_a74899aa6fba6c7244733947b2082e419"><div class="ttname"><a href="classmshadow_1_1expr_1_1RValueExp.html#a74899aa6fba6c7244733947b2082e419">mshadow::expr::RValueExp::operator/=</a></div><div class="ttdeci">Container &amp; operator/=(DType s)</div><div class="ttdoc">operator overload</div><div class="ttdef"><b>Definition:</b> expression.h:173</div></div>
<div class="ttc" id="anamespacemshadow_1_1expr_1_1type_html_a2c0e6f39c75bd68402f9ad902bb452c2"><div class="ttname"><a href="namespacemshadow_1_1expr_1_1type.html#a2c0e6f39c75bd68402f9ad902bb452c2">mshadow::expr::type::kComplex</a></div><div class="ttdeci">const int kComplex</div><div class="ttdoc">othercase: e.g dot product</div><div class="ttdef"><b>Definition:</b> expression.h:58</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1UnaryMapExp_html_a2916051247ff9e5f1ff4c5020738d36c"><div class="ttname"><a href="structmshadow_1_1expr_1_1UnaryMapExp.html#a2916051247ff9e5f1ff4c5020738d36c">mshadow::expr::UnaryMapExp::src_</a></div><div class="ttdeci">const TA &amp; src_</div><div class="ttdoc">source expression</div><div class="ttdef"><b>Definition:</b> expression.h:407</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1TernaryMapExp_html_a357cad3472616e53a72e8fdd789ae2be"><div class="ttname"><a href="structmshadow_1_1expr_1_1TernaryMapExp.html#a357cad3472616e53a72e8fdd789ae2be">mshadow::expr::TernaryMapExp::item2_</a></div><div class="ttdeci">const TB &amp; item2_</div><div class="ttdoc">second operand</div><div class="ttdef"><b>Definition:</b> expression.h:284</div></div>
<div class="ttc" id="aclassmshadow_1_1expr_1_1RValueExp_html_a9b71e7ff1b97916f59e80189d00c3397"><div class="ttname"><a href="classmshadow_1_1expr_1_1RValueExp.html#a9b71e7ff1b97916f59e80189d00c3397">mshadow::expr::RValueExp::operator+=</a></div><div class="ttdeci">Container &amp; operator+=(DType s)</div><div class="ttdoc">operator overload</div><div class="ttdef"><b>Definition:</b> expression.h:158</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1ScalarExp_html_a8c1e8ed3c405b3fc464861a47ab13a0a"><div class="ttname"><a href="structmshadow_1_1expr_1_1ScalarExp.html#a8c1e8ed3c405b3fc464861a47ab13a0a">mshadow::expr::ScalarExp::scalar_</a></div><div class="ttdeci">DType scalar_</div><div class="ttdoc">scalar value</div><div class="ttdef"><b>Definition:</b> expression.h:97</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1ScalarExp_html_ac0000fe460cacabcaca616b2102cd7b2"><div class="ttname"><a href="structmshadow_1_1expr_1_1ScalarExp.html#ac0000fe460cacabcaca616b2102cd7b2">mshadow::expr::ScalarExp::ScalarExp</a></div><div class="ttdeci">ScalarExp(DType scalar)</div><div class="ttdoc">implicit constructor, MUST NOT BE explicit</div><div class="ttdef"><b>Definition:</b> expression.h:99</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1UnaryMapExp_html_a2979e6396e5b22d347cd785f14e3675a"><div class="ttname"><a href="structmshadow_1_1expr_1_1UnaryMapExp.html#a2979e6396e5b22d347cd785f14e3675a">mshadow::expr::UnaryMapExp::UnaryMapExp</a></div><div class="ttdeci">UnaryMapExp(const TA &amp;src)</div><div class="ttdoc">constructor</div><div class="ttdef"><b>Definition:</b> expression.h:409</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1BinaryMapExp_html_a9afdad54a6a226b251fc4cd4ed92050f"><div class="ttname"><a href="structmshadow_1_1expr_1_1BinaryMapExp.html#a9afdad54a6a226b251fc4cd4ed92050f">mshadow::expr::BinaryMapExp::rhs_</a></div><div class="ttdeci">const TB &amp; rhs_</div><div class="ttdoc">right operand</div><div class="ttdef"><b>Definition:</b> expression.h:339</div></div>
<div class="ttc" id="aclassmshadow_1_1expr_1_1RValueExp_html"><div class="ttname"><a href="classmshadow_1_1expr_1_1RValueExp.html">mshadow::expr::RValueExp</a></div><div class="ttdoc">base class of all rvalues</div><div class="ttdef"><b>Definition:</b> expression.h:148</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1Exp_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1Exp.html">mshadow::expr::Exp</a></div><div class="ttdoc">defines how expression exp can be evaluated and stored into dst</div><div class="ttdef"><b>Definition:</b> expression.h:79</div></div>
<div class="ttc" id="aclassmshadow_1_1expr_1_1RValueExp_html_a77989f0785ef5c2155af97b1387bf74d"><div class="ttname"><a href="classmshadow_1_1expr_1_1RValueExp.html#a77989f0785ef5c2155af97b1387bf74d">mshadow::expr::RValueExp::__assign</a></div><div class="ttdeci">Container &amp; __assign(const Exp&lt; E, DType, etype &gt; &amp;exp)</div><div class="ttdoc">we can not define container = container</div><div class="ttdef"><b>Definition:</b> expression.h:184</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1TransposeExp_html_aedd49aa2530e247ea7a38ac4046f91be"><div class="ttname"><a href="structmshadow_1_1expr_1_1TransposeExp.html#aedd49aa2530e247ea7a38ac4046f91be">mshadow::expr::TransposeExp::TransposeExp</a></div><div class="ttdeci">TransposeExp(const EType &amp;e)</div><div class="ttdoc">constructor</div><div class="ttdef"><b>Definition:</b> expression.h:136</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1TransposeExp_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1TransposeExp.html">mshadow::expr::TransposeExp</a></div><div class="ttdoc">represent a transpose expression of a container</div><div class="ttdef"><b>Definition:</b> expression.h:131</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1TransposeExp_html_a4dc0f3df318d1d4b21fb6630dae7edb9"><div class="ttname"><a href="structmshadow_1_1expr_1_1TransposeExp.html#a4dc0f3df318d1d4b21fb6630dae7edb9">mshadow::expr::TransposeExp::exp</a></div><div class="ttdeci">const EType &amp; exp</div><div class="ttdoc">expression to be transposed</div><div class="ttdef"><b>Definition:</b> expression.h:134</div></div>
<div class="ttc" id="anamespacemshadow_html"><div class="ttname"><a href="namespacemshadow.html">mshadow</a></div><div class="ttdoc">overloaded + operator between half_t and bf16_t</div><div class="ttdef"><b>Definition:</b> base.h:319</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1BinaryMapExp_html_ae4d3d912e56bbad508abeeed4743c38c"><div class="ttname"><a href="structmshadow_1_1expr_1_1BinaryMapExp.html#ae4d3d912e56bbad508abeeed4743c38c">mshadow::expr::BinaryMapExp::lhs_</a></div><div class="ttdeci">const TA &amp; lhs_</div><div class="ttdoc">left operand</div><div class="ttdef"><b>Definition:</b> expression.h:337</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1ExpEngine_html_a3b062e4fdaea220232e1d2bcb8719510"><div class="ttname"><a href="structmshadow_1_1expr_1_1ExpEngine.html#a3b062e4fdaea220232e1d2bcb8719510">mshadow::expr::ExpEngine::Eval</a></div><div class="ttdeci">static void Eval(RV *dst, const Exp&lt; E, DType, type::kMapper &gt; &amp;exp)</div><div class="ttdef"><b>Definition:</b> expr_engine-inl.h:462</div></div>
<div class="ttc" id="aclassmshadow_1_1expr_1_1RValueExp_html_a97259deba3e7b8b1876e1c032f62bd08"><div class="ttname"><a href="classmshadow_1_1expr_1_1RValueExp.html#a97259deba3e7b8b1876e1c032f62bd08">mshadow::expr::RValueExp::__assign</a></div><div class="ttdeci">Container &amp; __assign(DType s)</div><div class="ttdoc">operator overload</div><div class="ttdef"><b>Definition:</b> expression.h:178</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1TernaryMapExp_html_a0398189bd6c5398c2b04d3cf1e10e31c"><div class="ttname"><a href="structmshadow_1_1expr_1_1TernaryMapExp.html#a0398189bd6c5398c2b04d3cf1e10e31c">mshadow::expr::TernaryMapExp::TernaryMapExp</a></div><div class="ttdeci">TernaryMapExp(const TA &amp;item1, const TB &amp;item2, const TC &amp;item3)</div><div class="ttdoc">constructor</div><div class="ttdef"><b>Definition:</b> expression.h:288</div></div>
<div class="ttc" id="astructmshadow_1_1op_1_1mul_html"><div class="ttname"><a href="structmshadow_1_1op_1_1mul.html">mshadow::op::mul</a></div><div class="ttdoc">mul operator</div><div class="ttdef"><b>Definition:</b> base.h:625</div></div>
<div class="ttc" id="anamespacemshadow_1_1expr_html_a496d2f5fb874d0a8d59b6a0b4374e2df"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a496d2f5fb874d0a8d59b6a0b4374e2df">mshadow::expr::dot</a></div><div class="ttdeci">DotExp&lt; TA, TB, false, false, DType &gt; dot(const RValueExp&lt; TA, DType &gt; &amp;lhs, const RValueExp&lt; TB, DType &gt; &amp;rhs)</div><div class="ttdoc">dot operator def</div><div class="ttdef"><b>Definition:</b> expression.h:240</div></div>
<div class="ttc" id="aclassmshadow_1_1expr_1_1RValueExp_html_a2e48826ba1a6652d414fc3f18e7da7d3"><div class="ttname"><a href="classmshadow_1_1expr_1_1RValueExp.html#a2e48826ba1a6652d414fc3f18e7da7d3">mshadow::expr::RValueExp::operator*=</a></div><div class="ttdeci">Container &amp; operator*=(DType s)</div><div class="ttdoc">operator overload</div><div class="ttdef"><b>Definition:</b> expression.h:168</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1UnaryMapExp_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1UnaryMapExp.html">mshadow::expr::UnaryMapExp</a></div><div class="ttdoc">unary map expression op(src)</div><div class="ttdef"><b>Definition:</b> expression.h:404</div></div>
<div class="ttc" id="a3rdparty_2mshadow_2mshadow_2base_8h_html"><div class="ttname"><a href="3rdparty_2mshadow_2mshadow_2base_8h.html">base.h</a></div><div class="ttdoc">definitions of base types, operators, macros functions</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1ScalarExp_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1ScalarExp.html">mshadow::expr::ScalarExp</a></div><div class="ttdoc">scalar expression</div><div class="ttdef"><b>Definition:</b> expression.h:95</div></div>
<div class="ttc" id="anamespacemshadow_1_1expr_1_1type_html_a087b8526cc89b1ecf343d0ba363c4bc6"><div class="ttname"><a href="namespacemshadow_1_1expr_1_1type.html#a087b8526cc89b1ecf343d0ba363c4bc6">mshadow::expr::type::kRValue</a></div><div class="ttdeci">const int kRValue</div><div class="ttdoc">this expression directly correspnds to a data class, can be used to assign data</div><div class="ttdef"><b>Definition:</b> expression.h:45</div></div>
<div class="ttc" id="anamespacemshadow_1_1expr_1_1type_html_a4b13cee4847e885783f2d60deac391df"><div class="ttname"><a href="namespacemshadow_1_1expr_1_1type.html#a4b13cee4847e885783f2d60deac391df">mshadow::expr::type::kChainer</a></div><div class="ttdeci">const int kChainer</div><div class="ttdoc">expression that can be chained with other expressiones Usually it have function Eval(i,...</div><div class="ttdef"><b>Definition:</b> expression.h:56</div></div>
<div class="ttc" id="aclassmshadow_1_1expr_1_1RValueExp_html_a90fd315110a1411242d01910a62606b0"><div class="ttname"><a href="classmshadow_1_1expr_1_1RValueExp.html#a90fd315110a1411242d01910a62606b0">mshadow::expr::RValueExp::operator+=</a></div><div class="ttdeci">Container &amp; operator+=(const Exp&lt; E, DType, etype &gt; &amp;exp)</div><div class="ttdoc">implementation of operator+=</div><div class="ttdef"><b>Definition:</b> expression.h:192</div></div>
<div class="ttc" id="astructmshadow_1_1expr_1_1DotExp_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1DotExp.html">mshadow::expr::DotExp</a></div><div class="ttdoc">matrix multiplication expression dot(lhs[.T], rhs[.T])</div><div class="ttdef"><b>Definition:</b> expression.h:224</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 5 2023 03:47:39 for mxnet by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>