Sophie

Sophie

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

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: MGBlockLanczosSolver&lt; Field, Matrix &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_m_g_block_lanczos_solver.html">MGBlockLanczosSolver</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">MGBlockLanczosSolver&lt; Field, Matrix &gt; Class Template Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="LinBox::MGBlockLanczosSolver" -->
<p>Block Lanczos iteration.  
 <a href="class_lin_box_1_1_m_g_block_lanczos_solver.html#details">More...</a></p>

<p><code>#include &lt;mg-block-lanczos.h&gt;</code></p>
<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_m_g_block_lanczos_solver.html#ad1099c590dd29c9df13bbf307abcf820">MGBlockLanczosSolver</a> (const <a class="el" href="class_lin_box_1_1_modular_3_01uint32__t_01_4.html">Field</a> &amp;F, const BlockLanczosTraits &amp;traits)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#ad1099c590dd29c9df13bbf307abcf820"></a><br/></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_m_g_block_lanczos_solver.html#a80a571e17c804d860bbd9e5cd7e48f26">MGBlockLanczosSolver</a> (const <a class="el" href="class_lin_box_1_1_modular_3_01uint32__t_01_4.html">Field</a> &amp;F, const BlockLanczosTraits &amp;traits, typename Field::RandIter r)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor with a random iterator.  <a href="#a80a571e17c804d860bbd9e5cd7e48f26"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Blackbox , class Vector &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_m_g_block_lanczos_solver.html#aab28bb034aa20c85c2be57451c5ceee6">solve</a> (const Blackbox &amp;A, Vector &amp;x, const Vector &amp;b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Solve the linear system Ax = b.  <a href="#aab28bb034aa20c85c2be57451c5ceee6"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Blackbox , class Matrix1 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_m_g_block_lanczos_solver.html#ad6ba66df44b9a83fc626c1c6982e83c9">sampleNullspace</a> (const Blackbox &amp;A, Matrix1 &amp;x)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample uniformly from the (right) nullspace of A.  <a href="#ad6ba66df44b9a83fc626c1c6982e83c9"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><h3>template&lt;class Field, class Matrix = DenseMatrixBase&lt;typename Field::Element&gt;&gt;<br/>
class LinBox::MGBlockLanczosSolver&lt; Field, Matrix &gt;</h3>

<p>Block Lanczos iteration. </p>
<p>This is a blocked version of the iteration given in <a class="el" href="class_lin_box_1_1_lanczos_solver.html">LanczosSolver</a>. The essential difference is that, rather than applying the black box $A$ to a single vector <img class="formulaInl" alt="$v$" src="form_12.png"/> during each iteration, the block box <img class="formulaInl" alt="$A$" src="form_5.png"/> is applied to an <img class="formulaInl" alt="$n\times N$" src="form_6.png"/> matrix <img class="formulaInl" alt="$V$" src="form_2.png"/> or, equivalently, to $N$ vectors <img class="formulaInl" alt="$v_1, \ldots, v_N$" src="form_8.png"/> Scalars in the original iteration become <img class="formulaInl" alt="$N\times N$" src="form_9.png"/> matrices in the blocked version. The resulting iteration is a natural extension of the basic theory of the original Lanczos iteration, c.f. (Montgomery 1995). This has the advantage of more flexible parallelization, and does not break down as often when used over small fields.</p>
<p>Currently, only dense vectors are supported for this iteration, and it is unlikely any other vector archetypes will be supported in the future. </p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ad1099c590dd29c9df13bbf307abcf820"></a><!-- doxytag: member="LinBox::MGBlockLanczosSolver::MGBlockLanczosSolver" ref="ad1099c590dd29c9df13bbf307abcf820" args="(const Field &amp;F, const BlockLanczosTraits &amp;traits)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_m_g_block_lanczos_solver.html">MGBlockLanczosSolver</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>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const BlockLanczosTraits &amp;&#160;</td>
          <td class="paramname"><em>traits</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</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 over which to operate </td></tr>
    <tr><td class="paramname">traits</td><td><a class="el" href="struct_lin_box_1_1_solver_traits.html">SolverTraits</a> structure describing user options for the solver </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a80a571e17c804d860bbd9e5cd7e48f26"></a><!-- doxytag: member="LinBox::MGBlockLanczosSolver::MGBlockLanczosSolver" ref="a80a571e17c804d860bbd9e5cd7e48f26" args="(const Field &amp;F, const BlockLanczosTraits &amp;traits, typename Field::RandIter r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_m_g_block_lanczos_solver.html">MGBlockLanczosSolver</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>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const BlockLanczosTraits &amp;&#160;</td>
          <td class="paramname"><em>traits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename Field::RandIter&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor with a random iterator. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">F</td><td>Field over which to operate </td></tr>
    <tr><td class="paramname">traits</td><td><a class="el" href="struct_lin_box_1_1_solver_traits.html">SolverTraits</a> structure describing user options for the solver </td></tr>
    <tr><td class="paramname">r</td><td>Random iterator to use for randomization </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="aab28bb034aa20c85c2be57451c5ceee6"></a><!-- doxytag: member="LinBox::MGBlockLanczosSolver::solve" ref="aab28bb034aa20c85c2be57451c5ceee6" args="(const Blackbox &amp;A, Vector &amp;x, const Vector &amp;b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool solve </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">Vector &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Vector &amp;&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Solve the linear system Ax = b. </p>
<p>If the system is nonsingular, this method computes the unique solution to the system Ax = b. If the system is singular, it computes a random solution.</p>
<p>If the matrix A is nonsymmetric, this method preconditions the matrix A with the preconditioner D_1 A^T D_2 A D_1, where D_1 and D_2 are random nonsingular diagonal matrices. If the matrix A is symmetric, this method preconditions the system with A D, where D is a random diagonal matrix.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">A</td><td>Black box for the matrix A </td></tr>
    <tr><td class="paramname">x</td><td>Vector in which to store solution </td></tr>
    <tr><td class="paramname">b</td><td>Right-hand side of system </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true on success and false on failure </dd></dl>

</div>
</div>
<a class="anchor" id="ad6ba66df44b9a83fc626c1c6982e83c9"></a><!-- doxytag: member="LinBox::MGBlockLanczosSolver::sampleNullspace" ref="ad6ba66df44b9a83fc626c1c6982e83c9" args="(const Blackbox &amp;A, Matrix1 &amp;x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int sampleNullspace </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">Matrix1 &amp;&#160;</td>
          <td class="paramname"><em>x</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sample uniformly from the (right) nullspace of A. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">A</td><td>Black box for the matrix A </td></tr>
    <tr><td class="paramname">x</td><td>Matrix into whose columns to store nullspace elements </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Number of nullspace vectors found </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>mg-block-lanczos.h</li>
<li>block-lanczos.inl</li>
<li>mg-block-lanczos.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>