<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>CPPLapack: zgbmatrix-zgbmatrix.hpp Source File</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">CPPLapack
   
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.6.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Friends</a></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_a37d0dd275f7ec49ee26f1d33d1059f5.html">include</a>      </li>
      <li class="navelem"><a class="el" href="dir_ee42cf41084fac920343acf1ea5fbb74.html">zgbmatrix-</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="headertitle">
<div class="title">zgbmatrix-zgbmatrix.hpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="zgbmatrix-zgbmatrix_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//=============================================================================</span><span class="comment"></span>
<a name="l00002"></a>00002 <span class="comment">/*! zgbmatrix=zgbmatrix operator\n</span>
<a name="l00003"></a>00003 <span class="comment">  The left side matrix is overwritten thoroughly including band width. */</span>
<a name="l00004"></a><a class="code" href="classzgbmatrix.html#aed050271825123f54f945c89320ec144">00004</a> <span class="keyword">inline</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; <a class="code" href="classzgbmatrix.html#aed050271825123f54f945c89320ec144">zgbmatrix::operator=</a>(<span class="keyword">const</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; mat)
<a name="l00005"></a>00005 {VERBOSE_REPORT;
<a name="l00006"></a>00006   <span class="keywordflow">if</span>(<a class="code" href="classzgbmatrix.html#af18c28d31a3921916117e7bbef4d720d" title="1D array to store matrix data">array</a>!=mat.<a class="code" href="classzgbmatrix.html#af18c28d31a3921916117e7bbef4d720d" title="1D array to store matrix data">array</a>){ <span class="comment">// if it is NOT self substitution</span>
<a name="l00007"></a>00007     <a class="code" href="classzgbmatrix.html#a55ad5b7f1860544fac0f0fc8bf3fec06">copy</a>(mat);
<a name="l00008"></a>00008   }
<a name="l00009"></a>00009   <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00010"></a>00010 }
<a name="l00011"></a>00011 <span class="comment"></span>
<a name="l00012"></a>00012 <span class="comment">///////////////////////////////////////////////////////////////////////////////</span>
<a name="l00013"></a>00013 <span class="comment">///////////////////////////////////////////////////////////////////////////////</span>
<a name="l00014"></a>00014 <span class="comment">///////////////////////////////////////////////////////////////////////////////</span>
<a name="l00015"></a>00015 <span class="comment"></span>
<a name="l00016"></a>00016 <span class="comment">//=============================================================================</span><span class="comment"></span>
<a name="l00017"></a>00017 <span class="comment">/*! zgbmatrix+=zgbmatrix operator\n</span>
<a name="l00018"></a>00018 <span class="comment">  If the band width of the left side matrix is narrower than the right side matrix, the band width of the left side matrix become thicker as same as the right side matrix. */</span>
<a name="l00019"></a><a class="code" href="classzgbmatrix.html#a7c738bcd12016361305cf557a74ef7cd">00019</a> <span class="keyword">inline</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; <a class="code" href="classzgbmatrix.html#a7c738bcd12016361305cf557a74ef7cd">zgbmatrix::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; mat)
<a name="l00020"></a>00020 {VERBOSE_REPORT;
<a name="l00021"></a>00021 <span class="preprocessor">#ifdef  CPPL_DEBUG</span>
<a name="l00022"></a>00022 <span class="preprocessor"></span>  <span class="keywordflow">if</span>(<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>!=mat.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> || <a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>!=mat.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>){
<a name="l00023"></a>00023     ERROR_REPORT;
<a name="l00024"></a>00024     std::cerr &lt;&lt; <span class="stringliteral">&quot;These two matrises can not make a summation.&quot;</span> &lt;&lt; std::endl
<a name="l00025"></a>00025               &lt;&lt; <span class="stringliteral">&quot;Your input was&quot;</span> &lt;&lt; <span class="stringliteral">&quot;(&quot;</span> &lt;&lt; <a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a> &lt;&lt;<span class="stringliteral">&quot;x&quot;</span>&lt;&lt; <a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> &lt;&lt;<span class="stringliteral">&quot;,&quot;</span>&lt;&lt; <a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a> &lt;&lt;<span class="stringliteral">&quot;:&quot;</span>&lt;&lt; <a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a> &lt;&lt; <span class="stringliteral">&quot;) &quot;</span>&lt;&lt; <span class="stringliteral">&quot;+=&quot;</span> &lt;&lt; <span class="stringliteral">&quot;(&quot;</span>&lt;&lt; mat.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a> &lt;&lt;<span class="stringliteral">&quot;x&quot;</span>&lt;&lt; mat.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> &lt;&lt;<span class="stringliteral">&quot;,&quot;</span>&lt;&lt; mat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a> &lt;&lt;<span class="stringliteral">&quot;:&quot;</span>&lt;&lt; mat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a> &lt;&lt;<span class="stringliteral">&quot;) &quot;</span> &lt;&lt; std::endl;
<a name="l00026"></a>00026     exit(1);
<a name="l00027"></a>00027   }
<a name="l00028"></a>00028 <span class="preprocessor">#endif//CPPL_DEBUG</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span>  
<a name="l00030"></a>00030   <span class="keywordflow">if</span>(<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>&gt;=mat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a> &amp;&amp; <a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>&gt;=mat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>){
<a name="l00031"></a>00031     <span class="keywordflow">for</span>(<span class="keywordtype">long</span> <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>=0; <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>&lt;<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>; <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>++){
<a name="l00032"></a>00032       <span class="keywordflow">for</span>(<span class="keywordtype">long</span> j=std::max(<span class="keywordtype">long</span>(0),<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>-mat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>); j&lt;std::min(<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>+mat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1); j++){
<a name="l00033"></a>00033         <a class="code" href="classzgbmatrix.html#aef21741fcfe610ecc9ef5a2d42c49d81">operator()</a>(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j)+=mat(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j);
<a name="l00034"></a>00034       }
<a name="l00035"></a>00035     }
<a name="l00036"></a>00036     
<a name="l00037"></a>00037     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00038"></a>00038   }
<a name="l00039"></a>00039   
<a name="l00040"></a>00040   <span class="keywordflow">else</span>{
<a name="l00041"></a>00041     <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a> newmat(<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>,<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,std::max(<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>,mat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>),std::max(<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>,mat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>));
<a name="l00042"></a>00042     newmat.<a class="code" href="classzgbmatrix.html#afdde0177424c3b76a9f7f81381b1149d">zero</a>();
<a name="l00043"></a>00043     <span class="keywordflow">for</span>(<span class="keywordtype">long</span> <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>=0; <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>&lt;<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>; <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>++){
<a name="l00044"></a>00044       <span class="keywordflow">for</span>(<span class="keywordtype">long</span> j=std::max(<span class="keywordtype">long</span>(0),<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>-<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>); j&lt;std::min(<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>+<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1); j++){
<a name="l00045"></a>00045         newmat(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j)+=<a class="code" href="classzgbmatrix.html#aef21741fcfe610ecc9ef5a2d42c49d81">operator()</a>(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j);
<a name="l00046"></a>00046       }
<a name="l00047"></a>00047       <span class="keywordflow">for</span>(<span class="keywordtype">long</span> j=std::max(<span class="keywordtype">long</span>(0),<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>-mat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>); j&lt;std::min(mat.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>+mat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1); j++){
<a name="l00048"></a>00048         newmat(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j)+=mat(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j);
<a name="l00049"></a>00049       }
<a name="l00050"></a>00050     }
<a name="l00051"></a>00051     
<a name="l00052"></a>00052     <a class="code" href="classzgbmatrix.html#a48d8d309d21753338464e9579598beea">swap</a>(*<span class="keyword">this</span>,newmat);
<a name="l00053"></a>00053     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00054"></a>00054   }
<a name="l00055"></a>00055 }
<a name="l00056"></a>00056 
<a name="l00057"></a>00057 <span class="comment">//=============================================================================</span><span class="comment"></span>
<a name="l00058"></a>00058 <span class="comment">/*! zgbmatrix-=zgbmatrix operator\n</span>
<a name="l00059"></a>00059 <span class="comment">  If the band width of the left side matrix is narrower than the right side matrix, the band width of the left side matrix become thicker as same as the right side matrix. */</span>
<a name="l00060"></a><a class="code" href="classzgbmatrix.html#a1c4da876a9e92200f58630e5c5764337">00060</a> <span class="keyword">inline</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; <a class="code" href="classzgbmatrix.html#a1c4da876a9e92200f58630e5c5764337">zgbmatrix::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; mat)
<a name="l00061"></a>00061 {VERBOSE_REPORT;
<a name="l00062"></a>00062 <span class="preprocessor">#ifdef  CPPL_DEBUG</span>
<a name="l00063"></a>00063 <span class="preprocessor"></span>  <span class="keywordflow">if</span>(<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>!=mat.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> || <a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>!=mat.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>){
<a name="l00064"></a>00064     ERROR_REPORT;
<a name="l00065"></a>00065     std::cerr &lt;&lt; <span class="stringliteral">&quot;These two matrises can not make a subtraction.&quot;</span> &lt;&lt; std::endl
<a name="l00066"></a>00066               &lt;&lt; <span class="stringliteral">&quot;Your input was&quot;</span> &lt;&lt; <span class="stringliteral">&quot;(&quot;</span> &lt;&lt; <a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a> &lt;&lt;<span class="stringliteral">&quot;x&quot;</span>&lt;&lt; <a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> &lt;&lt;<span class="stringliteral">&quot;,&quot;</span>&lt;&lt; <a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a> &lt;&lt;<span class="stringliteral">&quot;:&quot;</span>&lt;&lt; <a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a> &lt;&lt; <span class="stringliteral">&quot;) &quot;</span>&lt;&lt; <span class="stringliteral">&quot;-=&quot;</span> &lt;&lt; <span class="stringliteral">&quot;(&quot;</span>&lt;&lt; mat.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a> &lt;&lt;<span class="stringliteral">&quot;x&quot;</span>&lt;&lt; mat.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> &lt;&lt;<span class="stringliteral">&quot;,&quot;</span>&lt;&lt; mat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a> &lt;&lt;<span class="stringliteral">&quot;:&quot;</span>&lt;&lt; mat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a> &lt;&lt;<span class="stringliteral">&quot;) &quot;</span> &lt;&lt; std::endl;
<a name="l00067"></a>00067     exit(1);
<a name="l00068"></a>00068   }
<a name="l00069"></a>00069 <span class="preprocessor">#endif//CPPL_DEBUG</span>
<a name="l00070"></a>00070 <span class="preprocessor"></span>  
<a name="l00071"></a>00071   <span class="keywordflow">if</span>(<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>&gt;=mat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a> &amp;&amp; <a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>&gt;=mat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>){
<a name="l00072"></a>00072     <span class="keywordflow">for</span>(<span class="keywordtype">long</span> <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>=0; <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>&lt;<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>; <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>++){
<a name="l00073"></a>00073       <span class="keywordflow">for</span>(<span class="keywordtype">long</span> j=std::max(<span class="keywordtype">long</span>(0),<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>-mat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>); j&lt;std::min(<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>+mat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1); j++){
<a name="l00074"></a>00074         <a class="code" href="classzgbmatrix.html#aef21741fcfe610ecc9ef5a2d42c49d81">operator()</a>(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j)-=mat(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j);
<a name="l00075"></a>00075       }
<a name="l00076"></a>00076     }
<a name="l00077"></a>00077     
<a name="l00078"></a>00078     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00079"></a>00079   }
<a name="l00080"></a>00080   
<a name="l00081"></a>00081   <span class="keywordflow">else</span>{
<a name="l00082"></a>00082     <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a> newmat(<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>,<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,std::max(<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>,mat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>),std::max(<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>,mat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>));
<a name="l00083"></a>00083     newmat.<a class="code" href="classzgbmatrix.html#afdde0177424c3b76a9f7f81381b1149d">zero</a>();
<a name="l00084"></a>00084     <span class="keywordflow">for</span>(<span class="keywordtype">long</span> <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>=0; <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>&lt;<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>; <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>++){
<a name="l00085"></a>00085       <span class="keywordflow">for</span>(<span class="keywordtype">long</span> j=std::max(<span class="keywordtype">long</span>(0),<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>-<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>); j&lt;std::min(<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>+<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1); j++){
<a name="l00086"></a>00086         newmat(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j)+=<a class="code" href="classzgbmatrix.html#aef21741fcfe610ecc9ef5a2d42c49d81">operator()</a>(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j);
<a name="l00087"></a>00087       }
<a name="l00088"></a>00088       <span class="keywordflow">for</span>(<span class="keywordtype">long</span> j=std::max(<span class="keywordtype">long</span>(0),<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>-mat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>); j&lt;std::min(mat.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>+mat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1); j++){
<a name="l00089"></a>00089         newmat(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j)-=mat(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j);
<a name="l00090"></a>00090       }
<a name="l00091"></a>00091     }
<a name="l00092"></a>00092     
<a name="l00093"></a>00093     <a class="code" href="classzgbmatrix.html#a48d8d309d21753338464e9579598beea">swap</a>(*<span class="keyword">this</span>,newmat);
<a name="l00094"></a>00094     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00095"></a>00095   }
<a name="l00096"></a>00096 }
<a name="l00097"></a>00097 
<a name="l00098"></a>00098 <span class="comment">//=============================================================================</span><span class="comment"></span>
<a name="l00099"></a>00099 <span class="comment">/*! zgbmatrix*=zgbmatrix operator */</span>
<a name="l00100"></a><a class="code" href="classzgbmatrix.html#a453373517a769483db84f2e2d238fca0">00100</a> <span class="keyword">inline</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; <a class="code" href="classzgbmatrix.html#a453373517a769483db84f2e2d238fca0">zgbmatrix::operator*=</a>(<span class="keyword">const</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; mat)
<a name="l00101"></a>00101 {VERBOSE_REPORT;
<a name="l00102"></a>00102 <span class="preprocessor">#ifdef  CPPL_DEBUG</span>
<a name="l00103"></a>00103 <span class="preprocessor"></span>  <span class="keywordflow">if</span>(<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>!=mat.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>){
<a name="l00104"></a>00104     ERROR_REPORT;
<a name="l00105"></a>00105     std::cerr &lt;&lt; <span class="stringliteral">&quot;These two matrises can not make a product.&quot;</span> &lt;&lt; std::endl
<a name="l00106"></a>00106               &lt;&lt; <span class="stringliteral">&quot;Your input was (&quot;</span> &lt;&lt; <a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a> &lt;&lt; <span class="stringliteral">&quot;x&quot;</span> &lt;&lt; <a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> &lt;&lt; <span class="stringliteral">&quot;) * (&quot;</span> &lt;&lt; mat.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a> &lt;&lt; <span class="stringliteral">&quot;x&quot;</span> &lt;&lt; mat.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> &lt;&lt; <span class="stringliteral">&quot;).&quot;</span> &lt;&lt; std::endl;
<a name="l00107"></a>00107     exit(1);
<a name="l00108"></a>00108   }
<a name="l00109"></a>00109 <span class="preprocessor">#endif//CPPL_DEBUG</span>
<a name="l00110"></a>00110 <span class="preprocessor"></span>  
<a name="l00111"></a>00111   <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a> newmat( <a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>, mat.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>, std::min(<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>+mat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>, <a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>-1), std::min(<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+mat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>, mat.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>-1) );
<a name="l00112"></a>00112   newmat.<a class="code" href="classzgbmatrix.html#afdde0177424c3b76a9f7f81381b1149d">zero</a>();
<a name="l00113"></a>00113   
<a name="l00114"></a>00114   <span class="keywordflow">for</span>(<span class="keywordtype">long</span> <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>=0; <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>&lt;newmat.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>; <a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>++){
<a name="l00115"></a>00115     <span class="keywordflow">for</span>(<span class="keywordtype">long</span> j=std::max(<span class="keywordtype">long</span>(0),<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>-newmat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>); j&lt;std::min(newmat.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>+newmat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1); j++){
<a name="l00116"></a>00116       <span class="keywordflow">for</span>(<span class="keywordtype">long</span> k=std::max( std::max(<span class="keywordtype">long</span>(0),<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>-<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>), std::max(<span class="keywordtype">long</span>(0),j-mat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>) );
<a name="l00117"></a>00117           k&lt; std::min( std::min(<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>+<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1), std::min(mat.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>,j+mat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>+1) ); k++){
<a name="l00118"></a>00118         newmat(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,j)+= <a class="code" href="classzgbmatrix.html#aef21741fcfe610ecc9ef5a2d42c49d81">operator()</a>(<a class="code" href="classzgbmatrix.html#af773325bd3c3bff704ab00a32fff027e">i</a>,k)*mat(k,j);
<a name="l00119"></a>00119       }
<a name="l00120"></a>00120     }
<a name="l00121"></a>00121   }
<a name="l00122"></a>00122   
<a name="l00123"></a>00123   <a class="code" href="classzgbmatrix.html#a48d8d309d21753338464e9579598beea">swap</a>(*<span class="keyword">this</span>,newmat);
<a name="l00124"></a>00124   <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00125"></a>00125 }
<a name="l00126"></a>00126 <span class="comment"></span>
<a name="l00127"></a>00127 <span class="comment">///////////////////////////////////////////////////////////////////////////////</span>
<a name="l00128"></a>00128 <span class="comment">///////////////////////////////////////////////////////////////////////////////</span>
<a name="l00129"></a>00129 <span class="comment">///////////////////////////////////////////////////////////////////////////////</span>
<a name="l00130"></a>00130 <span class="comment"></span>
<a name="l00131"></a>00131 <span class="comment">//=============================================================================</span><span class="comment"></span>
<a name="l00132"></a>00132 <span class="comment">/*! zgbmatrix+zgbmatrix operator */</span>
<a name="l00133"></a><a class="code" href="zgbmatrix-zgbmatrix_8hpp.html#a05a785c84664f2b15bd43f6af76e86f1">00133</a> <span class="keyword">inline</span> <a class="code" href="class__zgbmatrix.html" title="(DO NOT USE) Smart-temporary Complex Double-precision General Band Matrix Class">_zgbmatrix</a> <a class="code" href="__dcovector-__dcovector_8hpp.html#a5399e73542e1f1e50c06268e87c02381">operator+</a>(<span class="keyword">const</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; matA, <span class="keyword">const</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; matB)
<a name="l00134"></a>00134 {VERBOSE_REPORT;
<a name="l00135"></a>00135 <span class="preprocessor">#ifdef  CPPL_DEBUG</span>
<a name="l00136"></a>00136 <span class="preprocessor"></span>  <span class="keywordflow">if</span>(matA.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>!=matB.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> || matA.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>!=matB.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>){
<a name="l00137"></a>00137     ERROR_REPORT;
<a name="l00138"></a>00138     std::cerr &lt;&lt; <span class="stringliteral">&quot;These two matrises can not make a summation.&quot;</span> &lt;&lt; std::endl
<a name="l00139"></a>00139               &lt;&lt; <span class="stringliteral">&quot;Your input was (&quot;</span> &lt;&lt; matA.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a> &lt;&lt; <span class="stringliteral">&quot;x&quot;</span> &lt;&lt; matA.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> &lt;&lt; <span class="stringliteral">&quot;) + (&quot;</span> &lt;&lt; matB.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a> &lt;&lt; <span class="stringliteral">&quot;x&quot;</span> &lt;&lt; matB.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> &lt;&lt; <span class="stringliteral">&quot;).&quot;</span> &lt;&lt; std::endl;
<a name="l00140"></a>00140     exit(1);
<a name="l00141"></a>00141   }
<a name="l00142"></a>00142 <span class="preprocessor">#endif//CPPL_DEBUG</span>
<a name="l00143"></a>00143 <span class="preprocessor"></span>  
<a name="l00144"></a>00144   <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a> newmat(matA.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>,matA.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,std::max(matA.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>,matB.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>),std::max(matA.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>,matB.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>));
<a name="l00145"></a>00145   newmat.<a class="code" href="classzgbmatrix.html#afdde0177424c3b76a9f7f81381b1149d">zero</a>();
<a name="l00146"></a>00146   
<a name="l00147"></a>00147   <span class="keywordflow">for</span>(<span class="keywordtype">long</span> <a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>=0; <a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>&lt;matA.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>; <a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>++){
<a name="l00148"></a>00148     <span class="keywordflow">for</span>(<span class="keywordtype">long</span> j=std::max(<span class="keywordtype">long</span>(0),<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>-matA.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>); j&lt;std::min(matA.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>+matA.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1); j++){
<a name="l00149"></a>00149       newmat(<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>,j)+=matA(<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>,j);
<a name="l00150"></a>00150     }
<a name="l00151"></a>00151     <span class="keywordflow">for</span>(<span class="keywordtype">long</span> j=std::max(<span class="keywordtype">long</span>(0),<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>-matB.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>); j&lt;std::min(matB.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>+matB.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1); j++){
<a name="l00152"></a>00152       newmat(<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>,j)+=matB(<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>,j);
<a name="l00153"></a>00153     }
<a name="l00154"></a>00154   }
<a name="l00155"></a>00155   
<a name="l00156"></a>00156   <span class="keywordflow">return</span> <a class="code" href="dcovector-misc_8hpp.html#a297beda6502b0d92c99576d2fb9548cb">_</a>(newmat);
<a name="l00157"></a>00157 }
<a name="l00158"></a>00158 
<a name="l00159"></a>00159 <span class="comment">//=============================================================================</span><span class="comment"></span>
<a name="l00160"></a>00160 <span class="comment">/*! zgbmatrix-zgbmatrix operator */</span>
<a name="l00161"></a><a class="code" href="zgbmatrix-zgbmatrix_8hpp.html#a1dfbbd649c4d18847b776de54bda4c9b">00161</a> <span class="keyword">inline</span> <a class="code" href="class__zgbmatrix.html" title="(DO NOT USE) Smart-temporary Complex Double-precision General Band Matrix Class">_zgbmatrix</a> <a class="code" href="__dcovector-__dcovector_8hpp.html#a9b7c07c3ed09be2e6cf93a42cf6a780e">operator-</a>(<span class="keyword">const</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; matA, <span class="keyword">const</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; matB)
<a name="l00162"></a>00162 {VERBOSE_REPORT;
<a name="l00163"></a>00163 <span class="preprocessor">#ifdef  CPPL_DEBUG</span>
<a name="l00164"></a>00164 <span class="preprocessor"></span>  <span class="keywordflow">if</span>(matA.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>!=matB.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> || matA.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>!=matB.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>){
<a name="l00165"></a>00165     ERROR_REPORT;
<a name="l00166"></a>00166     std::cerr &lt;&lt; <span class="stringliteral">&quot;These two matrises can not make a subtraction.&quot;</span> &lt;&lt; std::endl
<a name="l00167"></a>00167               &lt;&lt; <span class="stringliteral">&quot;Your input was (&quot;</span> &lt;&lt; matA.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a> &lt;&lt; <span class="stringliteral">&quot;x&quot;</span> &lt;&lt; matA.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> &lt;&lt; <span class="stringliteral">&quot;) - (&quot;</span> &lt;&lt; matB.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a> &lt;&lt; <span class="stringliteral">&quot;x&quot;</span> &lt;&lt; matB.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> &lt;&lt; <span class="stringliteral">&quot;).&quot;</span> &lt;&lt; std::endl;
<a name="l00168"></a>00168     exit(1);
<a name="l00169"></a>00169   }
<a name="l00170"></a>00170 <span class="preprocessor">#endif//CPPL_DEBUG</span>
<a name="l00171"></a>00171 <span class="preprocessor"></span>  
<a name="l00172"></a>00172   <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a> newmat(matA.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>,matA.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,std::max(matA.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>,matB.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>),std::max(matA.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>,matB.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>));
<a name="l00173"></a>00173   newmat.<a class="code" href="classzgbmatrix.html#afdde0177424c3b76a9f7f81381b1149d">zero</a>();
<a name="l00174"></a>00174   
<a name="l00175"></a>00175   <span class="keywordflow">for</span>(<span class="keywordtype">long</span> <a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>=0; <a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>&lt;matA.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>; <a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>++){
<a name="l00176"></a>00176     <span class="keywordflow">for</span>(<span class="keywordtype">long</span> j=std::max(<span class="keywordtype">long</span>(0),<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>-matA.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>); j&lt;std::min(matA.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>+matA.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1); j++){
<a name="l00177"></a>00177       newmat(<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>,j)+=matA(<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>,j);
<a name="l00178"></a>00178     }
<a name="l00179"></a>00179     <span class="keywordflow">for</span>(<span class="keywordtype">long</span> j=std::max(<span class="keywordtype">long</span>(0),<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>-matB.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>); j&lt;std::min(matB.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>+matB.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1); j++){
<a name="l00180"></a>00180       newmat(<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>,j)-=matB(<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>,j);
<a name="l00181"></a>00181     }
<a name="l00182"></a>00182   }
<a name="l00183"></a>00183   
<a name="l00184"></a>00184   <span class="keywordflow">return</span> <a class="code" href="dcovector-misc_8hpp.html#a297beda6502b0d92c99576d2fb9548cb">_</a>(newmat);
<a name="l00185"></a>00185 }
<a name="l00186"></a>00186 
<a name="l00187"></a>00187 <span class="comment">//=============================================================================</span><span class="comment"></span>
<a name="l00188"></a>00188 <span class="comment">/*! zgbmatrix*zgbmatrix operator */</span>
<a name="l00189"></a><a class="code" href="zgbmatrix-zgbmatrix_8hpp.html#ab0d171173f0c83d4032d593c97cf3a4e">00189</a> <span class="keyword">inline</span> <a class="code" href="class__zgbmatrix.html" title="(DO NOT USE) Smart-temporary Complex Double-precision General Band Matrix Class">_zgbmatrix</a> <a class="code" href="__dcovector-__drovector_8hpp.html#a36e102e1f8cddbe23f35d1e8dc37e2a7">operator*</a>(<span class="keyword">const</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; matA, <span class="keyword">const</span> <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a>&amp; matB)
<a name="l00190"></a>00190 {VERBOSE_REPORT;
<a name="l00191"></a>00191 <span class="preprocessor">#ifdef  CPPL_DEBUG</span>
<a name="l00192"></a>00192 <span class="preprocessor"></span>  <span class="keywordflow">if</span>(matA.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>!=matB.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>){
<a name="l00193"></a>00193     ERROR_REPORT;
<a name="l00194"></a>00194     std::cerr &lt;&lt; <span class="stringliteral">&quot;These two matrises can not make a product.&quot;</span> &lt;&lt; std::endl
<a name="l00195"></a>00195               &lt;&lt; <span class="stringliteral">&quot;Your input was (&quot;</span> &lt;&lt; matA.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a> &lt;&lt; <span class="stringliteral">&quot;x&quot;</span> &lt;&lt; matA.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> &lt;&lt; <span class="stringliteral">&quot;) * (&quot;</span> &lt;&lt; matB.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a> &lt;&lt; <span class="stringliteral">&quot;x&quot;</span> &lt;&lt; matB.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a> &lt;&lt; <span class="stringliteral">&quot;).&quot;</span> &lt;&lt; std::endl;
<a name="l00196"></a>00196     exit(1);
<a name="l00197"></a>00197   }
<a name="l00198"></a>00198 <span class="preprocessor">#endif//CPPL_DEBUG</span>
<a name="l00199"></a>00199 <span class="preprocessor"></span>  
<a name="l00200"></a>00200   <a class="code" href="classzgbmatrix.html" title="Complex Double-precision General Band Matrix Class.">zgbmatrix</a> newmat( matA.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>, matB.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>, std::min(matA.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>+matB.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>,matA.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>-1), std::min(matA.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+matB.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>,matB.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>-1) );
<a name="l00201"></a>00201   newmat.<a class="code" href="classzgbmatrix.html#afdde0177424c3b76a9f7f81381b1149d">zero</a>();
<a name="l00202"></a>00202   
<a name="l00203"></a>00203   <span class="keywordflow">for</span>(<span class="keywordtype">long</span> <a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>=0; <a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>&lt;newmat.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>; <a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>++){
<a name="l00204"></a>00204     <span class="keywordflow">for</span>(<span class="keywordtype">long</span> j=std::max(<span class="keywordtype">long</span>(0),<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>-newmat.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>); j&lt;std::min(newmat.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>+newmat.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1); j++){
<a name="l00205"></a>00205       <span class="keywordflow">for</span>(<span class="keywordtype">long</span> k=std::max( std::max(<span class="keywordtype">long</span>(0),<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>-matA.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>), std::max(<span class="keywordtype">long</span>(0),j-matB.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>) );
<a name="l00206"></a>00206           k&lt; std::min( std::min(matA.<a class="code" href="classzgbmatrix.html#ae648f83ec8f7cbc28335265c10e6fe45" title="matrix column size">n</a>,<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>+matA.<a class="code" href="classzgbmatrix.html#a2a36d59681d1b2f13120a4b4be9203e8" title="upper band width">ku</a>+1), std::min(matB.<a class="code" href="classzgbmatrix.html#a760031d62091c1ce2808a1b07c7f81bf" title="matrix row size">m</a>,j+matB.<a class="code" href="classzgbmatrix.html#af8f8a5015069bdb6c268652ee25838c0" title="lower band width">kl</a>+1) ); k++){
<a name="l00207"></a>00207         newmat(<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>,j)+= matA(<a class="code" href="__dgbmatrix-calc_8hpp.html#af7c79b3740ba9c1d547f55ac94bc1258">i</a>,k)*matB(k,j);
<a name="l00208"></a>00208       }
<a name="l00209"></a>00209     }
<a name="l00210"></a>00210   }
<a name="l00211"></a>00211   
<a name="l00212"></a>00212   <span class="keywordflow">return</span> <a class="code" href="dcovector-misc_8hpp.html#a297beda6502b0d92c99576d2fb9548cb">_</a>(newmat);
<a name="l00213"></a>00213 }
</pre></div></div><!-- contents -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Friends</a></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>



<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>

</body>
</html>
