<!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: mshadow::expr::ExpComplexEngine&lt; SV, Tensor&lt; Device, 1, DType &gt;, ReduceTo1DExp&lt; SrcExp, DType, Reducer, 1 &gt;, DType &gt; Struct Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="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="namespacemshadow.html">mshadow</a></li><li class="navelem"><a class="el" href="namespacemshadow_1_1expr.html">expr</a></li><li class="navelem"><a class="el" href="structmshadow_1_1expr_1_1ExpComplexEngine_3_01SV_00_01Tensor_3_01Device_00_011_00_01DType_01_4_0d1da5a13d4a06e218cc743330af57ac2.html">ExpComplexEngine&lt; SV, Tensor&lt; Device, 1, DType &gt;, ReduceTo1DExp&lt; SrcExp, DType, Reducer, 1 &gt;, DType &gt;</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="structmshadow_1_1expr_1_1ExpComplexEngine_3_01SV_00_01Tensor_3_01Device_00_011_00_01DType_01_4_02f940a4c7fd6562b13363477a0ae7c69.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">mshadow::expr::ExpComplexEngine&lt; SV, Tensor&lt; Device, 1, DType &gt;, ReduceTo1DExp&lt; SrcExp, DType, Reducer, 1 &gt;, DType &gt; Struct Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="reduceto1d_8h_source.html">reduceto1d.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for mshadow::expr::ExpComplexEngine&lt; SV, Tensor&lt; Device, 1, DType &gt;, ReduceTo1DExp&lt; SrcExp, DType, Reducer, 1 &gt;, DType &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="structmshadow_1_1expr_1_1ExpComplexEngine_3_01SV_00_01Tensor_3_01Device_00_011_00_01DType_01_4_0c861d0029de70e02fe5eeb73fde35779.png" border="0" usemap="#mshadow_1_1expr_1_1ExpComplexEngine_3_01SV_00_01Tensor_3_01Device_00_011_00_01DType_01_4_00_01ReduceTo1DExp_3_01SrcExp_00_01DType_00_01Reducer_00_011_01_4_00_01DType_01_4_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 0 -->
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a855cc8dde413ad9b93a874fa3feec64f"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmshadow_1_1expr_1_1ExpComplexEngine_3_01SV_00_01Tensor_3_01Device_00_011_00_01DType_01_4_0d1da5a13d4a06e218cc743330af57ac2.html#a855cc8dde413ad9b93a874fa3feec64f">Eval</a> (<a class="el" href="structmshadow_1_1Tensor.html">Tensor</a>&lt; Device, 1, DType &gt; *dst, const <a class="el" href="structmshadow_1_1expr_1_1ReduceTo1DExp.html">ReduceTo1DExp</a>&lt; SrcExp, DType, Reducer, 1 &gt; &amp;exp)</td></tr>
<tr class="separator:a855cc8dde413ad9b93a874fa3feec64f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a855cc8dde413ad9b93a874fa3feec64f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a855cc8dde413ad9b93a874fa3feec64f">&#9670;&nbsp;</a></span>Eval()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename SV , typename Device , typename DType , typename SrcExp , typename Reducer &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void <a class="el" href="structmshadow_1_1expr_1_1ExpComplexEngine.html">mshadow::expr::ExpComplexEngine</a>&lt; SV, <a class="el" href="structmshadow_1_1Tensor.html">Tensor</a>&lt; Device, 1, DType &gt;, <a class="el" href="structmshadow_1_1expr_1_1ReduceTo1DExp.html">ReduceTo1DExp</a>&lt; SrcExp, DType, Reducer, 1 &gt;, DType &gt;::Eval </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmshadow_1_1Tensor.html">Tensor</a>&lt; Device, 1, DType &gt; *&#160;</td>
          <td class="paramname"><em>dst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmshadow_1_1expr_1_1ReduceTo1DExp.html">ReduceTo1DExp</a>&lt; SrcExp, DType, Reducer, 1 &gt; &amp;&#160;</td>
          <td class="paramname"><em>exp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li>/work/mxnet/3rdparty/mshadow/mshadow/extension/<a class="el" href="reduceto1d_8h_source.html">reduceto1d.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Nov 5 2022 01:16:58 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>
