545 lines
113 KiB
HTML
545 lines
113 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
|
<meta name="generator" content="Doxygen 1.9.4"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>DNA Calib: Mat.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 id="projectrow">
|
|
<td id="projectalign">
|
|
<div id="projectname">DNA Calib<span id="projectnumber"> 1.1</span>
|
|
</div>
|
|
<div id="projectbrief">Project brief</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.9.4 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
/* @license-end */
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_152a494004de7bf5f5699139fd63e08c.html">dnacalib</a></li><li class="navelem"><a class="el" href="dir_e342cf579e4a20e61ca12fdabd8b8b30.html">DNACalib</a></li><li class="navelem"><a class="el" href="dir_ebe8ed350d62118184cb59aefa6eec76.html">src</a></li><li class="navelem"><a class="el" href="dir_78d82fc3e63767681cde80df46b20e45.html">tdm</a></li> </ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="headertitle"><div class="title">Mat.h</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a href="Mat_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright Epic Games, Inc. All Rights Reserved.</span></div>
|
|
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span> </div>
|
|
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="preprocessor">#pragma once</span></div>
|
|
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span> </div>
|
|
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include "<a class="code" href="Types_8h.html">tdm/Types.h</a>"</span></div>
|
|
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include "<a class="code" href="Vec_8h.html">tdm/Vec.h</a>"</span></div>
|
|
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
|
|
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacetdm.html">tdm</a> {</div>
|
|
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
|
|
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="keyword">inline</span> mat<C, R, T> <a class="code hl_function" href="namespacetdm.html#ad5abf5602d97e3df89baa5700086e9cd">transpose</a>(<span class="keyword">const</span> mat<R, C, T>& m);</div>
|
|
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
|
|
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="keyword">template</span><dim_t N, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="keyword">inline</span> mat<N, N, T> <a class="code hl_function" href="namespacetdm.html#af6249949ec4da22bf7b907f2751efcaa">inverse</a>(<span class="keyword">const</span> mat<N, N, T>& m);</div>
|
|
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
|
|
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html"> 17</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structtdm_1_1mat.html">mat</a> {</div>
|
|
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#ad991bf735aab5ffae2dc718771f9a83e"> 18</a></span> <span class="keyword">using </span><a class="code hl_typedef" href="structtdm_1_1mat.html#ad991bf735aab5ffae2dc718771f9a83e">value_type</a> = T;</div>
|
|
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#af325f87d61c47ea25eb67e4103f23a73"> 19</a></span> <span class="keyword">using </span><a class="code hl_class" href="structtdm_1_1vec.html">row_type</a> = <a class="code hl_class" href="structtdm_1_1vec.html">vec<C, value_type></a>;</div>
|
|
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a269c30d45a8359c65274a3b60e20d402"> 20</a></span> <span class="keyword">using </span><a class="code hl_struct" href="structtdm_1_1vec.html">column_type</a> = <a class="code hl_struct" href="structtdm_1_1vec.html">vec<R, value_type></a>;</div>
|
|
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
|
|
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#ad4b61cae9009d2f75f5bbbede7fe40ec"> 22</a></span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> <a class="code hl_function" href="structtdm_1_1mat.html#ad4b61cae9009d2f75f5bbbede7fe40ec">rows</a>() {</div>
|
|
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1vec.html#a0124146b684564619f7af68b70f982ec">column_type::dimensions</a>();</div>
|
|
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> }</div>
|
|
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
|
|
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a0404b858cafe5d412467a41d169400dc"> 26</a></span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> <a class="code hl_function" href="structtdm_1_1mat.html#a0404b858cafe5d412467a41d169400dc">columns</a>() {</div>
|
|
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1vec.html#a0124146b684564619f7af68b70f982ec">row_type::dimensions</a>();</div>
|
|
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> }</div>
|
|
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
|
|
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">private</span>:</div>
|
|
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a0eb976bda4ac453b8ecf5d58f2cc8320"> 31</a></span> <a class="code hl_class" href="structtdm_1_1vec.html">row_type</a> <a class="code hl_variable" href="structtdm_1_1mat.html#a0eb976bda4ac453b8ecf5d58f2cc8320">values</a>[R];</div>
|
|
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
|
|
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a77187b377ef8a045f7b64bf08bad23e7"> 34</a></span> <a class="code hl_function" href="structtdm_1_1mat.html#a77187b377ef8a045f7b64bf08bad23e7">mat</a>() : <a class="code hl_variable" href="structtdm_1_1mat.html#a0eb976bda4ac453b8ecf5d58f2cc8320">values</a>{} {</div>
|
|
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> }</div>
|
|
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
|
|
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a0cd5a441ff1153499ddd51c0c9cc059c"> 37</a></span> <a class="code hl_function" href="structtdm_1_1mat.html#a0cd5a441ff1153499ddd51c0c9cc059c">~mat</a>() = <span class="keywordflow">default</span>;</div>
|
|
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
|
|
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a55e1a25c0b1a36aad0c1502af4cb92f1"> 39</a></span> <a class="code hl_function" href="structtdm_1_1mat.html#a55e1a25c0b1a36aad0c1502af4cb92f1">mat</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>&) = <span class="keywordflow">default</span>;</div>
|
|
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a6f2ad1323a78efde68a7339c370c92b5"> 40</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a6f2ad1323a78efde68a7339c370c92b5">operator=</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>&) = <span class="keywordflow">default</span>;</div>
|
|
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
|
|
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#acd939d606842ccae93ea15a7233b2984"> 42</a></span> <a class="code hl_function" href="structtdm_1_1mat.html#acd939d606842ccae93ea15a7233b2984">mat</a>(<a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>&&) = <span class="keywordflow">default</span>;</div>
|
|
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#aa4ba1f2542fca6ee8f8da2e877a9ce15"> 43</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#aa4ba1f2542fca6ee8f8da2e877a9ce15">operator=</a>(<a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>&&) = <span class="keywordflow">default</span>;</div>
|
|
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
|
|
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">template</span><<span class="keyword">typename</span> U></div>
|
|
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#adffb14160b228f2891b0e8b35f9159b9"> 46</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="structtdm_1_1mat.html#adffb14160b228f2891b0e8b35f9159b9">mat</a>(U scalar) {</div>
|
|
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([scalar](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> <span class="comment">/*unused*/</span>) {</div>
|
|
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a> = <a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>{scalar};</div>
|
|
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> });</div>
|
|
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> }</div>
|
|
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
|
|
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">template</span><<span class="keyword">typename</span> ... Us, <span class="keyword">typename</span> std::enable_if<<span class="keyword">sizeof</span>...(Us) == R * C>::type* = <span class="keyword">nullptr</span>></div>
|
|
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a888169ad4c2153fb163111592feaf04b"> 53</a></span> <a class="code hl_function" href="structtdm_1_1mat.html#a888169ad4c2153fb163111592feaf04b">mat</a>(Us... scalars) {</div>
|
|
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> T tmp[<span class="keyword">sizeof</span>...(Us)] = {<span class="keyword">static_cast<</span>T<span class="keyword">></span>(scalars)...};</div>
|
|
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([&tmp](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri) {</div>
|
|
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>.<a class="code hl_function" href="structtdm_1_1vec.html#a127a38ee0747536a683201485e0d40c4">apply</a>([&tmp, ri](<a class="code hl_typedef" href="structtdm_1_1mat.html#ad991bf735aab5ffae2dc718771f9a83e">value_type</a>& value, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ci) {</div>
|
|
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> value = tmp[ri * <a class="code hl_function" href="structtdm_1_1mat.html#a0404b858cafe5d412467a41d169400dc">columns</a>() + ci];</div>
|
|
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> });</div>
|
|
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> });</div>
|
|
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> }</div>
|
|
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
|
|
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">template</span><<span class="keyword">typename</span> U></div>
|
|
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a50a343afe2e9dfaf23c684926feecd3a"> 63</a></span> <a class="code hl_function" href="structtdm_1_1mat.html#a50a343afe2e9dfaf23c684926feecd3a">mat</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, U></a>& rhs) {</div>
|
|
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([&rhs](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri) {</div>
|
|
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a> = rhs[ri];</div>
|
|
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> });</div>
|
|
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> }</div>
|
|
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
|
|
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">template</span><<span class="keyword">typename</span> U></div>
|
|
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a9c38f0391111f7f3abdb1515f4cada87"> 70</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a9c38f0391111f7f3abdb1515f4cada87">operator=</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, U></a>& rhs) {</div>
|
|
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a6f2ad1323a78efde68a7339c370c92b5">operator=</a>(<a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>{rhs});</div>
|
|
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> }</div>
|
|
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
|
|
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">template</span><<span class="keyword">typename</span> ... Us, <span class="keyword">typename</span> std::enable_if<<span class="keyword">sizeof</span>...(Us) == R>::type* = <span class="keyword">nullptr</span>></div>
|
|
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a814d14a9967da1d408a30f2bb458ab70"> 75</a></span> <a class="code hl_function" href="structtdm_1_1mat.html#a814d14a9967da1d408a30f2bb458ab70">mat</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1vec.html">vec<C, Us></a>& ... vs) : <a class="code hl_variable" href="structtdm_1_1mat.html#a0eb976bda4ac453b8ecf5d58f2cc8320">values</a>{<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>{vs} ...} {</div>
|
|
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> }</div>
|
|
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
|
|
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keyword">template</span><<span class="keyword">typename</span> ... Us, <span class="keyword">typename</span> std::enable_if<<span class="keyword">sizeof</span>...(Us) == R>::type * = <span class="keyword">nullptr</span>></div>
|
|
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#af211e4e27ae53a43d9db60c0af57b0e7"> 79</a></span> <span class="keyword">static</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a> <a class="code hl_function" href="structtdm_1_1mat.html#af211e4e27ae53a43d9db60c0af57b0e7">fromRows</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1vec.html">vec<C, Us></a>& ... vs) {</div>
|
|
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>{vs ...};</div>
|
|
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> }</div>
|
|
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
|
|
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">template</span><<span class="keyword">typename</span> ... Us, <span class="keyword">typename</span> std::enable_if<<span class="keyword">sizeof</span>...(Us) == C>::type* = <span class="keyword">nullptr</span>></div>
|
|
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a9f1b734dca470f22bffdcaf838c3b711"> 84</a></span> <span class="keyword">static</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a> <a class="code hl_function" href="structtdm_1_1mat.html#a9f1b734dca470f22bffdcaf838c3b711">fromColumns</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1vec.html">vec<R, Us></a>& ... vs) {</div>
|
|
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a><<span class="keyword">sizeof</span>...(vs), R, T> tmp{vs ...};</div>
|
|
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacetdm.html#ad5abf5602d97e3df89baa5700086e9cd">tdm::transpose</a>(tmp);</div>
|
|
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> }</div>
|
|
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
|
|
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">template</span><<span class="keyword">typename</span> U, <span class="keyword">typename</span> ..., <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> H = R, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> W = C></div>
|
|
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a56a703b4e3136f62ec910f2edb532a87"> 90</a></span> <span class="keyword">static</span> <span class="keyword">typename</span> std::enable_if<H == W, mat>::type <a class="code hl_function" href="structtdm_1_1mat.html#a56a703b4e3136f62ec910f2edb532a87">diagonal</a>(U scalar) {</div>
|
|
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a> ret;</div>
|
|
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> ret.<a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([scalar](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri) {</div>
|
|
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>[ri] = scalar;</div>
|
|
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> });</div>
|
|
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">return</span> ret;</div>
|
|
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> }</div>
|
|
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
|
|
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">template</span><<span class="keyword">typename</span> U, <span class="keyword">typename</span> ..., <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> H = R, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> W = C></div>
|
|
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#aab6b43639f0fb0f1b309920d809e04d3"> 99</a></span> <span class="keyword">static</span> <span class="keyword">typename</span> std::enable_if<H == W, mat>::type <a class="code hl_function" href="structtdm_1_1mat.html#aab6b43639f0fb0f1b309920d809e04d3">diagonal</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1vec.html">vec<W, U></a>& scalars) {</div>
|
|
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a> ret;</div>
|
|
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> ret.<a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([&scalars](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri) {</div>
|
|
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>[ri] = scalars[ri];</div>
|
|
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> });</div>
|
|
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="keywordflow">return</span> ret;</div>
|
|
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> }</div>
|
|
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
|
|
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keyword">template</span><<span class="keyword">typename</span> ... Us, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> H = R, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> W = C></div>
|
|
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a742fc9c84bf1d6bbb9a5cb29eb959f73"> 108</a></span> <span class="keyword">static</span> <span class="keyword">typename</span> std::enable_if<(H == W) && (<span class="keyword">sizeof</span>...(Us) == H), <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>>::type <a class="code hl_function" href="structtdm_1_1mat.html#a742fc9c84bf1d6bbb9a5cb29eb959f73">diagonal</a>(Us... scalars) {</div>
|
|
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56a703b4e3136f62ec910f2edb532a87">diagonal</a>(<a class="code hl_struct" href="structtdm_1_1vec.html">vec<R, T></a>{scalars ...});</div>
|
|
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> }</div>
|
|
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> </div>
|
|
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">template</span><<span class="keyword">typename</span> ..., <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> H = R, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> W = C></div>
|
|
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a11da46b865ad6c5876d68bcb3ec46724"> 113</a></span> <span class="keyword">static</span> <span class="keyword">typename</span> std::enable_if<H == W, mat>::type <a class="code hl_function" href="structtdm_1_1mat.html#a11da46b865ad6c5876d68bcb3ec46724">identity</a>() {</div>
|
|
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56a703b4e3136f62ec910f2edb532a87">diagonal</a>(<span class="keyword">static_cast<</span>T<span class="keyword">></span>(1));</div>
|
|
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> }</div>
|
|
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
|
|
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a28676d29eff05941db41e19038d396b5"> 117</a></span> <a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a28676d29eff05941db41e19038d396b5">operator[]</a>(<a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> index) {</div>
|
|
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="comment">// NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-array-to-pointer-decay,hicpp-no-array-decay)</span></div>
|
|
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> assert(index < <a class="code hl_function" href="structtdm_1_1mat.html#ad4b61cae9009d2f75f5bbbede7fe40ec">rows</a>());</div>
|
|
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="comment">// NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index)</span></div>
|
|
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="structtdm_1_1mat.html#a0eb976bda4ac453b8ecf5d58f2cc8320">values</a>[index];</div>
|
|
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> }</div>
|
|
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
|
|
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#aab2f4f9b1cbcce8659554685b88e0bb6"> 124</a></span> <span class="keyword">const</span> <a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#aab2f4f9b1cbcce8659554685b88e0bb6">operator[]</a>(<a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> index)<span class="keyword"> const </span>{</div>
|
|
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="comment">// NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-array-to-pointer-decay,hicpp-no-array-decay)</span></div>
|
|
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> assert(index < <a class="code hl_function" href="structtdm_1_1mat.html#ad4b61cae9009d2f75f5bbbede7fe40ec">rows</a>());</div>
|
|
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="comment">// NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index)</span></div>
|
|
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="structtdm_1_1mat.html#a0eb976bda4ac453b8ecf5d58f2cc8320">values</a>[index];</div>
|
|
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> }</div>
|
|
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
|
|
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a3ad52e8e3b78322e23e3b730a63e3195"> 131</a></span> T& <a class="code hl_function" href="structtdm_1_1mat.html#a3ad52e8e3b78322e23e3b730a63e3195">operator()</a>(<a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> rowIndex, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> colIndex) {</div>
|
|
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a28676d29eff05941db41e19038d396b5">operator[]</a>(rowIndex)[colIndex];</div>
|
|
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> }</div>
|
|
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> </div>
|
|
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a52d65787641686be0065fdde669ba29f"> 135</a></span> <span class="keyword">const</span> T& <a class="code hl_function" href="structtdm_1_1mat.html#a52d65787641686be0065fdde669ba29f">operator()</a>(<a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> rowIndex, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> colIndex)<span class="keyword"> const </span>{</div>
|
|
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a28676d29eff05941db41e19038d396b5">operator[]</a>(rowIndex)[colIndex];</div>
|
|
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> }</div>
|
|
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
|
|
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keyword">template</span><<span class="keyword">typename</span> F></div>
|
|
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc"> 140</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>(F func) {</div>
|
|
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keywordflow">for</span> (<a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri{}; ri != <a class="code hl_function" href="structtdm_1_1mat.html#ad4b61cae9009d2f75f5bbbede7fe40ec">rows</a>(); ++ri) {</div>
|
|
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> func(<a class="code hl_variable" href="structtdm_1_1mat.html#a0eb976bda4ac453b8ecf5d58f2cc8320">values</a>[ri], ri);</div>
|
|
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> }</div>
|
|
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
|
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> }</div>
|
|
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
|
|
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keyword">template</span><<span class="keyword">typename</span> F></div>
|
|
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a0ae74a3bef3a5c8f893921b4ff98a2ce"> 148</a></span> <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a0ae74a3bef3a5c8f893921b4ff98a2ce">apply</a>(F func)<span class="keyword"> const </span>{</div>
|
|
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">for</span> (<a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri{}; ri != <a class="code hl_function" href="structtdm_1_1mat.html#ad4b61cae9009d2f75f5bbbede7fe40ec">rows</a>(); ++ri) {</div>
|
|
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> func(<a class="code hl_variable" href="structtdm_1_1mat.html#a0eb976bda4ac453b8ecf5d58f2cc8320">values</a>[ri], ri);</div>
|
|
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> }</div>
|
|
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
|
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> }</div>
|
|
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
|
|
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#aec3c26701f100034f360ed7e3362c7fb"> 155</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#aec3c26701f100034f360ed7e3362c7fb">operator++</a>() {</div>
|
|
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> <span class="comment">/*unused*/</span>) {</div>
|
|
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> ++<a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>;</div>
|
|
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> });</div>
|
|
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> }</div>
|
|
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> </div>
|
|
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a5fc80cab422df88dcdf40dd70658c1c2"> 161</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a5fc80cab422df88dcdf40dd70658c1c2">operator--</a>() {</div>
|
|
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> <span class="comment">/*unused*/</span>) {</div>
|
|
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> --<a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>;</div>
|
|
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> });</div>
|
|
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> }</div>
|
|
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
|
|
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="keyword">template</span><<span class="keyword">typename</span> U></div>
|
|
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a87b2bc4f7e6203582d4532b53cbbe4d3"> 168</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a87b2bc4f7e6203582d4532b53cbbe4d3">operator+=</a>(U rhs) {</div>
|
|
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([rhs](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> <span class="comment">/*unused*/</span>) {</div>
|
|
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a> += rhs;</div>
|
|
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> });</div>
|
|
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> }</div>
|
|
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> </div>
|
|
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keyword">template</span><<span class="keyword">typename</span> U></div>
|
|
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#aae935981e3ab781b1ef0e89161def5c3"> 175</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#aae935981e3ab781b1ef0e89161def5c3">operator+=</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, U></a>& rhs) {</div>
|
|
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([&rhs](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri) {</div>
|
|
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a> += rhs[ri];</div>
|
|
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> });</div>
|
|
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> }</div>
|
|
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> </div>
|
|
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a3a5734f3a110db2834b50a6d89da270d"> 181</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a3a5734f3a110db2834b50a6d89da270d">operator+=</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& rhs) {</div>
|
|
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keywordflow">return</span> <span class="keyword">operator</span>+=<T>(rhs);</div>
|
|
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> }</div>
|
|
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> </div>
|
|
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keyword">template</span><<span class="keyword">typename</span> U></div>
|
|
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a2b16a5b3b1fbe6301ade535514ae3162"> 186</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a2b16a5b3b1fbe6301ade535514ae3162">operator-=</a>(U rhs) {</div>
|
|
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([rhs](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> <span class="comment">/*unused*/</span>) {</div>
|
|
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a> -= rhs;</div>
|
|
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> });</div>
|
|
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> }</div>
|
|
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
|
|
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keyword">template</span><<span class="keyword">typename</span> U></div>
|
|
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#ae636128bf5fe51d09696a6100d61add8"> 193</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#ae636128bf5fe51d09696a6100d61add8">operator-=</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, U></a>& rhs) {</div>
|
|
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([&rhs](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri) {</div>
|
|
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a> -= rhs[ri];</div>
|
|
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> });</div>
|
|
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> }</div>
|
|
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
|
|
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a29fe6f1d8441e382c03e1dd0bde72f92"> 199</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a29fe6f1d8441e382c03e1dd0bde72f92">operator-=</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& rhs) {</div>
|
|
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="keywordflow">return</span> <span class="keyword">operator</span>-=<T>(rhs);</div>
|
|
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> }</div>
|
|
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> </div>
|
|
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <span class="keyword">template</span><<span class="keyword">typename</span> U></div>
|
|
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#afcb7677682ab2012eabadc12eff42630"> 204</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#afcb7677682ab2012eabadc12eff42630">operator*=</a>(U rhs) {</div>
|
|
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([rhs](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> <span class="comment">/*unused*/</span>) {</div>
|
|
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a> *= rhs;</div>
|
|
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> });</div>
|
|
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> }</div>
|
|
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> </div>
|
|
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="keyword">template</span><<span class="keyword">typename</span> U></div>
|
|
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a12a6568e39d3bc62a47d97d928a676db"> 211</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a12a6568e39d3bc62a47d97d928a676db">operator*=</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, U></a>& rhs) {</div>
|
|
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keywordflow">return</span> (*<span class="keyword">this</span> = *<span class="keyword">this</span> * rhs);</div>
|
|
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> }</div>
|
|
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
|
|
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a8f109a327ecbc86af9f06a0835b8dbf6"> 215</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a8f109a327ecbc86af9f06a0835b8dbf6">operator*=</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& rhs) {</div>
|
|
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="keywordflow">return</span> <span class="keyword">operator</span>*=<T>(rhs);</div>
|
|
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> }</div>
|
|
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> </div>
|
|
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keyword">template</span><<span class="keyword">typename</span> U></div>
|
|
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a0d0a8e94bfb1833c426a11a43dcbe443"> 220</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a0d0a8e94bfb1833c426a11a43dcbe443">operator/=</a>(U rhs) {</div>
|
|
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([rhs](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> <span class="comment">/*unused*/</span>) {</div>
|
|
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a> /= rhs;</div>
|
|
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> });</div>
|
|
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> }</div>
|
|
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> </div>
|
|
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keyword">template</span><<span class="keyword">typename</span> U></div>
|
|
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a08905db39e54a925f0326cbeed84066d"> 227</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a08905db39e54a925f0326cbeed84066d">operator/=</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, U></a>& rhs) {</div>
|
|
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#afcb7677682ab2012eabadc12eff42630">operator*=</a>(<a class="code hl_function" href="namespacetdm.html#af6249949ec4da22bf7b907f2751efcaa">inverse</a>(rhs));</div>
|
|
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> }</div>
|
|
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> </div>
|
|
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#abc400ed8e25714b79c7308f89da1d240"> 231</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#abc400ed8e25714b79c7308f89da1d240">operator/=</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& rhs) {</div>
|
|
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keywordflow">return</span> <span class="keyword">operator</span>/=<T>(rhs);</div>
|
|
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> }</div>
|
|
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> </div>
|
|
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keyword">template</span><<span class="keyword">typename</span> ..., <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> H = R, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> W = C></div>
|
|
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a022b835621316779fcb5f1655ac2b449"> 236</a></span> <span class="keyword">typename</span> std::enable_if<H == W, mat&>::type <a class="code hl_function" href="structtdm_1_1mat.html#a022b835621316779fcb5f1655ac2b449">transpose</a>() {</div>
|
|
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keywordflow">return</span> (*<span class="keyword">this</span> = <a class="code hl_function" href="namespacetdm.html#ad5abf5602d97e3df89baa5700086e9cd">tdm::transpose</a>(*<span class="keyword">this</span>));</div>
|
|
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> }</div>
|
|
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> </div>
|
|
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#aa145e30a3c416cfaa04181a28e69eeed"> 240</a></span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat</a>& <a class="code hl_function" href="structtdm_1_1mat.html#aa145e30a3c416cfaa04181a28e69eeed">negate</a>() {</div>
|
|
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([](<a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> <span class="comment">/*unused*/</span>) {</div>
|
|
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>.<a class="code hl_function" href="structtdm_1_1vec.html#a3f3ea73401edb017414292df5c64d4a8">negate</a>();</div>
|
|
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> });</div>
|
|
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
|
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> }</div>
|
|
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> </div>
|
|
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741"> 247</a></span> <a class="code hl_class" href="structtdm_1_1vec.html">row_type</a> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>(<a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> index)<span class="keyword"> const </span>{</div>
|
|
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="keywordflow">return</span> <a class="code hl_function" href="structtdm_1_1mat.html#a28676d29eff05941db41e19038d396b5">operator[]</a>(index);</div>
|
|
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> }</div>
|
|
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> </div>
|
|
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#a41de3ceaa4bd5309b2432edea56a01ab"> 251</a></span> <a class="code hl_struct" href="structtdm_1_1vec.html">column_type</a> <a class="code hl_function" href="structtdm_1_1mat.html#a41de3ceaa4bd5309b2432edea56a01ab">column</a>(<a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> index)<span class="keyword"> const </span>{</div>
|
|
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <a class="code hl_struct" href="structtdm_1_1vec.html">column_type</a> col;</div>
|
|
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([&col, index](<span class="keyword">const</span> <a class="code hl_class" href="structtdm_1_1vec.html">row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri) {</div>
|
|
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> col[ri] = <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>[index];</div>
|
|
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> });</div>
|
|
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="keywordflow">return</span> col;</div>
|
|
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> }</div>
|
|
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> </div>
|
|
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="keyword">template</span><dim_t H, dim_t W></div>
|
|
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"><a class="line" href="structtdm_1_1mat.html#ae922d5cf365cc0e8f4e6cca0b1d81135"> 260</a></span> <span class="keyword">typename</span> std::enable_if<(H > 1 && W > 1 && H <= R && W <= C), mat<H, W, T> >::type <a class="code hl_function" href="structtdm_1_1mat.html#ae922d5cf365cc0e8f4e6cca0b1d81135">submat</a>(<a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> y, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> x)<span class="keyword"> const </span>{</div>
|
|
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> assert(H + y <= <a class="code hl_function" href="structtdm_1_1mat.html#ad4b61cae9009d2f75f5bbbede7fe40ec">rows</a>());</div>
|
|
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> assert(W + x <= <a class="code hl_function" href="structtdm_1_1mat.html#a0404b858cafe5d412467a41d169400dc">columns</a>());</div>
|
|
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<H, W, T></a> ret;</div>
|
|
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> ret.<a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([<span class="keyword">this</span>, y, x](<span class="keyword">typename</span> <a class="code hl_class" href="structtdm_1_1vec.html">mat<H, W, T>::row_type</a>& <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri) {</div>
|
|
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <a class="code hl_function" href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">row</a>.<a class="code hl_function" href="structtdm_1_1vec.html#a127a38ee0747536a683201485e0d40c4">apply</a>([<span class="keyword">this</span>, y, x, ri](<a class="code hl_typedef" href="structtdm_1_1mat.html#ad991bf735aab5ffae2dc718771f9a83e">value_type</a>& value, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ci) {</div>
|
|
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> value = <a class="code hl_variable" href="structtdm_1_1mat.html#a0eb976bda4ac453b8ecf5d58f2cc8320">values</a>[y + ri][x + ci];</div>
|
|
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> });</div>
|
|
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> });</div>
|
|
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="keywordflow">return</span> ret;</div>
|
|
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> }</div>
|
|
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> </div>
|
|
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span>};</div>
|
|
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> </div>
|
|
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"><a class="line" href="namespacetdm.html#a96d97543e016a745e13fc5636da84e0f"> 275</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacetdm.html#a96d97543e016a745e13fc5636da84e0f">operator==</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& rhs) {</div>
|
|
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="keyword">using </span>row_type = <span class="keyword">typename</span> <a class="code hl_class" href="structtdm_1_1vec.html">mat<R, C, T>::row_type</a>;</div>
|
|
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <span class="keywordtype">bool</span> retval = <span class="keyword">true</span>;</div>
|
|
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> lhs.<a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([&rhs, &retval](<span class="keyword">const</span> row_type& row, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri) {</div>
|
|
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> retval = retval && (row == rhs[ri]);</div>
|
|
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> });</div>
|
|
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keywordflow">return</span> retval;</div>
|
|
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span>}</div>
|
|
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> </div>
|
|
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"><a class="line" href="namespacetdm.html#a7bf82ae9ab894985d26c1beb49aad3b7"> 285</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacetdm.html#a7bf82ae9ab894985d26c1beb49aad3b7">operator!=</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& rhs) {</div>
|
|
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keywordflow">return</span> !(lhs == rhs);</div>
|
|
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span>}</div>
|
|
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> </div>
|
|
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"><a class="line" href="namespacetdm.html#aebd74509bbae3af7401d982589abd9a1"> 290</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#aebd74509bbae3af7401d982589abd9a1">operator+</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& m) {</div>
|
|
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="keywordflow">return</span> m;</div>
|
|
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span>}</div>
|
|
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> </div>
|
|
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"><a class="line" href="namespacetdm.html#ac777140e095ad77e4731087a4bf25337"> 295</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#ac777140e095ad77e4731087a4bf25337">operator-</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& m) {</div>
|
|
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> ret{m};</div>
|
|
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> ret.negate();</div>
|
|
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="keywordflow">return</span> ret;</div>
|
|
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span>}</div>
|
|
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> </div>
|
|
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"><a class="line" href="namespacetdm.html#a7ae88b2db25fb34b53ee8e424e936544"> 302</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#aebd74509bbae3af7401d982589abd9a1">operator+</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& lhs, T rhs) {</div>
|
|
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>(lhs) += rhs;</div>
|
|
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span>}</div>
|
|
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> </div>
|
|
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"><a class="line" href="namespacetdm.html#ab14951bd069206c7125f6bb108adb2cd"> 307</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#aebd74509bbae3af7401d982589abd9a1">operator+</a>(T lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& rhs) {</div>
|
|
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>(lhs) += rhs;</div>
|
|
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span>}</div>
|
|
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> </div>
|
|
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"><a class="line" href="namespacetdm.html#ad380fbf2cb8f050c146754e560bf62a1"> 312</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#aebd74509bbae3af7401d982589abd9a1">operator+</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& rhs) {</div>
|
|
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>(lhs) += rhs;</div>
|
|
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span>}</div>
|
|
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> </div>
|
|
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"><a class="line" href="namespacetdm.html#a8cf9acaa8cc9c1f45fab75b61cc40758"> 317</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#ac777140e095ad77e4731087a4bf25337">operator-</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& lhs, T rhs) {</div>
|
|
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>(lhs) -= rhs;</div>
|
|
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span>}</div>
|
|
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> </div>
|
|
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"><a class="line" href="namespacetdm.html#a141a7a811d4aefe4a77c3a37bd6ea438"> 322</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#ac777140e095ad77e4731087a4bf25337">operator-</a>(T lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& rhs) {</div>
|
|
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>(lhs) -= rhs;</div>
|
|
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span>}</div>
|
|
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> </div>
|
|
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"><a class="line" href="namespacetdm.html#a1e507cadbc446bebf99e846304c1268d"> 327</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#ac777140e095ad77e4731087a4bf25337">operator-</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& rhs) {</div>
|
|
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>(lhs) -= rhs;</div>
|
|
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span>}</div>
|
|
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> </div>
|
|
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"><a class="line" href="namespacetdm.html#abc80b4060c9aabf8bf3a5958dea64b1c"> 332</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#abc80b4060c9aabf8bf3a5958dea64b1c">operator*</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& lhs, T rhs) {</div>
|
|
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>(lhs) *= rhs;</div>
|
|
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span>}</div>
|
|
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> </div>
|
|
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"><a class="line" href="namespacetdm.html#af05f7a33f9f4db9fb7b7d6ab37aabe89"> 337</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#abc80b4060c9aabf8bf3a5958dea64b1c">operator*</a>(T lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& rhs) {</div>
|
|
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>(rhs) *= lhs;</div>
|
|
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span>}</div>
|
|
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> </div>
|
|
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"><a class="line" href="namespacetdm.html#a08e49d8ff89d5f6181234465a4ddad90"> 342</a></span><span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code hl_class" href="structtdm_1_1vec.html">mat<R, C, T>::row_type</a> <a class="code hl_function" href="namespacetdm.html#abc80b4060c9aabf8bf3a5958dea64b1c">operator*</a>(<span class="keyword">const</span> <span class="keyword">typename</span> <a class="code hl_struct" href="structtdm_1_1vec.html">mat<R, C, T>::column_type</a>& lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& rhs) {</div>
|
|
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> <span class="keyword">using </span>row_type = <span class="keyword">typename</span> <a class="code hl_class" href="structtdm_1_1vec.html">mat<R, C, T>::row_type</a>;</div>
|
|
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> row_type ret;</div>
|
|
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> rhs.<a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([&ret, &lhs](<span class="keyword">const</span> row_type& row, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri) {</div>
|
|
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> ret += (row * row_type{lhs[ri]});</div>
|
|
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> });</div>
|
|
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> <span class="keywordflow">return</span> ret;</div>
|
|
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span>}</div>
|
|
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> </div>
|
|
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"><a class="line" href="namespacetdm.html#a6259ba09d35d37f4b2ab5896e9abcc30"> 352</a></span><span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code hl_struct" href="structtdm_1_1vec.html">mat<R, C, T>::column_type</a> <a class="code hl_function" href="namespacetdm.html#abc80b4060c9aabf8bf3a5958dea64b1c">operator*</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& lhs, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code hl_class" href="structtdm_1_1vec.html">mat<R, C, T>::row_type</a>& rhs) {</div>
|
|
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> <span class="keyword">using </span>column_type = <span class="keyword">typename</span> <a class="code hl_struct" href="structtdm_1_1vec.html">mat<R, C, T>::column_type</a>;</div>
|
|
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <span class="keyword">using </span>value_type = <span class="keyword">typename</span> column_type::value_type;</div>
|
|
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> column_type ret;</div>
|
|
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> rhs.<a class="code hl_function" href="structtdm_1_1vec.html#a127a38ee0747536a683201485e0d40c4">apply</a>([&ret, &lhs](value_type value, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ci) {</div>
|
|
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> ret += (lhs.<a class="code hl_function" href="structtdm_1_1mat.html#a41de3ceaa4bd5309b2432edea56a01ab">column</a>(ci) * column_type{value});</div>
|
|
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> });</div>
|
|
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> <span class="keywordflow">return</span> ret;</div>
|
|
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span>}</div>
|
|
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> </div>
|
|
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span><span class="keyword">template</span><dim_t R, dim_t S, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"><a class="line" href="namespacetdm.html#ae70dbbd886fa423ed9d6554069dd9d5e"> 363</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#abc80b4060c9aabf8bf3a5958dea64b1c">operator*</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, S, T></a>& lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<S, C, T></a>& rhs) {</div>
|
|
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> <span class="keyword">using </span>row_type = <span class="keyword">typename</span> <a class="code hl_class" href="structtdm_1_1vec.html">mat<R, C, T>::row_type</a>;</div>
|
|
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> ret;</div>
|
|
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> ret.<a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([&lhs, &rhs](row_type& row, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> ri) {</div>
|
|
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> row = (lhs[ri] * rhs);</div>
|
|
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> });</div>
|
|
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> <span class="keywordflow">return</span> ret;</div>
|
|
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span>}</div>
|
|
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> </div>
|
|
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"><a class="line" href="namespacetdm.html#ac00c97cdcd06c57c74cfc5a6121cef91"> 373</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#ac00c97cdcd06c57c74cfc5a6121cef91">operator/</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& lhs, T rhs) {</div>
|
|
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>(lhs) /= rhs;</div>
|
|
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span>}</div>
|
|
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> </div>
|
|
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"><a class="line" href="namespacetdm.html#a1d9fb0a814c5ba0b8dcd18367bbccdfa"> 378</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#ac00c97cdcd06c57c74cfc5a6121cef91">operator/</a>(T lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& rhs) {</div>
|
|
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="keyword">using </span>row_type = <span class="keyword">typename</span> <a class="code hl_class" href="structtdm_1_1vec.html">mat<R, C, T>::row_type</a>;</div>
|
|
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> tmp{rhs};</div>
|
|
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> tmp.<a class="code hl_function" href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">apply</a>([lhs](row_type& row, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> <span class="comment">/*unused*/</span>) {</div>
|
|
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> row = lhs / row;</div>
|
|
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> });</div>
|
|
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> <span class="keywordflow">return</span> tmp;</div>
|
|
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span>}</div>
|
|
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> </div>
|
|
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"><a class="line" href="namespacetdm.html#adf6e432142236cf00f3bd40de27d2b2c"> 388</a></span><span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code hl_class" href="structtdm_1_1vec.html">mat<R, C, T>::row_type</a> <a class="code hl_function" href="namespacetdm.html#ac00c97cdcd06c57c74cfc5a6121cef91">operator/</a>(<span class="keyword">const</span> <span class="keyword">typename</span> <a class="code hl_struct" href="structtdm_1_1vec.html">mat<R, C, T>::column_type</a>& lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& rhs) {</div>
|
|
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> <span class="keywordflow">return</span> (lhs * <a class="code hl_function" href="namespacetdm.html#af6249949ec4da22bf7b907f2751efcaa">inverse</a>(rhs));</div>
|
|
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span>}</div>
|
|
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> </div>
|
|
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"><a class="line" href="namespacetdm.html#a7c8ec05183092903f5e4a772cfabfcc8"> 393</a></span><span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code hl_struct" href="structtdm_1_1vec.html">mat<R, C, T>::column_type</a> <a class="code hl_function" href="namespacetdm.html#ac00c97cdcd06c57c74cfc5a6121cef91">operator/</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& lhs, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code hl_class" href="structtdm_1_1vec.html">mat<R, C, T>::row_type</a>& rhs) {</div>
|
|
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <span class="keywordflow">return</span> (<a class="code hl_function" href="namespacetdm.html#af6249949ec4da22bf7b907f2751efcaa">inverse</a>(lhs) * rhs);</div>
|
|
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span>}</div>
|
|
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> </div>
|
|
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span><span class="keyword">template</span><dim_t R, dim_t C, <span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"><a class="line" href="namespacetdm.html#a78719508d55676f81a2ab7a381636411"> 398</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a> <a class="code hl_function" href="namespacetdm.html#ac00c97cdcd06c57c74cfc5a6121cef91">operator/</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>& rhs) {</div>
|
|
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat<R, C, T></a>(lhs) /= rhs;</div>
|
|
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span>}</div>
|
|
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> </div>
|
|
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span>} <span class="comment">// namespace tdm</span></div>
|
|
<div class="ttc" id="aTypes_8h_html"><div class="ttname"><a href="Types_8h.html">Types.h</a></div></div>
|
|
<div class="ttc" id="aVec_8h_html"><div class="ttname"><a href="Vec_8h.html">Vec.h</a></div></div>
|
|
<div class="ttc" id="anamespacetdm_html"><div class="ttname"><a href="namespacetdm.html">tdm</a></div><div class="ttdef"><b>Definition:</b> Computations.h:19</div></div>
|
|
<div class="ttc" id="anamespacetdm_html_a644d3de5f1ca2eaa628196afcfbadef4"><div class="ttname"><a href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">tdm::dim_t</a></div><div class="ttdeci">std::size_t dim_t</div><div class="ttdef"><b>Definition:</b> Types.h:22</div></div>
|
|
<div class="ttc" id="anamespacetdm_html_a7bf82ae9ab894985d26c1beb49aad3b7"><div class="ttname"><a href="namespacetdm.html#a7bf82ae9ab894985d26c1beb49aad3b7">tdm::operator!=</a></div><div class="ttdeci">bool operator!=(const mat< R, C, T > &lhs, const mat< R, C, T > &rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:285</div></div>
|
|
<div class="ttc" id="anamespacetdm_html_a96d97543e016a745e13fc5636da84e0f"><div class="ttname"><a href="namespacetdm.html#a96d97543e016a745e13fc5636da84e0f">tdm::operator==</a></div><div class="ttdeci">bool operator==(const mat< R, C, T > &lhs, const mat< R, C, T > &rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:275</div></div>
|
|
<div class="ttc" id="anamespacetdm_html_abc80b4060c9aabf8bf3a5958dea64b1c"><div class="ttname"><a href="namespacetdm.html#abc80b4060c9aabf8bf3a5958dea64b1c">tdm::operator*</a></div><div class="ttdeci">mat< R, C, T > operator*(const mat< R, C, T > &lhs, T rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:332</div></div>
|
|
<div class="ttc" id="anamespacetdm_html_ac00c97cdcd06c57c74cfc5a6121cef91"><div class="ttname"><a href="namespacetdm.html#ac00c97cdcd06c57c74cfc5a6121cef91">tdm::operator/</a></div><div class="ttdeci">mat< R, C, T > operator/(const mat< R, C, T > &lhs, T rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:373</div></div>
|
|
<div class="ttc" id="anamespacetdm_html_ac777140e095ad77e4731087a4bf25337"><div class="ttname"><a href="namespacetdm.html#ac777140e095ad77e4731087a4bf25337">tdm::operator-</a></div><div class="ttdeci">mat< R, C, T > operator-(const mat< R, C, T > &m)</div><div class="ttdef"><b>Definition:</b> Mat.h:295</div></div>
|
|
<div class="ttc" id="anamespacetdm_html_ad5abf5602d97e3df89baa5700086e9cd"><div class="ttname"><a href="namespacetdm.html#ad5abf5602d97e3df89baa5700086e9cd">tdm::transpose</a></div><div class="ttdeci">mat< C, R, T > transpose(const mat< R, C, T > &m)</div><div class="ttdef"><b>Definition:</b> Computations.h:57</div></div>
|
|
<div class="ttc" id="anamespacetdm_html_aebd74509bbae3af7401d982589abd9a1"><div class="ttname"><a href="namespacetdm.html#aebd74509bbae3af7401d982589abd9a1">tdm::operator+</a></div><div class="ttdeci">mat< R, C, T > operator+(const mat< R, C, T > &m)</div><div class="ttdef"><b>Definition:</b> Mat.h:290</div></div>
|
|
<div class="ttc" id="anamespacetdm_html_af6249949ec4da22bf7b907f2751efcaa"><div class="ttname"><a href="namespacetdm.html#af6249949ec4da22bf7b907f2751efcaa">tdm::inverse</a></div><div class="ttdeci">mat< N, N, T > inverse(const mat< N, N, T > &m)</div><div class="ttdef"><b>Definition:</b> Computations.h:134</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html"><div class="ttname"><a href="structtdm_1_1mat.html">tdm::mat</a></div><div class="ttdef"><b>Definition:</b> Mat.h:17</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a022b835621316779fcb5f1655ac2b449"><div class="ttname"><a href="structtdm_1_1mat.html#a022b835621316779fcb5f1655ac2b449">tdm::mat::transpose</a></div><div class="ttdeci">std::enable_if< H==W, mat & >::type transpose()</div><div class="ttdef"><b>Definition:</b> Mat.h:236</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a0404b858cafe5d412467a41d169400dc"><div class="ttname"><a href="structtdm_1_1mat.html#a0404b858cafe5d412467a41d169400dc">tdm::mat::columns</a></div><div class="ttdeci">static constexpr dim_t columns()</div><div class="ttdef"><b>Definition:</b> Mat.h:26</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a08905db39e54a925f0326cbeed84066d"><div class="ttname"><a href="structtdm_1_1mat.html#a08905db39e54a925f0326cbeed84066d">tdm::mat::operator/=</a></div><div class="ttdeci">mat & operator/=(const mat< R, C, U > &rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:227</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a0ae74a3bef3a5c8f893921b4ff98a2ce"><div class="ttname"><a href="structtdm_1_1mat.html#a0ae74a3bef3a5c8f893921b4ff98a2ce">tdm::mat::apply</a></div><div class="ttdeci">const mat & apply(F func) const</div><div class="ttdef"><b>Definition:</b> Mat.h:148</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a0cd5a441ff1153499ddd51c0c9cc059c"><div class="ttname"><a href="structtdm_1_1mat.html#a0cd5a441ff1153499ddd51c0c9cc059c">tdm::mat::~mat</a></div><div class="ttdeci">~mat()=default</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a0d0a8e94bfb1833c426a11a43dcbe443"><div class="ttname"><a href="structtdm_1_1mat.html#a0d0a8e94bfb1833c426a11a43dcbe443">tdm::mat::operator/=</a></div><div class="ttdeci">mat & operator/=(U rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:220</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a0eb976bda4ac453b8ecf5d58f2cc8320"><div class="ttname"><a href="structtdm_1_1mat.html#a0eb976bda4ac453b8ecf5d58f2cc8320">tdm::mat::values</a></div><div class="ttdeci">row_type values[R]</div><div class="ttdef"><b>Definition:</b> Mat.h:31</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a11da46b865ad6c5876d68bcb3ec46724"><div class="ttname"><a href="structtdm_1_1mat.html#a11da46b865ad6c5876d68bcb3ec46724">tdm::mat::identity</a></div><div class="ttdeci">static std::enable_if< H==W, mat >::type identity()</div><div class="ttdef"><b>Definition:</b> Mat.h:113</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a12a6568e39d3bc62a47d97d928a676db"><div class="ttname"><a href="structtdm_1_1mat.html#a12a6568e39d3bc62a47d97d928a676db">tdm::mat::operator*=</a></div><div class="ttdeci">mat & operator*=(const mat< R, C, U > &rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:211</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a28676d29eff05941db41e19038d396b5"><div class="ttname"><a href="structtdm_1_1mat.html#a28676d29eff05941db41e19038d396b5">tdm::mat::operator[]</a></div><div class="ttdeci">row_type & operator[](dim_t index)</div><div class="ttdef"><b>Definition:</b> Mat.h:117</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a29fe6f1d8441e382c03e1dd0bde72f92"><div class="ttname"><a href="structtdm_1_1mat.html#a29fe6f1d8441e382c03e1dd0bde72f92">tdm::mat::operator-=</a></div><div class="ttdeci">mat & operator-=(const mat &rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:199</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a2b16a5b3b1fbe6301ade535514ae3162"><div class="ttname"><a href="structtdm_1_1mat.html#a2b16a5b3b1fbe6301ade535514ae3162">tdm::mat::operator-=</a></div><div class="ttdeci">mat & operator-=(U rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:186</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a3a5734f3a110db2834b50a6d89da270d"><div class="ttname"><a href="structtdm_1_1mat.html#a3a5734f3a110db2834b50a6d89da270d">tdm::mat::operator+=</a></div><div class="ttdeci">mat & operator+=(const mat &rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:181</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a3ad52e8e3b78322e23e3b730a63e3195"><div class="ttname"><a href="structtdm_1_1mat.html#a3ad52e8e3b78322e23e3b730a63e3195">tdm::mat::operator()</a></div><div class="ttdeci">T & operator()(dim_t rowIndex, dim_t colIndex)</div><div class="ttdef"><b>Definition:</b> Mat.h:131</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a41de3ceaa4bd5309b2432edea56a01ab"><div class="ttname"><a href="structtdm_1_1mat.html#a41de3ceaa4bd5309b2432edea56a01ab">tdm::mat::column</a></div><div class="ttdeci">column_type column(dim_t index) const</div><div class="ttdef"><b>Definition:</b> Mat.h:251</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a50a343afe2e9dfaf23c684926feecd3a"><div class="ttname"><a href="structtdm_1_1mat.html#a50a343afe2e9dfaf23c684926feecd3a">tdm::mat::mat</a></div><div class="ttdeci">mat(const mat< R, C, U > &rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:63</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a52d65787641686be0065fdde669ba29f"><div class="ttname"><a href="structtdm_1_1mat.html#a52d65787641686be0065fdde669ba29f">tdm::mat::operator()</a></div><div class="ttdeci">const T & operator()(dim_t rowIndex, dim_t colIndex) const</div><div class="ttdef"><b>Definition:</b> Mat.h:135</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a55e1a25c0b1a36aad0c1502af4cb92f1"><div class="ttname"><a href="structtdm_1_1mat.html#a55e1a25c0b1a36aad0c1502af4cb92f1">tdm::mat::mat</a></div><div class="ttdeci">mat(const mat &)=default</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a56a703b4e3136f62ec910f2edb532a87"><div class="ttname"><a href="structtdm_1_1mat.html#a56a703b4e3136f62ec910f2edb532a87">tdm::mat::diagonal</a></div><div class="ttdeci">static std::enable_if< H==W, mat >::type diagonal(U scalar)</div><div class="ttdef"><b>Definition:</b> Mat.h:90</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a56d8473ad2e6e10d5d105cd098208741"><div class="ttname"><a href="structtdm_1_1mat.html#a56d8473ad2e6e10d5d105cd098208741">tdm::mat::row</a></div><div class="ttdeci">row_type row(dim_t index) const</div><div class="ttdef"><b>Definition:</b> Mat.h:247</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a5b4b59b8794a8e4223119c64c47252dc"><div class="ttname"><a href="structtdm_1_1mat.html#a5b4b59b8794a8e4223119c64c47252dc">tdm::mat::apply</a></div><div class="ttdeci">mat & apply(F func)</div><div class="ttdef"><b>Definition:</b> Mat.h:140</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a5fc80cab422df88dcdf40dd70658c1c2"><div class="ttname"><a href="structtdm_1_1mat.html#a5fc80cab422df88dcdf40dd70658c1c2">tdm::mat::operator--</a></div><div class="ttdeci">mat & operator--()</div><div class="ttdef"><b>Definition:</b> Mat.h:161</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a6f2ad1323a78efde68a7339c370c92b5"><div class="ttname"><a href="structtdm_1_1mat.html#a6f2ad1323a78efde68a7339c370c92b5">tdm::mat::operator=</a></div><div class="ttdeci">mat & operator=(const mat &)=default</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a742fc9c84bf1d6bbb9a5cb29eb959f73"><div class="ttname"><a href="structtdm_1_1mat.html#a742fc9c84bf1d6bbb9a5cb29eb959f73">tdm::mat::diagonal</a></div><div class="ttdeci">static std::enable_if<(H==W)&&(sizeof...(Us)==H), mat >::type diagonal(Us... scalars)</div><div class="ttdef"><b>Definition:</b> Mat.h:108</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a77187b377ef8a045f7b64bf08bad23e7"><div class="ttname"><a href="structtdm_1_1mat.html#a77187b377ef8a045f7b64bf08bad23e7">tdm::mat::mat</a></div><div class="ttdeci">mat()</div><div class="ttdef"><b>Definition:</b> Mat.h:34</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a814d14a9967da1d408a30f2bb458ab70"><div class="ttname"><a href="structtdm_1_1mat.html#a814d14a9967da1d408a30f2bb458ab70">tdm::mat::mat</a></div><div class="ttdeci">mat(const vec< C, Us > &... vs)</div><div class="ttdef"><b>Definition:</b> Mat.h:75</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a87b2bc4f7e6203582d4532b53cbbe4d3"><div class="ttname"><a href="structtdm_1_1mat.html#a87b2bc4f7e6203582d4532b53cbbe4d3">tdm::mat::operator+=</a></div><div class="ttdeci">mat & operator+=(U rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:168</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a888169ad4c2153fb163111592feaf04b"><div class="ttname"><a href="structtdm_1_1mat.html#a888169ad4c2153fb163111592feaf04b">tdm::mat::mat</a></div><div class="ttdeci">mat(Us... scalars)</div><div class="ttdef"><b>Definition:</b> Mat.h:53</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a8f109a327ecbc86af9f06a0835b8dbf6"><div class="ttname"><a href="structtdm_1_1mat.html#a8f109a327ecbc86af9f06a0835b8dbf6">tdm::mat::operator*=</a></div><div class="ttdeci">mat & operator*=(const mat &rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:215</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a9c38f0391111f7f3abdb1515f4cada87"><div class="ttname"><a href="structtdm_1_1mat.html#a9c38f0391111f7f3abdb1515f4cada87">tdm::mat::operator=</a></div><div class="ttdeci">mat & operator=(const mat< R, C, U > &rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:70</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_a9f1b734dca470f22bffdcaf838c3b711"><div class="ttname"><a href="structtdm_1_1mat.html#a9f1b734dca470f22bffdcaf838c3b711">tdm::mat::fromColumns</a></div><div class="ttdeci">static mat fromColumns(const vec< R, Us > &... vs)</div><div class="ttdef"><b>Definition:</b> Mat.h:84</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_aa145e30a3c416cfaa04181a28e69eeed"><div class="ttname"><a href="structtdm_1_1mat.html#aa145e30a3c416cfaa04181a28e69eeed">tdm::mat::negate</a></div><div class="ttdeci">mat & negate()</div><div class="ttdef"><b>Definition:</b> Mat.h:240</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_aa4ba1f2542fca6ee8f8da2e877a9ce15"><div class="ttname"><a href="structtdm_1_1mat.html#aa4ba1f2542fca6ee8f8da2e877a9ce15">tdm::mat::operator=</a></div><div class="ttdeci">mat & operator=(mat &&)=default</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_aab2f4f9b1cbcce8659554685b88e0bb6"><div class="ttname"><a href="structtdm_1_1mat.html#aab2f4f9b1cbcce8659554685b88e0bb6">tdm::mat::operator[]</a></div><div class="ttdeci">const row_type & operator[](dim_t index) const</div><div class="ttdef"><b>Definition:</b> Mat.h:124</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_aab6b43639f0fb0f1b309920d809e04d3"><div class="ttname"><a href="structtdm_1_1mat.html#aab6b43639f0fb0f1b309920d809e04d3">tdm::mat::diagonal</a></div><div class="ttdeci">static std::enable_if< H==W, mat >::type diagonal(const vec< W, U > &scalars)</div><div class="ttdef"><b>Definition:</b> Mat.h:99</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_aae935981e3ab781b1ef0e89161def5c3"><div class="ttname"><a href="structtdm_1_1mat.html#aae935981e3ab781b1ef0e89161def5c3">tdm::mat::operator+=</a></div><div class="ttdeci">mat & operator+=(const mat< R, C, U > &rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:175</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_abc400ed8e25714b79c7308f89da1d240"><div class="ttname"><a href="structtdm_1_1mat.html#abc400ed8e25714b79c7308f89da1d240">tdm::mat::operator/=</a></div><div class="ttdeci">mat & operator/=(const mat &rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:231</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_acd939d606842ccae93ea15a7233b2984"><div class="ttname"><a href="structtdm_1_1mat.html#acd939d606842ccae93ea15a7233b2984">tdm::mat::mat</a></div><div class="ttdeci">mat(mat &&)=default</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_ad4b61cae9009d2f75f5bbbede7fe40ec"><div class="ttname"><a href="structtdm_1_1mat.html#ad4b61cae9009d2f75f5bbbede7fe40ec">tdm::mat::rows</a></div><div class="ttdeci">static constexpr dim_t rows()</div><div class="ttdef"><b>Definition:</b> Mat.h:22</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_ad991bf735aab5ffae2dc718771f9a83e"><div class="ttname"><a href="structtdm_1_1mat.html#ad991bf735aab5ffae2dc718771f9a83e">tdm::mat::value_type</a></div><div class="ttdeci">T value_type</div><div class="ttdef"><b>Definition:</b> Mat.h:18</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_adffb14160b228f2891b0e8b35f9159b9"><div class="ttname"><a href="structtdm_1_1mat.html#adffb14160b228f2891b0e8b35f9159b9">tdm::mat::mat</a></div><div class="ttdeci">mat(U scalar)</div><div class="ttdef"><b>Definition:</b> Mat.h:46</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_ae636128bf5fe51d09696a6100d61add8"><div class="ttname"><a href="structtdm_1_1mat.html#ae636128bf5fe51d09696a6100d61add8">tdm::mat::operator-=</a></div><div class="ttdeci">mat & operator-=(const mat< R, C, U > &rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:193</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_ae922d5cf365cc0e8f4e6cca0b1d81135"><div class="ttname"><a href="structtdm_1_1mat.html#ae922d5cf365cc0e8f4e6cca0b1d81135">tdm::mat::submat</a></div><div class="ttdeci">std::enable_if<(H >1 &&W >1 &&H<=R &&W<=C), mat< H, W, T > >::type submat(dim_t y, dim_t x) const</div><div class="ttdef"><b>Definition:</b> Mat.h:260</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_aec3c26701f100034f360ed7e3362c7fb"><div class="ttname"><a href="structtdm_1_1mat.html#aec3c26701f100034f360ed7e3362c7fb">tdm::mat::operator++</a></div><div class="ttdeci">mat & operator++()</div><div class="ttdef"><b>Definition:</b> Mat.h:155</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_af211e4e27ae53a43d9db60c0af57b0e7"><div class="ttname"><a href="structtdm_1_1mat.html#af211e4e27ae53a43d9db60c0af57b0e7">tdm::mat::fromRows</a></div><div class="ttdeci">static mat fromRows(const vec< C, Us > &... vs)</div><div class="ttdef"><b>Definition:</b> Mat.h:79</div></div>
|
|
<div class="ttc" id="astructtdm_1_1mat_html_afcb7677682ab2012eabadc12eff42630"><div class="ttname"><a href="structtdm_1_1mat.html#afcb7677682ab2012eabadc12eff42630">tdm::mat::operator*=</a></div><div class="ttdeci">mat & operator*=(U rhs)</div><div class="ttdef"><b>Definition:</b> Mat.h:204</div></div>
|
|
<div class="ttc" id="astructtdm_1_1vec_html"><div class="ttname"><a href="structtdm_1_1vec.html">tdm::vec< C, value_type ></a></div></div>
|
|
<div class="ttc" id="astructtdm_1_1vec_html_a0124146b684564619f7af68b70f982ec"><div class="ttname"><a href="structtdm_1_1vec.html#a0124146b684564619f7af68b70f982ec">tdm::vec::dimensions</a></div><div class="ttdeci">static constexpr dim_t dimensions()</div><div class="ttdef"><b>Definition:</b> Vec.h:13</div></div>
|
|
<div class="ttc" id="astructtdm_1_1vec_html_a127a38ee0747536a683201485e0d40c4"><div class="ttname"><a href="structtdm_1_1vec.html#a127a38ee0747536a683201485e0d40c4">tdm::vec::apply</a></div><div class="ttdeci">vec & apply(F func)</div><div class="ttdef"><b>Definition:</b> Vec.h:68</div></div>
|
|
<div class="ttc" id="astructtdm_1_1vec_html_a3f3ea73401edb017414292df5c64d4a8"><div class="ttname"><a href="structtdm_1_1vec.html#a3f3ea73401edb017414292df5c64d4a8">tdm::vec::negate</a></div><div class="ttdeci">vec & negate()</div><div class="ttdef"><b>Definition:</b> Vec.h:178</div></div>
|
|
</div><!-- fragment --></div><!-- contents -->
|
|
<!-- start footer part -->
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
|
</small></address>
|
|
</body>
|
|
</html>
|