blob: 66b25faa9f02044542d81189947da800dbb9a235 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mxnet: /work/mxnet/3rdparty/mshadow/mshadow/extension/complex.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.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- 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><li class="navelem"><a class="el" href="dir_9bd2a322a448ef0abedd860cb1ca3721.html">extension</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">complex.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="complex_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_EXTENSION_COMPLEX_H_</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#define MSHADOW_EXTENSION_COMPLEX_H_</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;../extension.h&quot;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemshadow.html">mshadow</a> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">namespace </span>op {</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1op_1_1complex.html"> 32</a></span>&#160;<span class="keyword">namespace </span>complex {</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06a7387690bce3508c36dcdd6ee37f5db8e"> 33</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06">BinaryCalculationType</a> { <a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06ad5e995d0e8de7a4c7054d44e74f87c48">kBinaryCC</a>, <a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06a01d847c43bc8b3d1f5334881a1ee6ad5">kBinaryCR</a>, <a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06a7387690bce3508c36dcdd6ee37f5db8e">kBinaryRC</a>};</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78"> 34</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78">UnitaryCalculationType</a> { <a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78abed2030268295a23c195bd49a2c4b1e7">kUnitaryC2R</a>, <a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78a090afb12c0c4066882e839264aca58e0">kUnitaryC2C</a>, <a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78a7c2ccb715d938a7831636e2e9b8e6c32">kUnitaryR2C</a> };</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1mul.html"> 35</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1op_1_1complex_1_1mul.html">mul</a> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1mul.html#a724de67f895e8c61bf8708fbb88e4919"> 38</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1mul.html#a724de67f895e8c61bf8708fbb88e4919">RealMap</a>(DType a_real, DType a_imag,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; DType b_real, DType b_imag) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> a_real * b_real - a_imag * b_imag;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1mul.html#a5a05bac90bbe4f01507288caa499d6a4"> 43</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1mul.html#a5a05bac90bbe4f01507288caa499d6a4">ImagMap</a>(DType a_real, DType a_imag,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; DType b_real, DType b_imag) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> a_real * b_imag + b_real * a_imag;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;};</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1div.html"> 49</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1op_1_1complex_1_1div.html">div</a> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1div.html#a296623873577fd39ac9850b8f90fe647"> 52</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1div.html#a296623873577fd39ac9850b8f90fe647">RealMap</a>(DType a_real, DType a_imag,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; DType b_real, DType b_imag) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> (a_real * b_real + a_imag * b_imag) / (b_real * b_real + b_imag * b_imag);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1div.html#aba294c83e61b99040b356cece86dadb7"> 57</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1div.html#aba294c83e61b99040b356cece86dadb7">ImagMap</a>(DType a_real, DType a_imag,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; DType b_real, DType b_imag) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> (b_real * a_imag - a_real * b_imag) / (b_real * b_real + b_imag * b_imag);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;};</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1conjugate.html"> 63</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1op_1_1complex_1_1conjugate.html">conjugate</a> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1conjugate.html#a357d55ff7392bd8a4f8fe235d140522c"> 65</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1conjugate.html#a357d55ff7392bd8a4f8fe235d140522c">RealMap</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">expr::Plan&lt;TA, DType&gt;</a> &amp;src_,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_j, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_j) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> src_.<a class="code" href="classmshadow_1_1expr_1_1Plan.html#ac3328472fd038748346a97cf8e58f3c6">Eval</a>(real_i, real_j);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1conjugate.html#a29ef06ee8aabd553f29a9a231c310d7f"> 70</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1conjugate.html#a29ef06ee8aabd553f29a9a231c310d7f">ImagMap</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">expr::Plan&lt;TA, DType&gt;</a> &amp;src_,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_j, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_j) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> -src_.<a class="code" href="classmshadow_1_1expr_1_1Plan.html#ac3328472fd038748346a97cf8e58f3c6">Eval</a>(imag_i, imag_j);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;};</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1exchange.html"> 76</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1op_1_1complex_1_1exchange.html">exchange</a> {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1exchange.html#a618fb9d7ad4e92345c03b9a4016c7897"> 78</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1exchange.html#a618fb9d7ad4e92345c03b9a4016c7897">RealMap</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">expr::Plan&lt;TA, DType&gt;</a> &amp;src_,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_j, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_j) {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> src_.<a class="code" href="classmshadow_1_1expr_1_1Plan.html#ac3328472fd038748346a97cf8e58f3c6">Eval</a>(imag_i, imag_j);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1exchange.html#ab0f46622b26cfac13cf356da59e22293"> 83</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1exchange.html#ab0f46622b26cfac13cf356da59e22293">ImagMap</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">expr::Plan&lt;TA, DType&gt;</a> &amp;src_,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_j, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_j) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> src_.<a class="code" href="classmshadow_1_1expr_1_1Plan.html#ac3328472fd038748346a97cf8e58f3c6">Eval</a>(real_i, real_j);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;};</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">// r2c operator</span></div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1pad__imag.html"> 90</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1op_1_1complex_1_1pad__imag.html">pad_imag</a> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1pad__imag.html#a142b726d06576c699554f5df80d4cb5c"> 92</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1pad__imag.html#a142b726d06576c699554f5df80d4cb5c">RealMap</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">expr::Plan&lt;TA, DType&gt;</a> &amp;src_,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_j) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> src_.<a class="code" href="classmshadow_1_1expr_1_1Plan.html#ac3328472fd038748346a97cf8e58f3c6">Eval</a>(real_i, real_j);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1pad__imag.html#adb98894b9bab28adb845a03b555d77a8"> 97</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1pad__imag.html#adb98894b9bab28adb845a03b555d77a8">ImagMap</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">expr::Plan&lt;TA, DType&gt;</a> &amp;src_,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_j) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;};</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment">// c2r operator</span></div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1toreal.html"> 104</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1op_1_1complex_1_1toreal.html">toreal</a> {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1toreal.html#a08c94f397038c99ab14ba9fd941d6331"> 106</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1toreal.html#a08c94f397038c99ab14ba9fd941d6331">RealMap</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">expr::Plan&lt;TA, DType&gt;</a> &amp;src_,</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_j, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_j) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; DType real_val = src_.<a class="code" href="classmshadow_1_1expr_1_1Plan.html#ac3328472fd038748346a97cf8e58f3c6">Eval</a>(real_i, real_j);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> real_val;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;};</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1abs__square.html"> 113</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1op_1_1complex_1_1abs__square.html">abs_square</a> {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1abs__square.html#af0156a6f59a69daa40b7cd6ad857c24c"> 115</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1abs__square.html#af0156a6f59a69daa40b7cd6ad857c24c">RealMap</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">expr::Plan&lt;TA, DType&gt;</a> &amp;src_,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_j, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_j) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; DType real_val = src_.<a class="code" href="classmshadow_1_1expr_1_1Plan.html#ac3328472fd038748346a97cf8e58f3c6">Eval</a>(real_i, real_j);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; DType image_val = src_.<a class="code" href="classmshadow_1_1expr_1_1Plan.html#ac3328472fd038748346a97cf8e58f3c6">Eval</a>(imag_i, imag_j);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> real_val * real_val + image_val * image_val;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;};</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1sum__real__imag.html"> 123</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1op_1_1complex_1_1sum__real__imag.html">sum_real_imag</a> {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TA, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="structmshadow_1_1op_1_1complex_1_1sum__real__imag.html#a7e75e26120cc808d05ffab1d6a74c1a0"> 125</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> <span class="keyword">static</span> DType <a class="code" href="structmshadow_1_1op_1_1complex_1_1sum__real__imag.html#a7e75e26120cc808d05ffab1d6a74c1a0">RealMap</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">expr::Plan&lt;TA, DType&gt;</a> &amp;src_,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_j, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_i, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> imag_j) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; DType real_val = src_.<a class="code" href="classmshadow_1_1expr_1_1Plan.html#ac3328472fd038748346a97cf8e58f3c6">Eval</a>(real_i, real_j);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; DType image_val = src_.<a class="code" href="classmshadow_1_1expr_1_1Plan.html#ac3328472fd038748346a97cf8e58f3c6">Eval</a>(imag_i, imag_j);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> real_val + image_val;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;};</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;} <span class="comment">// namespace complex</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;} <span class="comment">// namespace op</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keyword">namespace </span>expr {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment">//--------------------</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment">// ComplexBinaryMapExp</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment">//--------------------</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keywordtype">int</span> calctype, <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="l00148"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html"> 148</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a> : <span class="keyword">public</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp</a>&lt;ComplexBinaryMapExp&lt;calctype, OP, TA, TB, DType, etype&gt;,</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; DType, etype&gt; {</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#aef9d215084a5a207efbf32f1c3a7fb86"> 151</a></span>&#160; <span class="keyword">const</span> TA &amp;<a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#aef9d215084a5a207efbf32f1c3a7fb86">lhs_</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#a3fcd05127129e9713690deb24fd7429f"> 153</a></span>&#160; <span class="keyword">const</span> TB &amp;<a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#a3fcd05127129e9713690deb24fd7429f">rhs_</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#af751a33889d5988f179ae207e72021e9"> 155</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#af751a33889d5988f179ae207e72021e9">ComplexBinaryMapExp</a>(<span class="keyword">const</span> TA &amp;lhs, <span class="keyword">const</span> TB &amp;rhs)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; :lhs_(lhs), rhs_(rhs) {}</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;};</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment">//-------------------</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment">// ComplexConjExp</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment">//-------------------</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keywordtype">int</span> calctype, <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="l00168"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html"> 168</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp</a> : <span class="keyword">public</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp</a>&lt;ComplexUnitaryExp&lt;calctype, OP, TA, DType, etype&gt;,</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; DType, etype&gt; {</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html#aec295f972102240f020230637b1bdc5c"> 171</a></span>&#160; <span class="keyword">const</span> TA &amp;<a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html#aec295f972102240f020230637b1bdc5c">src_</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html#a5ee0dd6d9b12de2951baff58c6401eba"> 173</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html#a5ee0dd6d9b12de2951baff58c6401eba">ComplexUnitaryExp</a>(<span class="keyword">const</span> TA &amp;src) : src_(src) {}</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;};</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> calctype, <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="l00179"></a><span class="lineno"> 179</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp&lt;calctype, OP, TA, TB, DType, (ta | tb | type::kMapper)&gt;</a></div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a34eaa0ecee8df36d7dca81ab3696b553"> 180</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#aa5673b77e5bc192373e7317577759f47">ComplexF</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="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a>&lt;calctype, OP, TA, TB, DType,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</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="l00183"></a><span class="lineno"> 183</span>&#160;}</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> calctype, <span class="keyword">typename</span> OP, <span class="keyword">typename</span> SrcExp, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> e1&gt;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp&lt;calctype, OP, SrcExp, DType, (e1 | type::kMapper)&gt;</a></div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#aa5673b77e5bc192373e7317577759f47"> 192</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#aa5673b77e5bc192373e7317577759f47">ComplexF</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;SrcExp, DType, e1&gt;</a> &amp;src) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp&lt;calctype, OP, SrcExp, DType, (e1 | type::kMapper)&gt;</a>(src.<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;}</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</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="l00200"></a><span class="lineno"> 200</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a>&lt;<a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06ad5e995d0e8de7a4c7054d44e74f87c48">op::complex::kBinaryCC</a>, <a class="code" href="structmshadow_1_1op_1_1complex_1_1mul.html">op::complex::mul</a>,</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; 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="l00202"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a50dd29343c1f0fb13480e392f326d31f"> 202</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a50dd29343c1f0fb13480e392f326d31f">complex_mul_cc</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="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> ComplexF&lt;op::complex::kBinaryCC, op::complex::mul&gt;(lhs, rhs);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;}</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</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> 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="l00210"></a><span class="lineno"> 210</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a>&lt;<a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06a01d847c43bc8b3d1f5334881a1ee6ad5">op::complex::kBinaryCR</a>, op::complex::mul,</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; 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="l00212"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a28daeb9024c036867042d4eff0e1901f"> 212</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a28daeb9024c036867042d4eff0e1901f">complex_mul_cr</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="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> ComplexF&lt;op::complex::kBinaryCR, op::complex::mul&gt;(lhs, rhs);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</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="l00220"></a><span class="lineno"> 220</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a>&lt;<a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06a7387690bce3508c36dcdd6ee37f5db8e">op::complex::kBinaryRC</a>, op::complex::mul,</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; 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="l00222"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a3a46be125af3b512c4f037f80735291e"> 222</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a3a46be125af3b512c4f037f80735291e">complex_mul_rc</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="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> ComplexF&lt;op::complex::kBinaryRC, op::complex::mul&gt;(lhs, rhs);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;}</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</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="l00230"></a><span class="lineno"> 230</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a>&lt;<a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06ad5e995d0e8de7a4c7054d44e74f87c48">op::complex::kBinaryCC</a>, <a class="code" href="structmshadow_1_1op_1_1complex_1_1div.html">op::complex::div</a>,</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; 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="l00232"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#ad5a82db334b81efd9da13934f73d9c94"> 232</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#ad5a82db334b81efd9da13934f73d9c94">complex_div_cc</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="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> ComplexF&lt;op::complex::kBinaryCC, op::complex::div&gt;(lhs, rhs);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;}</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</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="l00240"></a><span class="lineno"> 240</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a>&lt;<a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06a01d847c43bc8b3d1f5334881a1ee6ad5">op::complex::kBinaryCR</a>, op::complex::div,</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; 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="l00242"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a7e5d52651a37f08726fc171fa0176fef"> 242</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a7e5d52651a37f08726fc171fa0176fef">complex_div_cr</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="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> ComplexF&lt;op::complex::kBinaryCR, op::complex::div&gt;(lhs, rhs);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;}</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</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="l00250"></a><span class="lineno"> 250</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a>&lt;<a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06a7387690bce3508c36dcdd6ee37f5db8e">op::complex::kBinaryRC</a>, op::complex::div,</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; 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="l00252"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a4cc207dbc5bf6470696edada1bd1ddef"> 252</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a4cc207dbc5bf6470696edada1bd1ddef">complex_div_rc</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="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> ComplexF&lt;op::complex::kBinaryRC, op::complex::div&gt;(lhs, rhs);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;}</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> SrcExp, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> e1&gt;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp</a>&lt;<a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78a090afb12c0c4066882e839264aca58e0">op::complex::kUnitaryC2C</a>, <a class="code" href="structmshadow_1_1op_1_1complex_1_1conjugate.html">op::complex::conjugate</a>,</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; SrcExp, DType, (e1|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a7106cf145333a57c40c13b45e4037e7b"> 264</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a7106cf145333a57c40c13b45e4037e7b">conj</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;SrcExp, DType, e1&gt;</a> &amp;src) {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> ComplexF&lt;op::complex::kUnitaryC2C, op::complex::conjugate&gt;(src);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;}</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> SrcExp, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> e1&gt;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp</a>&lt;<a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78a090afb12c0c4066882e839264aca58e0">op::complex::kUnitaryC2C</a>, <a class="code" href="structmshadow_1_1op_1_1complex_1_1exchange.html">op::complex::exchange</a>,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; SrcExp, DType, (e1|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#af82868806aaa59756b9170bcf14c6c79"> 276</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#af82868806aaa59756b9170bcf14c6c79">complex_exchange</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;SrcExp, DType, e1&gt;</a> &amp;src) {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> ComplexF&lt;op::complex::kUnitaryC2C, op::complex::exchange&gt;(src);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;}</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> SrcExp, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> e1&gt;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp</a>&lt;<a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78a7c2ccb715d938a7831636e2e9b8e6c32">op::complex::kUnitaryR2C</a>, <a class="code" href="structmshadow_1_1op_1_1complex_1_1pad__imag.html">op::complex::pad_imag</a>,</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; SrcExp, DType, (e1|<a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#afd0870425a733948de7caf11a85879bd"> 288</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#afd0870425a733948de7caf11a85879bd">complex_pad_imag</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;SrcExp, DType, e1&gt;</a> &amp;src) {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> ComplexF&lt;op::complex::kUnitaryR2C, op::complex::pad_imag&gt;(src);</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="l00297"></a><span class="lineno"> 297</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> SrcExp, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> e1&gt;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp</a>&lt;<a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78abed2030268295a23c195bd49a2c4b1e7">op::complex::kUnitaryC2R</a>, <a class="code" href="structmshadow_1_1op_1_1complex_1_1toreal.html">op::complex::toreal</a>,</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; SrcExp, DType, (e1 | <a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#aba3eea303533273d1a20b9dac08a8738"> 300</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#aba3eea303533273d1a20b9dac08a8738">complex_toreal</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;SrcExp, DType, e1&gt;</a> &amp;src) {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">return</span> ComplexF&lt;op::complex::kUnitaryC2R, op::complex::toreal&gt;(src);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;}</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> SrcExp, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> e1&gt;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp</a>&lt;<a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78abed2030268295a23c195bd49a2c4b1e7">op::complex::kUnitaryC2R</a>, <a class="code" href="structmshadow_1_1op_1_1complex_1_1abs__square.html">op::complex::abs_square</a>,</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; SrcExp, DType, (e1 | <a class="code" href="namespacemshadow_1_1expr_1_1type.html#aa700f17fa964d262266efd336d5c50ca">type::kMapper</a>)&gt;</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#af1b114370ff1040f8a651a95724bb38a"> 312</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#af1b114370ff1040f8a651a95724bb38a">complex_abs_square</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;SrcExp, DType, e1&gt;</a> &amp;src) {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">return</span> ComplexF&lt;op::complex::kUnitaryC2R, op::complex::abs_square&gt;(src);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;}</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> SrcExp, <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> e1&gt;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="keyword">inline</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp</a>&lt;<a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78abed2030268295a23c195bd49a2c4b1e7">op::complex::kUnitaryC2R</a>, <a class="code" href="structmshadow_1_1op_1_1complex_1_1sum__real__imag.html">op::complex::sum_real_imag</a>,</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; SrcExp, DType, (e1 | <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#a63e5c78be840be5d8befd0ea1ed50727"> 319</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a63e5c78be840be5d8befd0ea1ed50727">complex_sum_real_imag</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1Exp.html">Exp&lt;SrcExp, DType, e1&gt;</a> &amp;src) {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> ComplexF&lt;op::complex::kUnitaryC2R, op::complex::sum_real_imag&gt;(src);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;}</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="keyword">template</span>&lt;<span class="keywordtype">int</span> dim, <span class="keywordtype">int</span> calctype, <span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keyword">typename</span> TB,</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">typename</span> DType, <span class="keywordtype">int</span> etype&gt;</div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ShapeCheck_3_01dim_00_01ComplexBinaryMapExp_3_01calctype_00_01OP_00_01T15b5f8876235955c85985aafd22f2347.html"> 325</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1ShapeCheck.html">ShapeCheck</a>&lt;dim, <a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a>&lt;calctype, OP, TA, TB, DType, etype&gt; &gt; {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="structmshadow_1_1Shape.html">Shape&lt;dim&gt;</a></div><div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ShapeCheck_3_01dim_00_01ComplexBinaryMapExp_3_01calctype_00_01OP_00_01T15b5f8876235955c85985aafd22f2347.html#adb19f3bc69c9d100de31e1f01e61410f"> 327</a></span>&#160; <a class="code" href="structmshadow_1_1expr_1_1ShapeCheck_3_01dim_00_01ComplexBinaryMapExp_3_01calctype_00_01OP_00_01T15b5f8876235955c85985aafd22f2347.html#adb19f3bc69c9d100de31e1f01e61410f">Check</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp&lt;calctype, OP, TA, TB, DType, etype&gt;</a> &amp;t) {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="structmshadow_1_1Shape.html">Shape&lt;dim&gt;</a> shape1 = <a class="code" href="structmshadow_1_1expr_1_1ShapeCheck.html">ShapeCheck&lt;dim, TA&gt;::Check</a>(t.<a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#aef9d215084a5a207efbf32f1c3a7fb86">lhs_</a>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="structmshadow_1_1Shape.html">Shape&lt;dim&gt;</a> shape2 = <a class="code" href="structmshadow_1_1expr_1_1ShapeCheck.html">ShapeCheck&lt;dim, TB&gt;::Check</a>(t.<a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#a3fcd05127129e9713690deb24fd7429f">rhs_</a>);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (shape1[0] == 0) <span class="keywordflow">return</span> shape2;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">if</span> (shape2[0] == 0) <span class="keywordflow">return</span> shape1;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (calctype == op::complex::kBinaryCC) {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; CHECK_EQ(shape1, shape2) &lt;&lt; <span class="stringliteral">&quot;ComplexBinaryMapExp (CC): Shapes of operands are not the same.&quot;</span>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; CHECK_EQ(shape1[dim - 1] % 2, 0) &lt;&lt;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="stringliteral">&quot;ComplexBinaryMapExp (CC): Shape of the last dimension is not even. &quot;</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="stringliteral">&quot;We must have real part + imaginary part.&quot;</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> shape1;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (calctype == op::complex::kBinaryCR) {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; dim - 1; ++i) {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; CHECK_EQ(shape1.<a class="code" href="structmshadow_1_1Shape.html#a398d94165ccfbaf1ba0e8fcbedfe48c6">shape_</a>[i], shape2.<a class="code" href="structmshadow_1_1Shape.html#a398d94165ccfbaf1ba0e8fcbedfe48c6">shape_</a>[i]) &lt;&lt;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="stringliteral">&quot;ComplexBinaryMapExp (CR): Shapes of operands are not the same.&quot;</span>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; CHECK_EQ(shape1[dim - 1], shape2[dim - 1] * 2) &lt;&lt;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="stringliteral">&quot;ComplexBinaryMapExp (CR): Shapes of operands do not match.&quot;</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">return</span> shape1;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (calctype == op::complex::kBinaryRC) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; dim - 1; ++i) {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; CHECK_EQ(shape1.<a class="code" href="structmshadow_1_1Shape.html#a398d94165ccfbaf1ba0e8fcbedfe48c6">shape_</a>[i], shape2.<a class="code" href="structmshadow_1_1Shape.html#a398d94165ccfbaf1ba0e8fcbedfe48c6">shape_</a>[i]) &lt;&lt;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="stringliteral">&quot;ComplexBinaryMapExp (RC): Shapes of operands are not the same.&quot;</span>;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; CHECK_EQ(shape2[dim - 1], shape1[dim - 1] * 2) &lt;&lt;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="stringliteral">&quot;ComplexBinaryMapExp (RC): Shapes of operands do not match.&quot;</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> shape2;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; LOG(FATAL) &lt;&lt; <span class="stringliteral">&quot;ComplexBinaryMapExp: Unexpected Calculation Type!&quot;</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> shape1;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;};</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> dim, <span class="keywordtype">int</span> calctype, <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="l00362"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ShapeCheck_3_01dim_00_01ComplexUnitaryExp_3_01calctype_00_01OP_00_01TA_00_01DType_00_01etype_01_4_01_4.html"> 362</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1ShapeCheck.html">ShapeCheck</a>&lt;dim, <a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp</a>&lt;calctype, OP, TA, DType, etype&gt; &gt; {</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ShapeCheck_3_01dim_00_01ComplexUnitaryExp_3_01calctype_00_01OP_00_01TA_00_01DType_00_01etype_01_4_01_4.html#a25e484f9e6ec3b318f7decf5d78f7be5"> 363</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="structmshadow_1_1Shape.html">Shape&lt;dim&gt;</a> <a class="code" href="structmshadow_1_1expr_1_1ShapeCheck_3_01dim_00_01ComplexUnitaryExp_3_01calctype_00_01OP_00_01TA_00_01DType_00_01etype_01_4_01_4.html#a25e484f9e6ec3b318f7decf5d78f7be5">Check</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp&lt;calctype, OP, TA, DType, etype&gt;</a> &amp;t) {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="structmshadow_1_1Shape.html">Shape&lt;dim&gt;</a> s = <a class="code" href="structmshadow_1_1expr_1_1ShapeCheck.html">ShapeCheck&lt;dim, TA&gt;::Check</a>(t.<a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html#aec295f972102240f020230637b1bdc5c">src_</a>);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; CHECK_EQ(s[dim - 1] % 2, 0) &lt;&lt; <span class="stringliteral">&quot;ComplexUnitaryExp: Shape of the last dimension is not even. &quot;</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="stringliteral">&quot;We must have real + imaginary.&quot;</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span> (calctype == op::complex::kUnitaryC2C) {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> s;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (calctype == op::complex::kUnitaryC2R) {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="structmshadow_1_1Shape.html">Shape&lt;dim&gt;</a> s_ret = s;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; s_ret[dim - 1] /= 2;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> s_ret;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (calctype == op::complex::kUnitaryR2C) {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="structmshadow_1_1Shape.html">Shape&lt;dim&gt;</a> s_ret = s;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; s_ret[dim-1] *= 2;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> s_ret;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; LOG(FATAL) &lt;&lt; <span class="stringliteral">&quot;ComplexUnitaryExp: Unexpected Calculation Type!&quot;</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">return</span> s;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;};</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="comment">// complex binary expression (cc)</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</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="keywordtype">int</span> etype, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCC_00_01OP_00_070418209bf6f822b4248b0ecfca4610a.html"> 388</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan</a>&lt;<a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a>&lt;op::<a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06ad5e995d0e8de7a4c7054d44e74f87c48">complex::kBinaryCC</a>, OP, TA, TB, DType, etype&gt;, DType&gt; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00390"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCC_00_01OP_00_070418209bf6f822b4248b0ecfca4610a.html#a1525eda4e0c9c9b8ffa241a990138b48"> 390</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCC_00_01OP_00_070418209bf6f822b4248b0ecfca4610a.html#a1525eda4e0c9c9b8ffa241a990138b48">Plan</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TA, DType&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TB, DType&gt;</a> &amp;rhs)</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; : lhs_(lhs), rhs_(rhs) {}</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCC_00_01OP_00_070418209bf6f822b4248b0ecfca4610a.html#ac2d7199bb079919469560d54f3c86bfc"> 392</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> DType <a class="code" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCC_00_01OP_00_070418209bf6f822b4248b0ecfca4610a.html#ac2d7199bb079919469560d54f3c86bfc">Eval</a>(<a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> y, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> x)<span class="keyword"> const </span>{</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> base_x = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a><span class="keyword">&gt;</span>(x / 2) * 2;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">if</span> (x % 2 == 0) {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">return</span> OP::RealMap(lhs_.Eval(y, base_x), lhs_.Eval(y, base_x + 1),</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; rhs_.Eval(y, base_x), rhs_.Eval(y, base_x + 1));</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> OP::ImagMap(lhs_.Eval(y, base_x), lhs_.Eval(y, base_x + 1),</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; rhs_.Eval(y, base_x), rhs_.Eval(y, base_x + 1));</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TA, DType&gt;</a> lhs_;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TB, DType&gt;</a> rhs_;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;};</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment">// complex binary expression (cr)</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</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="keywordtype">int</span> etype, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00410"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCR_00_01OP_00_0b257075ce7da6a138f8294fe4d5adc88.html"> 410</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan</a>&lt;<a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a>&lt;op::<a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06a01d847c43bc8b3d1f5334881a1ee6ad5">complex::kBinaryCR</a>, OP, TA, TB, DType, etype&gt;, DType&gt; {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCR_00_01OP_00_0b257075ce7da6a138f8294fe4d5adc88.html#a8140c77f0f79903728df6a2b0bfdb79c"> 412</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCR_00_01OP_00_0b257075ce7da6a138f8294fe4d5adc88.html#a8140c77f0f79903728df6a2b0bfdb79c">Plan</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TA, DType&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TB, DType&gt;</a> &amp;rhs)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; : lhs_(lhs), rhs_(rhs) {}</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCR_00_01OP_00_0b257075ce7da6a138f8294fe4d5adc88.html#a67ce089b01cfd2700dc9727d3e98c724"> 414</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> DType <a class="code" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCR_00_01OP_00_0b257075ce7da6a138f8294fe4d5adc88.html#a67ce089b01cfd2700dc9727d3e98c724">Eval</a>(<a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> y, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> x)<span class="keyword"> const </span>{</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> base_x = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a><span class="keyword">&gt;</span>(x / 2) * 2;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">if</span> (x % 2 == 0) {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">return</span> OP::RealMap(lhs_.Eval(y, base_x), lhs_.Eval(y, base_x + 1),</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; rhs_.Eval(y, base_x / 2), <span class="keyword">static_cast&lt;</span>DType<span class="keyword">&gt;</span>(0));</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">return</span> OP::ImagMap(lhs_.Eval(y, base_x), lhs_.Eval(y, base_x + 1),</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; rhs_.Eval(y, base_x / 2), <span class="keyword">static_cast&lt;</span>DType<span class="keyword">&gt;</span>(0));</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TA, DType&gt;</a> lhs_;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TB, DType&gt;</a> rhs_;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;};</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="comment">// complex binary expression (rc)</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</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="keywordtype">int</span> etype, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryRC_00_01OP_00_0dd1ea6c2b6bf495ab0ef096b0574a49b.html"> 433</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan</a>&lt;<a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a>&lt;op::<a class="code" href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06a7387690bce3508c36dcdd6ee37f5db8e">complex::kBinaryRC</a>, OP, TA, TB, DType, etype&gt;, DType&gt; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryRC_00_01OP_00_0dd1ea6c2b6bf495ab0ef096b0574a49b.html#aad244c93e169ab93a2e8bbcd091c08a6"> 435</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryRC_00_01OP_00_0dd1ea6c2b6bf495ab0ef096b0574a49b.html#aad244c93e169ab93a2e8bbcd091c08a6">Plan</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TA, DType&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TB, DType&gt;</a> &amp;rhs)</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; : lhs_(lhs), rhs_(rhs) {}</div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryRC_00_01OP_00_0dd1ea6c2b6bf495ab0ef096b0574a49b.html#ad790f8e229dedc295252def24589753d"> 437</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> DType <a class="code" href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryRC_00_01OP_00_0dd1ea6c2b6bf495ab0ef096b0574a49b.html#ad790f8e229dedc295252def24589753d">Eval</a>(<a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> y, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> x)<span class="keyword"> const </span>{</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> base_x = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a><span class="keyword">&gt;</span>(x / 2) * 2;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">if</span> (x % 2 == 0) {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">return</span> OP::RealMap(lhs_.Eval(y, base_x / 2), <span class="keyword">static_cast&lt;</span>DType<span class="keyword">&gt;</span>(0),</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; rhs_.Eval(y, base_x), rhs_.Eval(y, base_x + 1));</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">return</span> OP::ImagMap(lhs_.Eval(y, base_x / 2), <span class="keyword">static_cast&lt;</span>DType<span class="keyword">&gt;</span>(0),</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; rhs_.Eval(y, base_x), rhs_.Eval(y, base_x + 1));</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TA, DType&gt;</a> lhs_;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TB, DType&gt;</a> rhs_;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;};</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="comment">// complex unitary expression (c2c)</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keywordtype">int</span> etype, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00456"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2C_00_01OP_00_0d20175510643f9f1d2ba786987d7b441.html"> 456</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan</a>&lt;<a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp</a>&lt;op::<a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78a090afb12c0c4066882e839264aca58e0">complex::kUnitaryC2C</a>, OP, TA, DType, etype&gt;, DType&gt; {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2C_00_01OP_00_0d20175510643f9f1d2ba786987d7b441.html#a03c9983da9e893029c4adb411cc8800f"> 458</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2C_00_01OP_00_0d20175510643f9f1d2ba786987d7b441.html#a03c9983da9e893029c4adb411cc8800f">Plan</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TA, DType&gt;</a> &amp;src) : src_(src) {}</div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2C_00_01OP_00_0d20175510643f9f1d2ba786987d7b441.html#a47a8b027e0fc468b2477ef5548f6c41e"> 459</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> DType <a class="code" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2C_00_01OP_00_0d20175510643f9f1d2ba786987d7b441.html#a47a8b027e0fc468b2477ef5548f6c41e">Eval</a>(<a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> y, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> x)<span class="keyword"> const </span>{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> base_x = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a><span class="keyword">&gt;</span>(x / 2) * 2;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">if</span> (0 == x % 2) {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">return</span> OP::RealMap(src_, y, base_x, y, base_x + 1);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">return</span> OP::ImagMap(src_, y, base_x, y, base_x + 1);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TA, DType&gt;</a> src_;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;};</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="comment">// complex unitary expression (r2c)</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keywordtype">int</span> etype, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00474"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryR2C_00_01OP_00_08ed61b9bbcd667f71f04850a2900af1a.html"> 474</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan</a>&lt;<a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp</a>&lt;op::<a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78a7c2ccb715d938a7831636e2e9b8e6c32">complex::kUnitaryR2C</a>, OP, TA, DType, etype&gt;, DType&gt; {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00476"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryR2C_00_01OP_00_08ed61b9bbcd667f71f04850a2900af1a.html#af2a9583479ba0b16b08fb6bc321852ce"> 476</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryR2C_00_01OP_00_08ed61b9bbcd667f71f04850a2900af1a.html#af2a9583479ba0b16b08fb6bc321852ce">Plan</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TA, DType&gt;</a> &amp;src) : src_(src) {}</div><div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryR2C_00_01OP_00_08ed61b9bbcd667f71f04850a2900af1a.html#a57bcf75bf76301850aee48dafe38498b"> 477</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> DType <a class="code" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryR2C_00_01OP_00_08ed61b9bbcd667f71f04850a2900af1a.html#a57bcf75bf76301850aee48dafe38498b">Eval</a>(<a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> y, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> x)<span class="keyword"> const </span>{</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> real_x = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a><span class="keyword">&gt;</span>(x / 2);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (0 == x%2) {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="comment">// x,y should be coordinates in the complex matrix</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="comment">// this defines how we will give value to the real part from the real matrix src_,</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="comment">// thus the index has only 2 dimensions</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">return</span> OP::RealMap(src_, y, real_x);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">return</span> OP::ImagMap(src_, y, real_x);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TA, DType&gt;</a> src_;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;};</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="comment">// complex unitary expression (c2r)</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OP, <span class="keyword">typename</span> TA, <span class="keywordtype">int</span> etype, <span class="keyword">typename</span> DType&gt;</div><div class="line"><a name="l00495"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2R_00_01OP_00_00e10b88e83c8fd2b6d389c721fbdea73.html"> 495</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan</a>&lt;<a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp</a>&lt;op::<a class="code" href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78abed2030268295a23c195bd49a2c4b1e7">complex::kUnitaryC2R</a>, OP, TA, DType, etype&gt;, DType&gt; {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00497"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2R_00_01OP_00_00e10b88e83c8fd2b6d389c721fbdea73.html#afed322b2caff2dd9d173050e13f1cffe"> 497</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2R_00_01OP_00_00e10b88e83c8fd2b6d389c721fbdea73.html#afed322b2caff2dd9d173050e13f1cffe">Plan</a>(<span class="keyword">const</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TA, DType&gt;</a> &amp;src) : src_(src) {}</div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2R_00_01OP_00_00e10b88e83c8fd2b6d389c721fbdea73.html#ac76fba2f1b46b0434c107724fd2101db"> 498</a></span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a> DType <a class="code" href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2R_00_01OP_00_00e10b88e83c8fd2b6d389c721fbdea73.html#ac76fba2f1b46b0434c107724fd2101db">Eval</a>(<a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> y, <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">index_t</a> x)<span class="keyword"> const </span>{</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">return</span> OP::RealMap(src_, y, x * 2, y, x * 2 + 1);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;TA, DType&gt;</a> src_;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;};</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> calctype, <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="l00509"></a><span class="lineno"> 509</span>&#160;<span class="keyword">inline</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;ComplexBinaryMapExp&lt;calctype, OP, TA, TB, DType, etype&gt;</a>, DType&gt;</div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a3e8ebea1543536f8a1e7b96923bd43c4"> 510</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a2b123cd9bd2536cd35b2a52be9df7764">MakePlan</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp&lt;calctype, OP, TA, TB, DType, etype&gt;</a> &amp;e) {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">return</span> Plan&lt;ComplexBinaryMapExp&lt;calctype, OP, TA, TB, DType, etype&gt;,</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; DType&gt;(<a class="code" href="namespacemshadow_1_1expr.html#a2b123cd9bd2536cd35b2a52be9df7764">MakePlan</a>(e.<a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#aef9d215084a5a207efbf32f1c3a7fb86">lhs_</a>), <a class="code" href="namespacemshadow_1_1expr.html#a2b123cd9bd2536cd35b2a52be9df7764">MakePlan</a>(e.<a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#a3fcd05127129e9713690deb24fd7429f">rhs_</a>));</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;}</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> calctype, <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="l00516"></a><span class="lineno"> 516</span>&#160;<span class="keyword">inline</span> <a class="code" href="classmshadow_1_1expr_1_1Plan.html">Plan&lt;ComplexUnitaryExp&lt;calctype, OP, TA, DType, etype&gt;</a>, DType&gt;</div><div class="line"><a name="l00517"></a><span class="lineno"><a class="line" href="namespacemshadow_1_1expr.html#a2b123cd9bd2536cd35b2a52be9df7764"> 517</a></span>&#160;<a class="code" href="namespacemshadow_1_1expr.html#a2b123cd9bd2536cd35b2a52be9df7764">MakePlan</a>(<span class="keyword">const</span> <a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp&lt;calctype, OP, TA, DType, etype&gt;</a> &amp;e) {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">return</span> Plan&lt;ComplexUnitaryExp&lt;calctype, OP, TA, DType, etype&gt;,</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; DType&gt;(<a class="code" href="namespacemshadow_1_1expr.html#a2b123cd9bd2536cd35b2a52be9df7764">MakePlan</a>(e.<a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html#aec295f972102240f020230637b1bdc5c">src_</a>));</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;}</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> calctype, <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="l00525"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ExpInfo_3_01ComplexBinaryMapExp_3_01calctype_00_01OP_00_01TA_00_01TB_00_01DType_00_01etype_01_4_01_4.html"> 525</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1ExpInfo.html">ExpInfo</a>&lt;<a class="code" href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">ComplexBinaryMapExp</a>&lt;calctype, OP, TA, TB, DType, etype&gt; &gt; {</div><div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ExpInfo_3_01ComplexBinaryMapExp_3_01calctype_00_01OP_00_01TA_00_01TB_00_01DType_00_01etype_01_4_01_4.html#ad36484d790fb9652114e47c5f2b30cbd"> 526</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDimLhs = <a class="code" href="structmshadow_1_1expr_1_1ExpInfo.html">ExpInfo&lt;TA&gt;::kDim</a>;</div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ExpInfo_3_01ComplexBinaryMapExp_3_01calctype_00_01OP_00_01TA_00_01TB_00_01DType_00_01etype_01_4_01_4.html#a1589e2123c5e6e65ce082293d86a5248"> 527</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDimRhs = <a class="code" href="structmshadow_1_1expr_1_1ExpInfo.html">ExpInfo&lt;TB&gt;::kDim</a>;</div><div class="line"><a name="l00528"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ExpInfo_3_01ComplexBinaryMapExp_3_01calctype_00_01OP_00_01TA_00_01TB_00_01DType_00_01etype_01_4_01_4.html#aa7f6865d2e058eafccc9f35b1dac4ce6"> 528</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDim = (kDimLhs &gt;= 0 &amp;&amp; kDimRhs &gt;= 0) ? \</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; (kDimLhs == 0 ? \</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; kDimRhs : \</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; ((kDimRhs == 0 || kDimLhs == kDimRhs) ? kDimLhs : -1)) : -1;</div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ExpInfo_3_01ComplexBinaryMapExp_3_01calctype_00_01OP_00_01TA_00_01TB_00_01DType_00_01etype_01_4_01_4.html#a87eef97cbd58e2e6eff1569c6fb8483b"> 532</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDevMask = <a class="code" href="structmshadow_1_1expr_1_1ExpInfo.html">ExpInfo&lt;TA&gt;::kDevMask</a> &amp; <a class="code" href="structmshadow_1_1expr_1_1ExpInfo.html">ExpInfo&lt;TB&gt;::kDevMask</a>;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;};</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> calctype, <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="l00536"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ExpInfo_3_01ComplexUnitaryExp_3_01calctype_00_01OP_00_01TA_00_01DType_00_01etype_01_4_01_4.html"> 536</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmshadow_1_1expr_1_1ExpInfo.html">ExpInfo</a>&lt;<a class="code" href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">ComplexUnitaryExp</a>&lt;calctype, OP, TA, DType, etype&gt; &gt; {</div><div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ExpInfo_3_01ComplexUnitaryExp_3_01calctype_00_01OP_00_01TA_00_01DType_00_01etype_01_4_01_4.html#a2cd6898dde62e8d7a94aa02355bf0169"> 537</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDim = <a class="code" href="structmshadow_1_1expr_1_1ExpInfo.html">ExpInfo&lt;TA&gt;::kDim</a>;</div><div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="structmshadow_1_1expr_1_1ExpInfo_3_01ComplexUnitaryExp_3_01calctype_00_01OP_00_01TA_00_01DType_00_01etype_01_4_01_4.html#ab871f928885fcff78ece8731064178b5"> 538</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDevMask = <a class="code" href="structmshadow_1_1expr_1_1ExpInfo.html">ExpInfo&lt;TA&gt;::kDevMask</a>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;};</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;} <span class="comment">// namespace expr</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;} <span class="comment">// namespace mshadow</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="preprocessor">#endif // MSHADOW_EXTENSION_COMPLEX_H_</span></div><div class="ttc" id="namespacemshadow_1_1expr_html_a3a46be125af3b512c4f037f80735291e"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a3a46be125af3b512c4f037f80735291e">mshadow::expr::complex_mul_rc</a></div><div class="ttdeci">ComplexBinaryMapExp&lt; op::complex::kBinaryRC, op::complex::mul, TA, TB, DType,(ta|tb|type::kMapper)&gt; complex_mul_rc(const Exp&lt; TA, DType, ta &gt; &amp;lhs, const Exp&lt; TB, DType, tb &gt; &amp;rhs)</div><div class="ttdoc">complex_mul_rc Complex multipilication of a real tensor B and a complex tensor A </div><div class="ttdef"><b>Definition:</b> complex.h:222</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1div_html_a296623873577fd39ac9850b8f90fe647"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1div.html#a296623873577fd39ac9850b8f90fe647">mshadow::op::complex::div::RealMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType RealMap(DType a_real, DType a_imag, DType b_real, DType b_imag)</div><div class="ttdoc">map a_real, a_imag, b_real, b_imag to result using defined operation </div><div class="ttdef"><b>Definition:</b> complex.h:52</div></div>
<div class="ttc" id="namespacemshadow_1_1expr_html_a2b123cd9bd2536cd35b2a52be9df7764"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a2b123cd9bd2536cd35b2a52be9df7764">mshadow::expr::MakePlan</a></div><div class="ttdeci">Plan&lt; ComplexUnitaryExp&lt; calctype, OP, TA, DType, etype &gt;, DType &gt; MakePlan(const ComplexUnitaryExp&lt; calctype, OP, TA, DType, etype &gt; &amp;e)</div><div class="ttdef"><b>Definition:</b> complex.h:517</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1exchange_html_ab0f46622b26cfac13cf356da59e22293"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1exchange.html#ab0f46622b26cfac13cf356da59e22293">mshadow::op::complex::exchange::ImagMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType ImagMap(const expr::Plan&lt; TA, DType &gt; &amp;src_, index_t real_i, index_t real_j, index_t imag_i, index_t imag_j)</div><div class="ttdef"><b>Definition:</b> complex.h:83</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1conjugate_html_a29ef06ee8aabd553f29a9a231c310d7f"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1conjugate.html#a29ef06ee8aabd553f29a9a231c310d7f">mshadow::op::complex::conjugate::ImagMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType ImagMap(const expr::Plan&lt; TA, DType &gt; &amp;src_, index_t real_i, index_t real_j, index_t imag_i, index_t imag_j)</div><div class="ttdef"><b>Definition:</b> complex.h:70</div></div>
<div class="ttc" id="namespacemshadow_1_1op_1_1complex_html_af062961d218e28c7307bed158f71db06a01d847c43bc8b3d1f5334881a1ee6ad5"><div class="ttname"><a href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06a01d847c43bc8b3d1f5334881a1ee6ad5">mshadow::op::complex::kBinaryCR</a></div><div class="ttdef"><b>Definition:</b> complex.h:33</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryRC_00_01OP_00_0dd1ea6c2b6bf495ab0ef096b0574a49b_html_ad790f8e229dedc295252def24589753d"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryRC_00_01OP_00_0dd1ea6c2b6bf495ab0ef096b0574a49b.html#ad790f8e229dedc295252def24589753d">mshadow::expr::Plan&lt; ComplexBinaryMapExp&lt; op::complex::kBinaryRC, OP, TA, TB, DType, etype &gt;, DType &gt;::Eval</a></div><div class="ttdeci">MSHADOW_XINLINE DType Eval(index_t y, index_t x) const</div><div class="ttdef"><b>Definition:</b> complex.h:437</div></div>
<div class="ttc" id="namespacemshadow_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="structmshadow_1_1expr_1_1ComplexUnitaryExp_html_a5ee0dd6d9b12de2951baff58c6401eba"><div class="ttname"><a href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html#a5ee0dd6d9b12de2951baff58c6401eba">mshadow::expr::ComplexUnitaryExp::ComplexUnitaryExp</a></div><div class="ttdeci">ComplexUnitaryExp(const TA &amp;src)</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> complex.h:173</div></div>
<div class="ttc" id="namespacemshadow_1_1op_1_1complex_html_af062961d218e28c7307bed158f71db06ad5e995d0e8de7a4c7054d44e74f87c48"><div class="ttname"><a href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06ad5e995d0e8de7a4c7054d44e74f87c48">mshadow::op::complex::kBinaryCC</a></div><div class="ttdef"><b>Definition:</b> complex.h:33</div></div>
<div class="ttc" id="structmshadow_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="classmshadow_1_1expr_1_1Plan_html"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan.html">mshadow::expr::Plan&lt; TA, DType &gt;</a></div></div>
<div class="ttc" id="structmshadow_1_1Shape_html"><div class="ttname"><a href="structmshadow_1_1Shape.html">mshadow::Shape&lt; dim &gt;</a></div></div>
<div class="ttc" id="namespacemshadow_1_1expr_html_af1b114370ff1040f8a651a95724bb38a"><div class="ttname"><a href="namespacemshadow_1_1expr.html#af1b114370ff1040f8a651a95724bb38a">mshadow::expr::complex_abs_square</a></div><div class="ttdeci">ComplexUnitaryExp&lt; op::complex::kUnitaryC2R, op::complex::abs_square, SrcExp, DType,(e1|type::kMapper)&gt; complex_abs_square(const Exp&lt; SrcExp, DType, e1 &gt; &amp;src)</div><div class="ttdoc">complex_abs_square calculate the square of the modulus of A where A is a complex tensor ...</div><div class="ttdef"><b>Definition:</b> complex.h:312</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1sum__real__imag_html_a7e75e26120cc808d05ffab1d6a74c1a0"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1sum__real__imag.html#a7e75e26120cc808d05ffab1d6a74c1a0">mshadow::op::complex::sum_real_imag::RealMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType RealMap(const expr::Plan&lt; TA, DType &gt; &amp;src_, index_t real_i, index_t real_j, index_t imag_i, index_t imag_j)</div><div class="ttdef"><b>Definition:</b> complex.h:125</div></div>
<div class="ttc" id="namespacemshadow_1_1op_1_1complex_html_a53d33692e124b4a830ea47372a093a78"><div class="ttname"><a href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78">mshadow::op::complex::UnitaryCalculationType</a></div><div class="ttdeci">UnitaryCalculationType</div><div class="ttdef"><b>Definition:</b> complex.h:34</div></div>
<div class="ttc" id="structmshadow_1_1expr_1_1ComplexBinaryMapExp_html_a3fcd05127129e9713690deb24fd7429f"><div class="ttname"><a href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#a3fcd05127129e9713690deb24fd7429f">mshadow::expr::ComplexBinaryMapExp::rhs_</a></div><div class="ttdeci">const TB &amp; rhs_</div><div class="ttdoc">right operand </div><div class="ttdef"><b>Definition:</b> complex.h:153</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCC_00_01OP_00_070418209bf6f822b4248b0ecfca4610a_html_ac2d7199bb079919469560d54f3c86bfc"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCC_00_01OP_00_070418209bf6f822b4248b0ecfca4610a.html#ac2d7199bb079919469560d54f3c86bfc">mshadow::expr::Plan&lt; ComplexBinaryMapExp&lt; op::complex::kBinaryCC, OP, TA, TB, DType, etype &gt;, DType &gt;::Eval</a></div><div class="ttdeci">MSHADOW_XINLINE DType Eval(index_t y, index_t x) const</div><div class="ttdef"><b>Definition:</b> complex.h:392</div></div>
<div class="ttc" id="namespacemshadow_1_1expr_html_aa5673b77e5bc192373e7317577759f47"><div class="ttname"><a href="namespacemshadow_1_1expr.html#aa5673b77e5bc192373e7317577759f47">mshadow::expr::ComplexF</a></div><div class="ttdeci">ComplexUnitaryExp&lt; calctype, OP, SrcExp, DType,(e1|type::kMapper)&gt; ComplexF(const Exp&lt; SrcExp, DType, e1 &gt; &amp;src)</div><div class="ttdoc">conj Negation the imaginary part of A where A is a complex tensor </div><div class="ttdef"><b>Definition:</b> complex.h:192</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1toreal_html_a08c94f397038c99ab14ba9fd941d6331"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1toreal.html#a08c94f397038c99ab14ba9fd941d6331">mshadow::op::complex::toreal::RealMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType RealMap(const expr::Plan&lt; TA, DType &gt; &amp;src_, index_t real_i, index_t real_j, index_t imag_i, index_t imag_j)</div><div class="ttdef"><b>Definition:</b> complex.h:106</div></div>
<div class="ttc" id="namespacemshadow_1_1expr_html_afd0870425a733948de7caf11a85879bd"><div class="ttname"><a href="namespacemshadow_1_1expr.html#afd0870425a733948de7caf11a85879bd">mshadow::expr::complex_pad_imag</a></div><div class="ttdeci">ComplexUnitaryExp&lt; op::complex::kUnitaryR2C, op::complex::pad_imag, SrcExp, DType,(e1|type::kMapper)&gt; complex_pad_imag(const Exp&lt; SrcExp, DType, e1 &gt; &amp;src)</div><div class="ttdoc">complex_pad_imag Transform real matrix into complex matrix </div><div class="ttdef"><b>Definition:</b> complex.h:288</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1pad__imag_html_adb98894b9bab28adb845a03b555d77a8"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1pad__imag.html#adb98894b9bab28adb845a03b555d77a8">mshadow::op::complex::pad_imag::ImagMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType ImagMap(const expr::Plan&lt; TA, DType &gt; &amp;src_, index_t real_i, index_t real_j)</div><div class="ttdef"><b>Definition:</b> complex.h:97</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1mul_html"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1mul.html">mshadow::op::complex::mul</a></div><div class="ttdef"><b>Definition:</b> complex.h:35</div></div>
<div class="ttc" id="structmshadow_1_1expr_1_1ShapeCheck_3_01dim_00_01ComplexBinaryMapExp_3_01calctype_00_01OP_00_01T15b5f8876235955c85985aafd22f2347_html_adb19f3bc69c9d100de31e1f01e61410f"><div class="ttname"><a href="structmshadow_1_1expr_1_1ShapeCheck_3_01dim_00_01ComplexBinaryMapExp_3_01calctype_00_01OP_00_01T15b5f8876235955c85985aafd22f2347.html#adb19f3bc69c9d100de31e1f01e61410f">mshadow::expr::ShapeCheck&lt; dim, ComplexBinaryMapExp&lt; calctype, OP, TA, TB, DType, etype &gt; &gt;::Check</a></div><div class="ttdeci">static Shape&lt; dim &gt; Check(const ComplexBinaryMapExp&lt; calctype, OP, TA, TB, DType, etype &gt; &amp;t)</div><div class="ttdef"><b>Definition:</b> complex.h:327</div></div>
<div class="ttc" id="namespacemshadow_1_1op_1_1complex_html_af062961d218e28c7307bed158f71db06a7387690bce3508c36dcdd6ee37f5db8e"><div class="ttname"><a href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06a7387690bce3508c36dcdd6ee37f5db8e">mshadow::op::complex::kBinaryRC</a></div><div class="ttdef"><b>Definition:</b> complex.h:33</div></div>
<div class="ttc" id="namespacemshadow_1_1op_1_1complex_html_af062961d218e28c7307bed158f71db06"><div class="ttname"><a href="namespacemshadow_1_1op_1_1complex.html#af062961d218e28c7307bed158f71db06">mshadow::op::complex::BinaryCalculationType</a></div><div class="ttdeci">BinaryCalculationType</div><div class="ttdef"><b>Definition:</b> complex.h:33</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1sum__real__imag_html"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1sum__real__imag.html">mshadow::op::complex::sum_real_imag</a></div><div class="ttdef"><b>Definition:</b> complex.h:123</div></div>
<div class="ttc" id="structmshadow_1_1expr_1_1ComplexBinaryMapExp_html_aef9d215084a5a207efbf32f1c3a7fb86"><div class="ttname"><a href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#aef9d215084a5a207efbf32f1c3a7fb86">mshadow::expr::ComplexBinaryMapExp::lhs_</a></div><div class="ttdeci">const TA &amp; lhs_</div><div class="ttdoc">left operand </div><div class="ttdef"><b>Definition:</b> complex.h:151</div></div>
<div class="ttc" id="namespacemshadow_1_1expr_html_a50dd29343c1f0fb13480e392f326d31f"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a50dd29343c1f0fb13480e392f326d31f">mshadow::expr::complex_mul_cc</a></div><div class="ttdeci">ComplexBinaryMapExp&lt; op::complex::kBinaryCC, op::complex::mul, TA, TB, DType,(ta|tb|type::kMapper)&gt; complex_mul_cc(const Exp&lt; TA, DType, ta &gt; &amp;lhs, const Exp&lt; TB, DType, tb &gt; &amp;rhs)</div><div class="ttdoc">complex_mul_cc Complex multipilication two complex tensors, A * B </div><div class="ttdef"><b>Definition:</b> complex.h:202</div></div>
<div class="ttc" id="namespacemshadow_1_1expr_html_a7106cf145333a57c40c13b45e4037e7b"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a7106cf145333a57c40c13b45e4037e7b">mshadow::expr::conj</a></div><div class="ttdeci">ComplexUnitaryExp&lt; op::complex::kUnitaryC2C, op::complex::conjugate, SrcExp, DType,(e1|type::kMapper)&gt; conj(const Exp&lt; SrcExp, DType, e1 &gt; &amp;src)</div><div class="ttdoc">conj Negation the imaginary part of A where A is a complex tensor </div><div class="ttdef"><b>Definition:</b> complex.h:264</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_html_ac3328472fd038748346a97cf8e58f3c6"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan.html#ac3328472fd038748346a97cf8e58f3c6">mshadow::expr::Plan::Eval</a></div><div class="ttdeci">MSHADOW_XINLINE DType Eval(index_t y, index_t x) const</div><div class="ttdoc">evaluate the expression at index [y][x] to be implemented by SubType, for RValue, the return type wil...</div></div>
<div class="ttc" id="3rdparty_2mshadow_2mshadow_2base_8h_html_af205b8ab4d8733133d590df7d2639d69"><div class="ttname"><a href="3rdparty_2mshadow_2mshadow_2base_8h.html#af205b8ab4d8733133d590df7d2639d69">MSHADOW_XINLINE</a></div><div class="ttdeci">#define MSHADOW_XINLINE</div><div class="ttdef"><b>Definition:</b> base.h:230</div></div>
<div class="ttc" id="structmshadow_1_1expr_1_1ExpInfo_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1ExpInfo.html">mshadow::expr::ExpInfo</a></div><div class="ttdoc">static type inference template, used to get the dimension of each expression, if ExpInfo&lt;E&gt;::kDim == ...</div><div class="ttdef"><b>Definition:</b> expr_engine-inl.h:262</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2C_00_01OP_00_0d20175510643f9f1d2ba786987d7b441_html_a47a8b027e0fc468b2477ef5548f6c41e"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2C_00_01OP_00_0d20175510643f9f1d2ba786987d7b441.html#a47a8b027e0fc468b2477ef5548f6c41e">mshadow::expr::Plan&lt; ComplexUnitaryExp&lt; op::complex::kUnitaryC2C, OP, TA, DType, etype &gt;, DType &gt;::Eval</a></div><div class="ttdeci">MSHADOW_XINLINE DType Eval(index_t y, index_t x) const</div><div class="ttdef"><b>Definition:</b> complex.h:459</div></div>
<div class="ttc" id="structmshadow_1_1expr_1_1ComplexUnitaryExp_html_aec295f972102240f020230637b1bdc5c"><div class="ttname"><a href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html#aec295f972102240f020230637b1bdc5c">mshadow::expr::ComplexUnitaryExp::src_</a></div><div class="ttdeci">const TA &amp; src_</div><div class="ttdoc">source expression </div><div class="ttdef"><b>Definition:</b> complex.h:171</div></div>
<div class="ttc" id="namespacemshadow_html_adcbc2e1131386fccb1474b0bdf045926"><div class="ttname"><a href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">mshadow::index_t</a></div><div class="ttdeci">int32_t index_t</div><div class="ttdoc">type that will be used for index </div><div class="ttdef"><b>Definition:</b> base.h:343</div></div>
<div class="ttc" id="structmshadow_1_1expr_1_1ShapeCheck_3_01dim_00_01ComplexUnitaryExp_3_01calctype_00_01OP_00_01TA_00_01DType_00_01etype_01_4_01_4_html_a25e484f9e6ec3b318f7decf5d78f7be5"><div class="ttname"><a href="structmshadow_1_1expr_1_1ShapeCheck_3_01dim_00_01ComplexUnitaryExp_3_01calctype_00_01OP_00_01TA_00_01DType_00_01etype_01_4_01_4.html#a25e484f9e6ec3b318f7decf5d78f7be5">mshadow::expr::ShapeCheck&lt; dim, ComplexUnitaryExp&lt; calctype, OP, TA, DType, etype &gt; &gt;::Check</a></div><div class="ttdeci">static Shape&lt; dim &gt; Check(const ComplexUnitaryExp&lt; calctype, OP, TA, DType, etype &gt; &amp;t)</div><div class="ttdef"><b>Definition:</b> complex.h:363</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1pad__imag_html_a142b726d06576c699554f5df80d4cb5c"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1pad__imag.html#a142b726d06576c699554f5df80d4cb5c">mshadow::op::complex::pad_imag::RealMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType RealMap(const expr::Plan&lt; TA, DType &gt; &amp;src_, index_t real_i, index_t real_j)</div><div class="ttdef"><b>Definition:</b> complex.h:92</div></div>
<div class="ttc" id="namespacemshadow_1_1op_1_1complex_html_a53d33692e124b4a830ea47372a093a78a090afb12c0c4066882e839264aca58e0"><div class="ttname"><a href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78a090afb12c0c4066882e839264aca58e0">mshadow::op::complex::kUnitaryC2C</a></div><div class="ttdef"><b>Definition:</b> complex.h:34</div></div>
<div class="ttc" id="namespacemshadow_1_1expr_html_ad5a82db334b81efd9da13934f73d9c94"><div class="ttname"><a href="namespacemshadow_1_1expr.html#ad5a82db334b81efd9da13934f73d9c94">mshadow::expr::complex_div_cc</a></div><div class="ttdeci">ComplexBinaryMapExp&lt; op::complex::kBinaryCC, op::complex::div, TA, TB, DType,(ta|tb|type::kMapper)&gt; complex_div_cc(const Exp&lt; TA, DType, ta &gt; &amp;lhs, const Exp&lt; TB, DType, tb &gt; &amp;rhs)</div><div class="ttdoc">complex_mul_cc Complex multipilication two complex tensors, A * B </div><div class="ttdef"><b>Definition:</b> complex.h:232</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryR2C_00_01OP_00_08ed61b9bbcd667f71f04850a2900af1a_html_a57bcf75bf76301850aee48dafe38498b"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryR2C_00_01OP_00_08ed61b9bbcd667f71f04850a2900af1a.html#a57bcf75bf76301850aee48dafe38498b">mshadow::expr::Plan&lt; ComplexUnitaryExp&lt; op::complex::kUnitaryR2C, OP, TA, DType, etype &gt;, DType &gt;::Eval</a></div><div class="ttdeci">MSHADOW_XINLINE DType Eval(index_t y, index_t x) const</div><div class="ttdef"><b>Definition:</b> complex.h:477</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1mul_html_a724de67f895e8c61bf8708fbb88e4919"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1mul.html#a724de67f895e8c61bf8708fbb88e4919">mshadow::op::complex::mul::RealMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType RealMap(DType a_real, DType a_imag, DType b_real, DType b_imag)</div><div class="ttdoc">map a_real, a_imag, b_real, b_imag to result using defined operation </div><div class="ttdef"><b>Definition:</b> complex.h:38</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2R_00_01OP_00_00e10b88e83c8fd2b6d389c721fbdea73_html_afed322b2caff2dd9d173050e13f1cffe"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2R_00_01OP_00_00e10b88e83c8fd2b6d389c721fbdea73.html#afed322b2caff2dd9d173050e13f1cffe">mshadow::expr::Plan&lt; ComplexUnitaryExp&lt; op::complex::kUnitaryC2R, OP, TA, DType, etype &gt;, DType &gt;::Plan</a></div><div class="ttdeci">Plan(const Plan&lt; TA, DType &gt; &amp;src)</div><div class="ttdef"><b>Definition:</b> complex.h:497</div></div>
<div class="ttc" id="namespacemshadow_1_1op_1_1complex_html_a53d33692e124b4a830ea47372a093a78abed2030268295a23c195bd49a2c4b1e7"><div class="ttname"><a href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78abed2030268295a23c195bd49a2c4b1e7">mshadow::op::complex::kUnitaryC2R</a></div><div class="ttdef"><b>Definition:</b> complex.h:34</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1pad__imag_html"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1pad__imag.html">mshadow::op::complex::pad_imag</a></div><div class="ttdef"><b>Definition:</b> complex.h:90</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryRC_00_01OP_00_0dd1ea6c2b6bf495ab0ef096b0574a49b_html_aad244c93e169ab93a2e8bbcd091c08a6"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryRC_00_01OP_00_0dd1ea6c2b6bf495ab0ef096b0574a49b.html#aad244c93e169ab93a2e8bbcd091c08a6">mshadow::expr::Plan&lt; ComplexBinaryMapExp&lt; op::complex::kBinaryRC, OP, TA, TB, DType, etype &gt;, DType &gt;::Plan</a></div><div class="ttdeci">Plan(const Plan&lt; TA, DType &gt; &amp;lhs, const Plan&lt; TB, DType &gt; &amp;rhs)</div><div class="ttdef"><b>Definition:</b> complex.h:435</div></div>
<div class="ttc" id="structmshadow_1_1Shape_html_a398d94165ccfbaf1ba0e8fcbedfe48c6"><div class="ttname"><a href="structmshadow_1_1Shape.html#a398d94165ccfbaf1ba0e8fcbedfe48c6">mshadow::Shape::shape_</a></div><div class="ttdeci">index_t shape_[kDimension]</div><div class="ttdoc">storing the dimension information </div><div class="ttdef"><b>Definition:</b> tensor.h:75</div></div>
<div class="ttc" id="structmshadow_1_1expr_1_1ShapeCheck_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1ShapeCheck.html">mshadow::expr::ShapeCheck</a></div><div class="ttdoc">runtime shape checking template get the shape of an expression, report error if shape mismatch ...</div><div class="ttdef"><b>Definition:</b> expr_engine-inl.h:364</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1conjugate_html_a357d55ff7392bd8a4f8fe235d140522c"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1conjugate.html#a357d55ff7392bd8a4f8fe235d140522c">mshadow::op::complex::conjugate::RealMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType RealMap(const expr::Plan&lt; TA, DType &gt; &amp;src_, index_t real_i, index_t real_j, index_t imag_i, index_t imag_j)</div><div class="ttdef"><b>Definition:</b> complex.h:65</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1abs__square_html_af0156a6f59a69daa40b7cd6ad857c24c"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1abs__square.html#af0156a6f59a69daa40b7cd6ad857c24c">mshadow::op::complex::abs_square::RealMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType RealMap(const expr::Plan&lt; TA, DType &gt; &amp;src_, index_t real_i, index_t real_j, index_t imag_i, index_t imag_j)</div><div class="ttdef"><b>Definition:</b> complex.h:115</div></div>
<div class="ttc" id="namespacemshadow_1_1expr_html_af82868806aaa59756b9170bcf14c6c79"><div class="ttname"><a href="namespacemshadow_1_1expr.html#af82868806aaa59756b9170bcf14c6c79">mshadow::expr::complex_exchange</a></div><div class="ttdeci">ComplexUnitaryExp&lt; op::complex::kUnitaryC2C, op::complex::exchange, SrcExp, DType,(e1|type::kMapper)&gt; complex_exchange(const Exp&lt; SrcExp, DType, e1 &gt; &amp;src)</div><div class="ttdoc">complex_exchange Exchange the real and imaginary part of A where A is a complex tensor ...</div><div class="ttdef"><b>Definition:</b> complex.h:276</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1div_html_aba294c83e61b99040b356cece86dadb7"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1div.html#aba294c83e61b99040b356cece86dadb7">mshadow::op::complex::div::ImagMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType ImagMap(DType a_real, DType a_imag, DType b_real, DType b_imag)</div><div class="ttdef"><b>Definition:</b> complex.h:57</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCC_00_01OP_00_070418209bf6f822b4248b0ecfca4610a_html_a1525eda4e0c9c9b8ffa241a990138b48"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCC_00_01OP_00_070418209bf6f822b4248b0ecfca4610a.html#a1525eda4e0c9c9b8ffa241a990138b48">mshadow::expr::Plan&lt; ComplexBinaryMapExp&lt; op::complex::kBinaryCC, OP, TA, TB, DType, etype &gt;, DType &gt;::Plan</a></div><div class="ttdeci">Plan(const Plan&lt; TA, DType &gt; &amp;lhs, const Plan&lt; TB, DType &gt; &amp;rhs)</div><div class="ttdef"><b>Definition:</b> complex.h:390</div></div>
<div class="ttc" id="namespacemshadow_1_1expr_html_a28daeb9024c036867042d4eff0e1901f"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a28daeb9024c036867042d4eff0e1901f">mshadow::expr::complex_mul_cr</a></div><div class="ttdeci">ComplexBinaryMapExp&lt; op::complex::kBinaryCR, op::complex::mul, TA, TB, DType,(ta|tb|type::kMapper)&gt; complex_mul_cr(const Exp&lt; TA, DType, ta &gt; &amp;lhs, const Exp&lt; TB, DType, tb &gt; &amp;rhs)</div><div class="ttdoc">complex_mul_cr Complex multipilication a complex tensor A and a real tensor B </div><div class="ttdef"><b>Definition:</b> complex.h:212</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCR_00_01OP_00_0b257075ce7da6a138f8294fe4d5adc88_html_a8140c77f0f79903728df6a2b0bfdb79c"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCR_00_01OP_00_0b257075ce7da6a138f8294fe4d5adc88.html#a8140c77f0f79903728df6a2b0bfdb79c">mshadow::expr::Plan&lt; ComplexBinaryMapExp&lt; op::complex::kBinaryCR, OP, TA, TB, DType, etype &gt;, DType &gt;::Plan</a></div><div class="ttdeci">Plan(const Plan&lt; TA, DType &gt; &amp;lhs, const Plan&lt; TB, DType &gt; &amp;rhs)</div><div class="ttdef"><b>Definition:</b> complex.h:412</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1toreal_html"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1toreal.html">mshadow::op::complex::toreal</a></div><div class="ttdef"><b>Definition:</b> complex.h:104</div></div>
<div class="ttc" id="structmshadow_1_1expr_1_1ComplexBinaryMapExp_html_af751a33889d5988f179ae207e72021e9"><div class="ttname"><a href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html#af751a33889d5988f179ae207e72021e9">mshadow::expr::ComplexBinaryMapExp::ComplexBinaryMapExp</a></div><div class="ttdeci">ComplexBinaryMapExp(const TA &amp;lhs, const TB &amp;rhs)</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> complex.h:155</div></div>
<div class="ttc" id="structmshadow_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="namespacemshadow_1_1expr_html_a63e5c78be840be5d8befd0ea1ed50727"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a63e5c78be840be5d8befd0ea1ed50727">mshadow::expr::complex_sum_real_imag</a></div><div class="ttdeci">ComplexUnitaryExp&lt; op::complex::kUnitaryC2R, op::complex::sum_real_imag, SrcExp, DType,(e1|type::kMapper)&gt; complex_sum_real_imag(const Exp&lt; SrcExp, DType, e1 &gt; &amp;src)</div><div class="ttdef"><b>Definition:</b> complex.h:319</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1mul_html_a5a05bac90bbe4f01507288caa499d6a4"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1mul.html#a5a05bac90bbe4f01507288caa499d6a4">mshadow::op::complex::mul::ImagMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType ImagMap(DType a_real, DType a_imag, DType b_real, DType b_imag)</div><div class="ttdef"><b>Definition:</b> complex.h:43</div></div>
<div class="ttc" id="namespacemshadow_1_1expr_html_aba3eea303533273d1a20b9dac08a8738"><div class="ttname"><a href="namespacemshadow_1_1expr.html#aba3eea303533273d1a20b9dac08a8738">mshadow::expr::complex_toreal</a></div><div class="ttdeci">ComplexUnitaryExp&lt; op::complex::kUnitaryC2R, op::complex::toreal, SrcExp, DType,(e1|type::kMapper)&gt; complex_toreal(const Exp&lt; SrcExp, DType, e1 &gt; &amp;src)</div><div class="ttdoc">complex_toreal convert complex matrix to real matrix, keep only real part </div><div class="ttdef"><b>Definition:</b> complex.h:300</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1conjugate_html"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1conjugate.html">mshadow::op::complex::conjugate</a></div><div class="ttdef"><b>Definition:</b> complex.h:63</div></div>
<div class="ttc" id="namespacemshadow_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:334</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryR2C_00_01OP_00_08ed61b9bbcd667f71f04850a2900af1a_html_af2a9583479ba0b16b08fb6bc321852ce"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryR2C_00_01OP_00_08ed61b9bbcd667f71f04850a2900af1a.html#af2a9583479ba0b16b08fb6bc321852ce">mshadow::expr::Plan&lt; ComplexUnitaryExp&lt; op::complex::kUnitaryR2C, OP, TA, DType, etype &gt;, DType &gt;::Plan</a></div><div class="ttdeci">Plan(const Plan&lt; TA, DType &gt; &amp;src)</div><div class="ttdef"><b>Definition:</b> complex.h:476</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2C_00_01OP_00_0d20175510643f9f1d2ba786987d7b441_html_a03c9983da9e893029c4adb411cc8800f"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2C_00_01OP_00_0d20175510643f9f1d2ba786987d7b441.html#a03c9983da9e893029c4adb411cc8800f">mshadow::expr::Plan&lt; ComplexUnitaryExp&lt; op::complex::kUnitaryC2C, OP, TA, DType, etype &gt;, DType &gt;::Plan</a></div><div class="ttdeci">Plan(const Plan&lt; TA, DType &gt; &amp;src)</div><div class="ttdef"><b>Definition:</b> complex.h:458</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCR_00_01OP_00_0b257075ce7da6a138f8294fe4d5adc88_html_a67ce089b01cfd2700dc9727d3e98c724"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan_3_01ComplexBinaryMapExp_3_01op_1_1complex_1_1kBinaryCR_00_01OP_00_0b257075ce7da6a138f8294fe4d5adc88.html#a67ce089b01cfd2700dc9727d3e98c724">mshadow::expr::Plan&lt; ComplexBinaryMapExp&lt; op::complex::kBinaryCR, OP, TA, TB, DType, etype &gt;, DType &gt;::Eval</a></div><div class="ttdeci">MSHADOW_XINLINE DType Eval(index_t y, index_t x) const</div><div class="ttdef"><b>Definition:</b> complex.h:414</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1exchange_html"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1exchange.html">mshadow::op::complex::exchange</a></div><div class="ttdef"><b>Definition:</b> complex.h:76</div></div>
<div class="ttc" id="namespacemshadow_1_1op_1_1complex_html_a53d33692e124b4a830ea47372a093a78a7c2ccb715d938a7831636e2e9b8e6c32"><div class="ttname"><a href="namespacemshadow_1_1op_1_1complex.html#a53d33692e124b4a830ea47372a093a78a7c2ccb715d938a7831636e2e9b8e6c32">mshadow::op::complex::kUnitaryR2C</a></div><div class="ttdef"><b>Definition:</b> complex.h:34</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1exchange_html_a618fb9d7ad4e92345c03b9a4016c7897"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1exchange.html#a618fb9d7ad4e92345c03b9a4016c7897">mshadow::op::complex::exchange::RealMap</a></div><div class="ttdeci">static MSHADOW_XINLINE DType RealMap(const expr::Plan&lt; TA, DType &gt; &amp;src_, index_t real_i, index_t real_j, index_t imag_i, index_t imag_j)</div><div class="ttdef"><b>Definition:</b> complex.h:78</div></div>
<div class="ttc" id="namespacemshadow_1_1expr_html_a4cc207dbc5bf6470696edada1bd1ddef"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a4cc207dbc5bf6470696edada1bd1ddef">mshadow::expr::complex_div_rc</a></div><div class="ttdeci">ComplexBinaryMapExp&lt; op::complex::kBinaryRC, op::complex::div, TA, TB, DType,(ta|tb|type::kMapper)&gt; complex_div_rc(const Exp&lt; TA, DType, ta &gt; &amp;lhs, const Exp&lt; TB, DType, tb &gt; &amp;rhs)</div><div class="ttdoc">complex_mul_rc Complex multipilication of a real tensor A and a complex tensor B </div><div class="ttdef"><b>Definition:</b> complex.h:252</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1abs__square_html"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1abs__square.html">mshadow::op::complex::abs_square</a></div><div class="ttdef"><b>Definition:</b> complex.h:113</div></div>
<div class="ttc" id="structmshadow_1_1expr_1_1ComplexUnitaryExp_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1ComplexUnitaryExp.html">mshadow::expr::ComplexUnitaryExp</a></div><div class="ttdoc">compute conj(src) where src is a complex tensor </div><div class="ttdef"><b>Definition:</b> complex.h:168</div></div>
<div class="ttc" id="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2R_00_01OP_00_00e10b88e83c8fd2b6d389c721fbdea73_html_ac76fba2f1b46b0434c107724fd2101db"><div class="ttname"><a href="classmshadow_1_1expr_1_1Plan_3_01ComplexUnitaryExp_3_01op_1_1complex_1_1kUnitaryC2R_00_01OP_00_00e10b88e83c8fd2b6d389c721fbdea73.html#ac76fba2f1b46b0434c107724fd2101db">mshadow::expr::Plan&lt; ComplexUnitaryExp&lt; op::complex::kUnitaryC2R, OP, TA, DType, etype &gt;, DType &gt;::Eval</a></div><div class="ttdeci">MSHADOW_XINLINE DType Eval(index_t y, index_t x) const</div><div class="ttdef"><b>Definition:</b> complex.h:498</div></div>
<div class="ttc" id="structmshadow_1_1op_1_1complex_1_1div_html"><div class="ttname"><a href="structmshadow_1_1op_1_1complex_1_1div.html">mshadow::op::complex::div</a></div><div class="ttdef"><b>Definition:</b> complex.h:49</div></div>
<div class="ttc" id="namespacemshadow_1_1expr_html_a7e5d52651a37f08726fc171fa0176fef"><div class="ttname"><a href="namespacemshadow_1_1expr.html#a7e5d52651a37f08726fc171fa0176fef">mshadow::expr::complex_div_cr</a></div><div class="ttdeci">ComplexBinaryMapExp&lt; op::complex::kBinaryCR, op::complex::div, TA, TB, DType,(ta|tb|type::kMapper)&gt; complex_div_cr(const Exp&lt; TA, DType, ta &gt; &amp;lhs, const Exp&lt; TB, DType, tb &gt; &amp;rhs)</div><div class="ttdoc">complex_mul_cr Complex multipilication a complex tensor A and a real tensor B </div><div class="ttdef"><b>Definition:</b> complex.h:242</div></div>
<div class="ttc" id="structmshadow_1_1expr_1_1ComplexBinaryMapExp_html"><div class="ttname"><a href="structmshadow_1_1expr_1_1ComplexBinaryMapExp.html">mshadow::expr::ComplexBinaryMapExp</a></div><div class="ttdoc">binary map expression lhs [op] rhs where lhs and rhs are complex tensors </div><div class="ttdef"><b>Definition:</b> complex.h:148</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 5 2023 00:58:42 for mxnet by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>