Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > c5653a35bb94fee65ffe21230992c863 > files > 180

linbox-doc-1.2.1-1.fc15.noarch.rpm

<!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"/>
<title>linbox: MatrixDomain&lt; Field &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<script type="text/javascript">
function hasClass(ele,cls) {
  return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls) {
  if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}

function removeClass(ele,cls) {
  if (hasClass(ele,cls)) {
    var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
    ele.className=ele.className.replace(reg,' ');
  }
}

function toggleVisibility(linkObj) {
 var base = linkObj.getAttribute('id');
 var summary = document.getElementById(base + '-summary');
 var content = document.getElementById(base + '-content');
 var trigger = document.getElementById(base + '-trigger');
 if ( hasClass(linkObj,'closed') ) {
   summary.style.display = 'none';
   content.style.display = 'block';
   trigger.src = 'open.png';
   removeClass(linkObj,'closed');
   addClass(linkObj,'opened');
 } else if ( hasClass(linkObj,'opened') ) {
   summary.style.display = 'block';
   content.style.display = 'none';
   trigger.src = 'closed.png';
   removeClass(linkObj,'opened');
   addClass(linkObj,'closed');
 }
 return false;
}
</script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">linbox</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <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="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespace_lin_box.html">LinBox</a>      </li>
      <li class="navelem"><a class="el" href="class_lin_box_1_1_matrix_domain.html">MatrixDomain</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">MatrixDomain&lt; Field &gt; Class Template Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="LinBox::MatrixDomain" --><!-- doxytag: inherits="LinBox::MVProductDomain" -->
<p>Class of matrix arithmetic functions.  
 <a href="class_lin_box_1_1_matrix_domain.html#details">More...</a></p>

<p><code>#include &lt;matrix-domain.h&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png"/> Inheritance diagram for MatrixDomain&lt; Field &gt;:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
 <div class="center">
  <img src="class_lin_box_1_1_matrix_domain.png" usemap="#MatrixDomain&lt; Field &gt;_map" alt=""/>
  <map id="MatrixDomain&lt; Field &gt;_map" name="MatrixDomain&lt; Field &gt;_map">
<area href="class_lin_box_1_1_m_v_product_domain.html" title="Helper class to allow specializations of certain matrix-vector products." alt="MVProductDomain&lt; Field &gt;" shape="rect" coords="0,0,170,24"/>
</map>
 </div></div>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a33f758d1b2a4744e402aad31db51e98b">MatrixDomain</a> (const <a class="el" href="class_lin_box_1_1_modular_3_01uint32__t_01_4.html">Field</a> &amp;F)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a33f758d1b2a4744e402aad31db51e98b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad58b3f3cf6e7865b86cae36d51fbeb22"></a><!-- doxytag: member="LinBox::MatrixDomain::operator=" ref="ad58b3f3cf6e7865b86cae36d51fbeb22" args="(const MatrixDomain &amp;MD)" -->
<a class="el" href="class_lin_box_1_1_matrix_domain.html">MatrixDomain</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#ad58b3f3cf6e7865b86cae36d51fbeb22">operator=</a> (const <a class="el" href="class_lin_box_1_1_matrix_domain.html">MatrixDomain</a> &amp;MD)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy operator. <br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a5b99c92431944aa37d31f71cfa40b4d5">write</a> (std::ostream &amp;os, const Matrix &amp;A) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print matrix.  <a href="#a5b99c92431944aa37d31f71cfa40b4d5"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#af191b114ae4a53e261c609207be9a561">read</a> (std::istream &amp;is, Matrix &amp;A) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Read matrix.  <a href="#af191b114ae4a53e261c609207be9a561"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a9be8f83ea3b5d8ded2d857cf2c18f51f">copy</a> (Matrix1 &amp;B, const Matrix2 &amp;A) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix copy B &lt;- A.  <a href="#a9be8f83ea3b5d8ded2d857cf2c18f51f"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a532ed327a121fff8385b613fe7cacade">areEqual</a> (const Matrix1 &amp;A, const Matrix2 &amp;B) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix equality.  <a href="#a532ed327a121fff8385b613fe7cacade"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#ab2d5198d66c00af9e90ce2549da7e5a5">isZero</a> (const Matrix &amp;A) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix equality with zero.  <a href="#ab2d5198d66c00af9e90ce2549da7e5a5"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 , class Matrix3 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a2dd0398eae4371213d0d54b66f46200b">add</a> (Matrix1 &amp;C, const Matrix2 &amp;A, const Matrix3 &amp;B) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-matrix addition C &lt;- A + B.  <a href="#a2dd0398eae4371213d0d54b66f46200b"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a97ced681f860624c124be5519ea88a3f">addin</a> (Matrix1 &amp;A, const Matrix2 &amp;B) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-matrix in-place addition A &lt;- A + B.  <a href="#a97ced681f860624c124be5519ea88a3f"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 , class Matrix3 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#ad53bda4015a59d78513ce0f4c07992e0">sub</a> (Matrix1 &amp;C, const Matrix2 &amp;A, const Matrix3 &amp;B) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-matrix subtraction C &lt;- A - B.  <a href="#ad53bda4015a59d78513ce0f4c07992e0"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a9a9eff2c6432f129eff81276db7e1dbc">subin</a> (Matrix1 &amp;A, const Matrix2 &amp;B) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-matrix in-place subtraction A &lt;- A - B.  <a href="#a9a9eff2c6432f129eff81276db7e1dbc"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a9011b284e4692ab1ae4b64ff027d6474">neg</a> (Matrix1 &amp;B, const Matrix2 &amp;A) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix negate B &lt;- -A.  <a href="#a9011b284e4692ab1ae4b64ff027d6474"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#af5d9fcc952778fe06228db79dd3811b1">negin</a> (Matrix &amp;A) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix in-place negate A &lt;- -A.  <a href="#af5d9fcc952778fe06228db79dd3811b1"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 , class Matrix3 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a1832e509aa9e0d30dc88b3f7835c89e1">mul</a> (Matrix1 &amp;C, const Matrix2 &amp;A, const Matrix3 &amp;B) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-matrix multiply C &lt;- A * B.  <a href="#a1832e509aa9e0d30dc88b3f7835c89e1"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix2 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#ac793b9206a5eb42e69fcaf9310c707e0">leftMulin</a> (const Matrix1 &amp;A, Matrix2 &amp;B) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-matrix in-place multiply on the left B &lt;- A * B.  <a href="#ac793b9206a5eb42e69fcaf9310c707e0"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a61f793b3d60cc243fb328187ac6603ad">rightMulin</a> (Matrix1 &amp;A, const Matrix2 &amp;B) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-matrix in-place multiply on the right A &lt;- A * B.  <a href="#a61f793b3d60cc243fb328187ac6603ad"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a81c82d428eb69ab6c274fe2dabc587e0">mulin</a> (Matrix1 &amp;A, const Matrix2 &amp;B) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-matrix in-place multiply A &lt;- A * B.  <a href="#a81c82d428eb69ab6c274fe2dabc587e0"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a6bf68d7c1e7dff9e4013c8b47dcbcaaa">mul</a> (Matrix1 &amp;C, const Matrix2 &amp;B, const typename Field::Element &amp;a) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-scalar multiply C &lt;- B * a.  <a href="#a6bf68d7c1e7dff9e4013c8b47dcbcaaa"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a19bf47c7d7b63f21d243a02e81c6ed5f">mulin</a> (Matrix &amp;B, const typename Field::Element &amp;a) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-scalar in-place multiply B &lt;- B * a.  <a href="#a19bf47c7d7b63f21d243a02e81c6ed5f"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 , class Matrix3 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a2beed7a29efd07021c38096a96277f5f">axpyin</a> (Matrix1 &amp;Y, const Matrix2 &amp;A, const Matrix3 &amp;X) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-matrix in-place axpy Y &lt;- Y + A*X.  <a href="#a2beed7a29efd07021c38096a96277f5f"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 , class Matrix3 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a011203bfe9a4b99ee0c749067f8626fe">muladd</a> (Matrix1 &amp;D, const typename Field::Element &amp;beta, const Matrix1 &amp;C, const typename Field::Element &amp;alpha, const Matrix2 &amp;A, const Matrix3 &amp;B) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">General matrix multiply <img class="formulaInl" alt="$ D \gets \alpha A B + \beta C$" src="form_59.png"/>.  <a href="#a011203bfe9a4b99ee0c749067f8626fe"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="class_lin_box_1_1_modular_3_01uint32__t_01_4.html">Field</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a66be394bace6f92c18729a119581d7bd">field</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the underlying field.  <a href="#a66be394bace6f92c18729a119581d7bd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_modular_3_01uint32__t_01_4.html">Field</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a05eca9e10246b4737dd67c2a6cb58592">field</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the underlying field.  <a href="#a05eca9e10246b4737dd67c2a6cb58592"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a243d325a29a9beacac97546870f13b16">pow_apply</a> (Matrix1 &amp;M1, const Matrix2 &amp;M2, unsigned long int k) const </td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#af5e64c3abd9afb8d6c26923ddf2d1564">pow_horn</a> (Matrix1 &amp;M1, const Matrix2 &amp;M2, unsigned long int k) const </td></tr>
<tr><td colspan="2"><div class="groupHeader">Matrix-vector arithmetic operations</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These operations take a matrix satisfying the <a class="el" href="class_lin_box_1_1_dense_matrix.html">DenseMatrix</a> archetype and <a class="el" href="namespace_lin_box.html" title="Namespace in which all linbox code resides.">LinBox</a> vectors as inputs.</p>
<p>They involve matrix-vector product and matrix-vector AXPY </p>
</div></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Vector1 , class Matrix , class Vector2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Vector1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a1e80a0fae03b613b98903eed648a7f8c">vectorMul</a> (Vector1 &amp;w, const Matrix &amp;A, const Vector2 &amp;v) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-vector multiply w &lt;- A * v.  <a href="#a1e80a0fae03b613b98903eed648a7f8c"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Vector1 , class Matrix , class Vector2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Vector1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a5284481ff6b22517c9ce63be6b75f0dc">vectorAxpyin</a> (Vector1 &amp;y, const Matrix &amp;A, const Vector2 &amp;x) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-vector in-place axpy <img class="formulaInl" alt="$y \gets y + A x$" src="form_60.png"/>.  <a href="#a5284481ff6b22517c9ce63be6b75f0dc"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Matrix-black box arithmetic operations</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These operations mimic the matrix-matrix arithmetic operations above, but one of the parameters is a <a class="el" href="class_lin_box_1_1_blackbox_archetype.html">BlackboxArchetype</a>. </p>
</div></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Blackbox , class Matrix2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a18659757729071cb3fbc972e55b32ce0">blackboxMulLeft</a> (Matrix1 &amp;C, const Blackbox &amp;A, const Matrix2 &amp;B) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-black box left-multiply C &lt;- A * B.  <a href="#a18659757729071cb3fbc972e55b32ce0"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix1 , class Matrix2 , class Blackbox &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix1 &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#ae67adfd585fa7be7dcdf46556bc64852">blackboxMulRight</a> (Matrix1 &amp;C, const Matrix2 &amp;A, const Blackbox &amp;B) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-black box right-multiply C &lt;- A * B.  <a href="#ae67adfd585fa7be7dcdf46556bc64852"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Matrix permutations</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp460647308aa50e365829b6071ada0290"></a>These operations permute the rows or columns of a matrix based on the given permutation.</p>
<p>They are intended for use with Gauss-Jordan elimination </p>
</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2949010c04572ecfe6d33a7c9a57cfed"></a><!-- doxytag: member="LinBox::MatrixDomain::Transposition" ref="a2949010c04572ecfe6d33a7c9a57cfed" args="" -->
typedef std::pair&lt; unsigned <br class="typebreak"/>
int, unsigned int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a2949010c04572ecfe6d33a7c9a57cfed">Transposition</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Transposition. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef std::vector<br class="typebreak"/>
&lt; <a class="el" href="class_lin_box_1_1_matrix_domain.html#a2949010c04572ecfe6d33a7c9a57cfed">Transposition</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#ae3b7bae2ca356743d63495e114c81648">Permutation</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="class_lin_box_1_1_permutation.html" title="size is n.">Permutation</a>.  <a href="#ae3b7bae2ca356743d63495e114c81648"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix , class Iterator &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a04da654db3c8a7e6493e3d03e355e405">permuteRows</a> (Matrix &amp;A, Iterator P_start, Iterator P_end) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Permute the rows of the given matrix.  <a href="#a04da654db3c8a7e6493e3d03e355e405"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Matrix , class Iterator &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">Matrix &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_matrix_domain.html#a21717297603952a5e40593de1d7f0080">permuteColumns</a> (Matrix &amp;A, Iterator P_start, Iterator P_end) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Permute the columns of the given matrix.  <a href="#a21717297603952a5e40593de1d7f0080"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><h3>template&lt;class Field&gt;<br/>
class LinBox::MatrixDomain&lt; Field &gt;</h3>

<p>Class of matrix arithmetic functions. </p>
<p>This class encapuslated matrix-matrix and matrix-vector operations, roughly equivalent to BLAS levels 2 and 3. The arithmetic methods are parameterized by matrix type so that they may be used the same way with sparse matrices, dense matrices, and dense submatrices. Except where otherwise noted, they require the matrix inputs to meet the <a class="el" href="class_lin_box_1_1_dense_matrix.html">DenseMatrix</a> archetype.</p>
<p>These methods are specialized so that they can run efficiently with different matrix representations. If a matrix has an efficient row iterator, but not an efficient column iterator, a specialization that makes use of the former will be selected. This allows a great deal of flexibility when dealing with sparse matrix arithmetic.</p>
<p>For all of the arithmetic operations that output matrices, it is assumed that the output matrix has an efficient row iterator. In typical use, the output matrix will be a <a class="el" href="class_lin_box_1_1_dense_matrix_base.html">DenseMatrixBase</a> or a <a class="el" href="class_lin_box_1_1_dense_submatrix.html">DenseSubmatrix</a>, which has efficient row and column iterators. In particular, one should not perform these arithmetic operations outputting to a <a class="el" href="class_lin_box_1_1_sparse_matrix_base.html">SparseMatrixBase</a>.</p>
<p>There are other restrictions. See the method-specific documentation for more details. </p>
</div><hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="ae3b7bae2ca356743d63495e114c81648"></a><!-- doxytag: member="LinBox::MatrixDomain::Permutation" ref="ae3b7bae2ca356743d63495e114c81648" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef std::vector&lt;<a class="el" href="class_lin_box_1_1_matrix_domain.html#a2949010c04572ecfe6d33a7c9a57cfed">Transposition</a>&gt; <a class="el" href="class_lin_box_1_1_matrix_domain.html#ae3b7bae2ca356743d63495e114c81648">Permutation</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="class_lin_box_1_1_permutation.html" title="size is n.">Permutation</a>. </p>
<p>A permutation is represented as a vector of pairs, each pair representing a transposition. </p>

</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a33f758d1b2a4744e402aad31db51e98b"></a><!-- doxytag: member="LinBox::MatrixDomain::MatrixDomain" ref="a33f758d1b2a4744e402aad31db51e98b" args="(const Field &amp;F)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_matrix_domain.html">MatrixDomain</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_modular_3_01uint32__t_01_4.html">Field</a> &amp;&#160;</td>
          <td class="paramname"><em>F</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">F</td><td>field for <a class="el" href="class_lin_box_1_1_matrix_domain.html" title="Class of matrix arithmetic functions.">MatrixDomain</a> operations. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a66be394bace6f92c18729a119581d7bd"></a><!-- doxytag: member="LinBox::MatrixDomain::field" ref="a66be394bace6f92c18729a119581d7bd" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="class_lin_box_1_1_modular_3_01uint32__t_01_4.html">Field</a>&amp; field </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Retrieve the underlying field. </p>
<p>Return a reference to the field that this matrix domain object uses </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to field </dd></dl>

</div>
</div>
<a class="anchor" id="a05eca9e10246b4737dd67c2a6cb58592"></a><!-- doxytag: member="LinBox::MatrixDomain::field" ref="a05eca9e10246b4737dd67c2a6cb58592" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_modular_3_01uint32__t_01_4.html">Field</a>&amp; field </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Retrieve the underlying field. </p>
<p>Return a reference to the field that this matrix domain object uses </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to field </dd></dl>

</div>
</div>
<a class="anchor" id="a5b99c92431944aa37d31f71cfa40b4d5"></a><!-- doxytag: member="LinBox::MatrixDomain::write" ref="a5b99c92431944aa37d31f71cfa40b4d5" args="(std::ostream &amp;os, const Matrix &amp;A) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream&amp; write </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix &amp;&#160;</td>
          <td class="paramname"><em>A</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Print matrix. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Output stream to which matrix is written. </td></tr>
    <tr><td class="paramname">A</td><td>Matrix. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to os. </dd></dl>

</div>
</div>
<a class="anchor" id="af191b114ae4a53e261c609207be9a561"></a><!-- doxytag: member="LinBox::MatrixDomain::read" ref="af191b114ae4a53e261c609207be9a561" args="(std::istream &amp;is, Matrix &amp;A) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::istream&amp; read </td>
          <td>(</td>
          <td class="paramtype">std::istream &amp;&#160;</td>
          <td class="paramname"><em>is</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Matrix &amp;&#160;</td>
          <td class="paramname"><em>A</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read matrix. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">is</td><td>Input stream from which matrix is read. </td></tr>
    <tr><td class="paramname">A</td><td>Matrix. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to is. </dd></dl>

</div>
</div>
<a class="anchor" id="a9be8f83ea3b5d8ded2d857cf2c18f51f"></a><!-- doxytag: member="LinBox::MatrixDomain::copy" ref="a9be8f83ea3b5d8ded2d857cf2c18f51f" args="(Matrix1 &amp;B, const Matrix2 &amp;A) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; copy </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>B</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>A</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix copy B &lt;- A. </p>
<p>Copy the contents of the matrix B to the matrix A</p>
<p>Both matrices must support the same iterators, row or column.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">B</td><td>Matrix B </td></tr>
    <tr><td class="paramname">A</td><td>Matrix A </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to B </dd></dl>

</div>
</div>
<a class="anchor" id="a532ed327a121fff8385b613fe7cacade"></a><!-- doxytag: member="LinBox::MatrixDomain::areEqual" ref="a532ed327a121fff8385b613fe7cacade" args="(const Matrix1 &amp;A, const Matrix2 &amp;B) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool areEqual </td>
          <td>(</td>
          <td class="paramtype">const Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix equality. </p>
<p>Test whether the matrices A and B are equal </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">A</td><td>Input vector </td></tr>
    <tr><td class="paramname">B</td><td>Input vector </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if and only if the matrices A and B are equal </dd></dl>

</div>
</div>
<a class="anchor" id="ab2d5198d66c00af9e90ce2549da7e5a5"></a><!-- doxytag: member="LinBox::MatrixDomain::isZero" ref="ab2d5198d66c00af9e90ce2549da7e5a5" args="(const Matrix &amp;A) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool isZero </td>
          <td>(</td>
          <td class="paramtype">const Matrix &amp;&#160;</td>
          <td class="paramname"><em>A</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix equality with zero. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">A</td><td>Input matrix </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if and only if the matrix A is zero </dd></dl>

</div>
</div>
<a class="anchor" id="a2dd0398eae4371213d0d54b66f46200b"></a><!-- doxytag: member="LinBox::MatrixDomain::add" ref="a2dd0398eae4371213d0d54b66f46200b" args="(Matrix1 &amp;C, const Matrix2 &amp;A, const Matrix3 &amp;B) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; add </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix3 &amp;&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-matrix addition C &lt;- A + B. </p>
<p>Each of A, B, and C must support the same iterator, either row or column</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>Output matrix C </td></tr>
    <tr><td class="paramname">A</td><td>Input matrix A </td></tr>
    <tr><td class="paramname">B</td><td>Input matrix B </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to C </dd></dl>

</div>
</div>
<a class="anchor" id="a97ced681f860624c124be5519ea88a3f"></a><!-- doxytag: member="LinBox::MatrixDomain::addin" ref="a97ced681f860624c124be5519ea88a3f" args="(Matrix1 &amp;A, const Matrix2 &amp;B) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; addin </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-matrix in-place addition A &lt;- A + B. </p>
<p>Each of A and B must support the same iterator, either row or column</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">A</td><td>Input matrix A </td></tr>
    <tr><td class="paramname">B</td><td>Input matrix B </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to A </dd></dl>

</div>
</div>
<a class="anchor" id="ad53bda4015a59d78513ce0f4c07992e0"></a><!-- doxytag: member="LinBox::MatrixDomain::sub" ref="ad53bda4015a59d78513ce0f4c07992e0" args="(Matrix1 &amp;C, const Matrix2 &amp;A, const Matrix3 &amp;B) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; sub </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix3 &amp;&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-matrix subtraction C &lt;- A - B. </p>
<p>Each of A, B, and C must support the same iterator, either row or column</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>Output matrix C </td></tr>
    <tr><td class="paramname">A</td><td>Input matrix A </td></tr>
    <tr><td class="paramname">B</td><td>Input matrix B </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to C </dd></dl>

</div>
</div>
<a class="anchor" id="a9a9eff2c6432f129eff81276db7e1dbc"></a><!-- doxytag: member="LinBox::MatrixDomain::subin" ref="a9a9eff2c6432f129eff81276db7e1dbc" args="(Matrix1 &amp;A, const Matrix2 &amp;B) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; subin </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-matrix in-place subtraction A &lt;- A - B. </p>
<p>Each of A and B must support the same iterator, either row or column</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">A</td><td>Input matrix A </td></tr>
    <tr><td class="paramname">B</td><td>Input matrix B </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to A </dd></dl>

</div>
</div>
<a class="anchor" id="a9011b284e4692ab1ae4b64ff027d6474"></a><!-- doxytag: member="LinBox::MatrixDomain::neg" ref="a9011b284e4692ab1ae4b64ff027d6474" args="(Matrix1 &amp;B, const Matrix2 &amp;A) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; neg </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>B</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>A</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix negate B &lt;- -A. </p>
<p>Each of A and B must support the same iterator, either row or column</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">B</td><td>Output matrix B </td></tr>
    <tr><td class="paramname">A</td><td>Input matrix A </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to B </dd></dl>

</div>
</div>
<a class="anchor" id="af5d9fcc952778fe06228db79dd3811b1"></a><!-- doxytag: member="LinBox::MatrixDomain::negin" ref="af5d9fcc952778fe06228db79dd3811b1" args="(Matrix &amp;A) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix&amp; negin </td>
          <td>(</td>
          <td class="paramtype">Matrix &amp;&#160;</td>
          <td class="paramname"><em>A</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix in-place negate A &lt;- -A. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">A</td><td>Input matrix A; result is stored here </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a1832e509aa9e0d30dc88b3f7835c89e1"></a><!-- doxytag: member="LinBox::MatrixDomain::mul" ref="a1832e509aa9e0d30dc88b3f7835c89e1" args="(Matrix1 &amp;C, const Matrix2 &amp;A, const Matrix3 &amp;B) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; mul </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix3 &amp;&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-matrix multiply C &lt;- A * B. </p>
<p>C must support both row and column iterators, and the vector representations must be dense. Examples of supported matrices are <a class="el" href="class_lin_box_1_1_dense_matrix_base.html">DenseMatrixBase</a> and <a class="el" href="class_lin_box_1_1_dense_submatrix.html">DenseSubmatrix</a>.</p>
<p>Either A or B, or both, may have limited iterators. However, either A must support row iterators or B must support column iterators. If both A and B lack support for an iterator (either row or column), then C must support the same type of iterator as A and B.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>Output matrix C </td></tr>
    <tr><td class="paramname">A</td><td>Input matrix A </td></tr>
    <tr><td class="paramname">B</td><td>Input matrix B </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to C </dd></dl>

</div>
</div>
<a class="anchor" id="ac793b9206a5eb42e69fcaf9310c707e0"></a><!-- doxytag: member="LinBox::MatrixDomain::leftMulin" ref="ac793b9206a5eb42e69fcaf9310c707e0" args="(const Matrix1 &amp;A, Matrix2 &amp;B) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix2 &amp; leftMulin </td>
          <td>(</td>
          <td class="paramtype">const Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-matrix in-place multiply on the left B &lt;- A * B. </p>
<p>B should support both row and column iterators, and must be dense. A must support row iterators.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">A</td><td>Input matrix A </td></tr>
    <tr><td class="paramname">B</td><td>Input matrix B </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to B </dd></dl>

</div>
</div>
<a class="anchor" id="a61f793b3d60cc243fb328187ac6603ad"></a><!-- doxytag: member="LinBox::MatrixDomain::rightMulin" ref="a61f793b3d60cc243fb328187ac6603ad" args="(Matrix1 &amp;A, const Matrix2 &amp;B) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1 &amp; rightMulin </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-matrix in-place multiply on the right A &lt;- A * B. </p>
<p>A should support both row and column iterators, and must be dense. B must support column iterators.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">A</td><td>Input matrix A </td></tr>
    <tr><td class="paramname">B</td><td>Input matrix B </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to A </dd></dl>

</div>
</div>
<a class="anchor" id="a81c82d428eb69ab6c274fe2dabc587e0"></a><!-- doxytag: member="LinBox::MatrixDomain::mulin" ref="a81c82d428eb69ab6c274fe2dabc587e0" args="(Matrix1 &amp;A, const Matrix2 &amp;B) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; mulin </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-matrix in-place multiply A &lt;- A * B. </p>
<p>This is an alias for <a class="el" href="class_lin_box_1_1_matrix_domain.html#a61f793b3d60cc243fb328187ac6603ad">rightMulin</a></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">A</td><td>Input matrix A </td></tr>
    <tr><td class="paramname">B</td><td>Input matrix B </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to A </dd></dl>

</div>
</div>
<a class="anchor" id="a6bf68d7c1e7dff9e4013c8b47dcbcaaa"></a><!-- doxytag: member="LinBox::MatrixDomain::mul" ref="a6bf68d7c1e7dff9e4013c8b47dcbcaaa" args="(Matrix1 &amp;C, const Matrix2 &amp;B, const typename Field::Element &amp;a) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; mul </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>B</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const typename Field::Element &amp;&#160;</td>
          <td class="paramname"><em>a</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-scalar multiply C &lt;- B * a. </p>
<p>Multiply B by the scalar element a and store the result in C. B and C must support the same iterators.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>Output matrix C </td></tr>
    <tr><td class="paramname">B</td><td>Input matrix B </td></tr>
    <tr><td class="paramname">a</td><td>Input scalar a </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to C </dd></dl>

</div>
</div>
<a class="anchor" id="a19bf47c7d7b63f21d243a02e81c6ed5f"></a><!-- doxytag: member="LinBox::MatrixDomain::mulin" ref="a19bf47c7d7b63f21d243a02e81c6ed5f" args="(Matrix &amp;B, const typename Field::Element &amp;a) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix&amp; mulin </td>
          <td>(</td>
          <td class="paramtype">Matrix &amp;&#160;</td>
          <td class="paramname"><em>B</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const typename Field::Element &amp;&#160;</td>
          <td class="paramname"><em>a</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-scalar in-place multiply B &lt;- B * a. </p>
<p>Multiply B by the scalar element a in-place.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">B</td><td>Input matrix B </td></tr>
    <tr><td class="paramname">a</td><td>Input scalar a </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to B </dd></dl>

</div>
</div>
<a class="anchor" id="a2beed7a29efd07021c38096a96277f5f"></a><!-- doxytag: member="LinBox::MatrixDomain::axpyin" ref="a2beed7a29efd07021c38096a96277f5f" args="(Matrix1 &amp;Y, const Matrix2 &amp;A, const Matrix3 &amp;X) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; axpyin </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>Y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix3 &amp;&#160;</td>
          <td class="paramname"><em>X</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-matrix in-place axpy Y &lt;- Y + A*X. </p>
<p>This function combines <a class="el" href="class_lin_box_1_1_matrix_domain.html#a1832e509aa9e0d30dc88b3f7835c89e1">mul</a> and <a class="el" href="class_lin_box_1_1_matrix_domain.html#a2dd0398eae4371213d0d54b66f46200b">add</a>, eliminating the need for an additional temporary in expressions of the form $Y = Y + AX$. Only one row of additional storage is required. Y may have either efficient row iterators or efficient column iterators, and the same restrictions on A and X apply as in <a class="el" href="class_lin_box_1_1_matrix_domain.html#a1832e509aa9e0d30dc88b3f7835c89e1">mul</a>.</p>
<p>Note that no out-of-place axpy is provided, since it gives no benefit. One may just as easily multiply into the result and call <a class="el" href="class_lin_box_1_1_matrix_domain.html#a97ced681f860624c124be5519ea88a3f">addin</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">Y</td><td>Input matrix Y; result is stored here </td></tr>
    <tr><td class="paramname">A</td><td>Input matrix A </td></tr>
    <tr><td class="paramname">X</td><td>Input matrix X </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a011203bfe9a4b99ee0c749067f8626fe"></a><!-- doxytag: member="LinBox::MatrixDomain::muladd" ref="a011203bfe9a4b99ee0c749067f8626fe" args="(Matrix1 &amp;D, const typename Field::Element &amp;beta, const Matrix1 &amp;C, const typename Field::Element &amp;alpha, const Matrix2 &amp;A, const Matrix3 &amp;B) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; muladd </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>D</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const typename Field::Element &amp;&#160;</td>
          <td class="paramname"><em>beta</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const typename Field::Element &amp;&#160;</td>
          <td class="paramname"><em>alpha</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix3 &amp;&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>General matrix multiply <img class="formulaInl" alt="$ D \gets \alpha A B + \beta C$" src="form_59.png"/>. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000019">Todo:</a></b></dt><dd>not efficient... </dd></dl>

</div>
</div>
<a class="anchor" id="a243d325a29a9beacac97546870f13b16"></a><!-- doxytag: member="LinBox::MatrixDomain::pow_apply" ref="a243d325a29a9beacac97546870f13b16" args="(Matrix1 &amp;M1, const Matrix2 &amp;M2, unsigned long int k) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; pow_apply </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>M1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>M2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned long int&#160;</td>
          <td class="paramname"><em>k</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000020">Todo:</a></b></dt><dd>Need documentation of these methods </dd></dl>

</div>
</div>
<a class="anchor" id="af5e64c3abd9afb8d6c26923ddf2d1564"></a><!-- doxytag: member="LinBox::MatrixDomain::pow_horn" ref="af5e64c3abd9afb8d6c26923ddf2d1564" args="(Matrix1 &amp;M1, const Matrix2 &amp;M2, unsigned long int k) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1&amp; pow_horn </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>M1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>M2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned long int&#160;</td>
          <td class="paramname"><em>k</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000020">Todo:</a></b></dt><dd>Need documentation of these methods </dd></dl>

</div>
</div>
<a class="anchor" id="a1e80a0fae03b613b98903eed648a7f8c"></a><!-- doxytag: member="LinBox::MatrixDomain::vectorMul" ref="a1e80a0fae03b613b98903eed648a7f8c" args="(Vector1 &amp;w, const Matrix &amp;A, const Vector2 &amp;v) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Vector1&amp; vectorMul </td>
          <td>(</td>
          <td class="paramtype">Vector1 &amp;&#160;</td>
          <td class="paramname"><em>w</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Vector2 &amp;&#160;</td>
          <td class="paramname"><em>v</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-vector multiply w &lt;- A * v. </p>
<p>The vectors v and w must be of the same representation (dense, sparse sequence, sparse associative, or sparse parallel), but they may be of different types. The matrix A may have any representation.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">w</td><td>Output vector w </td></tr>
    <tr><td class="paramname">A</td><td>Input matrix A </td></tr>
    <tr><td class="paramname">v</td><td>Input vector v </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to w </dd></dl>

</div>
</div>
<a class="anchor" id="a5284481ff6b22517c9ce63be6b75f0dc"></a><!-- doxytag: member="LinBox::MatrixDomain::vectorAxpyin" ref="a5284481ff6b22517c9ce63be6b75f0dc" args="(Vector1 &amp;y, const Matrix &amp;A, const Vector2 &amp;x) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Vector1&amp; vectorAxpyin </td>
          <td>(</td>
          <td class="paramtype">Vector1 &amp;&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Vector2 &amp;&#160;</td>
          <td class="paramname"><em>x</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-vector in-place axpy <img class="formulaInl" alt="$y \gets y + A x$" src="form_60.png"/>. </p>
<p>This function eliminates the requirement for temporary storage when one is computing an expression of the form given above.</p>
<p>The vectors y and x must be of the same representation (dense, sparse sequence, sparse associative, or sparse parallel), but they may be of different types. The matrix A may have any representation.</p>
<p>Note that out-of-place axpy is not provided since it provides no benefit -- one can use mul and then addin to exactly the same effect, with no additional storage or performance cost.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">y</td><td>Input vector y; result is stored here </td></tr>
    <tr><td class="paramname">A</td><td>Input matrix A </td></tr>
    <tr><td class="paramname">x</td><td>Input vector x </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a18659757729071cb3fbc972e55b32ce0"></a><!-- doxytag: member="LinBox::MatrixDomain::blackboxMulLeft" ref="a18659757729071cb3fbc972e55b32ce0" args="(Matrix1 &amp;C, const Blackbox &amp;A, const Matrix2 &amp;B) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1 &amp; blackboxMulLeft </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Blackbox &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-black box left-multiply C &lt;- A * B. </p>
<p>Both C and B must support column iterators</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>Output matrix </td></tr>
    <tr><td class="paramname">A</td><td>Black box for A </td></tr>
    <tr><td class="paramname">B</td><td>Matrix B </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ae67adfd585fa7be7dcdf46556bc64852"></a><!-- doxytag: member="LinBox::MatrixDomain::blackboxMulRight" ref="ae67adfd585fa7be7dcdf46556bc64852" args="(Matrix1 &amp;C, const Matrix2 &amp;A, const Blackbox &amp;B) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix1 &amp; blackboxMulRight </td>
          <td>(</td>
          <td class="paramtype">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix2 &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Blackbox &amp;&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Matrix-black box right-multiply C &lt;- A * B. </p>
<p>Both C and A must support row iterators</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>Output matrix </td></tr>
    <tr><td class="paramname">A</td><td>Matrix A </td></tr>
    <tr><td class="paramname">B</td><td>Black box for B </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a04da654db3c8a7e6493e3d03e355e405"></a><!-- doxytag: member="LinBox::MatrixDomain::permuteRows" ref="a04da654db3c8a7e6493e3d03e355e405" args="(Matrix &amp;A, Iterator P_start, Iterator P_end) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix&amp; permuteRows </td>
          <td>(</td>
          <td class="paramtype">Matrix &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Iterator&#160;</td>
          <td class="paramname"><em>P_start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Iterator&#160;</td>
          <td class="paramname"><em>P_end</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Permute the rows of the given matrix. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">A</td><td>Output matrix </td></tr>
    <tr><td class="paramname">P_start</td><td>Start of permutation </td></tr>
    <tr><td class="paramname">P_end</td><td>End of permutation </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to A </dd></dl>

</div>
</div>
<a class="anchor" id="a21717297603952a5e40593de1d7f0080"></a><!-- doxytag: member="LinBox::MatrixDomain::permuteColumns" ref="a21717297603952a5e40593de1d7f0080" args="(Matrix &amp;A, Iterator P_start, Iterator P_end) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Matrix&amp; permuteColumns </td>
          <td>(</td>
          <td class="paramtype">Matrix &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Iterator&#160;</td>
          <td class="paramname"><em>P_start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Iterator&#160;</td>
          <td class="paramname"><em>P_end</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Permute the columns of the given matrix. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">A</td><td>Output matrix </td></tr>
    <tr><td class="paramname">P_start</td><td>Start of permutation </td></tr>
    <tr><td class="paramname">P_end</td><td>End of permutation </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Reference to A </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>matrix-domain.h</li>
<li>matrix-domain.inl</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Tue Aug 30 2011 for linbox by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>