<!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: PowerGaussDomain< _Field > 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 Page</span></a></li> <li><a href="pages.html"><span>Related 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 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 Structures</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Data 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_power_gauss_domain.html">PowerGaussDomain</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">PowerGaussDomain< _Field > Class Template Reference</div> </div> </div> <div class="contents"> <!-- doxytag: class="LinBox::PowerGaussDomain" --><!-- doxytag: inherits="LinBox::GaussDomain" --> <p>Repository of functions for rank modulo a prime power by elimination on sparse matrices. <a href="class_lin_box_1_1_power_gauss_domain.html#details">More...</a></p> <p><code>#include <smith-form-sparseelim-local.h></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 PowerGaussDomain< _Field >:</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_power_gauss_domain.png" usemap="#PowerGaussDomain< _Field >_map" alt=""/> <map id="PowerGaussDomain< _Field >_map" name="PowerGaussDomain< _Field >_map"> <area href="class_lin_box_1_1_gauss_domain.html" title="Repository of functions for rank by elimination on sparse matrices." alt="GaussDomain< _Field >" shape="rect" coords="0,0,184,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"><a class="anchor" id="ae75eed5521c9ead25a093ddec31baee9"></a><!-- doxytag: member="LinBox::PowerGaussDomain::PowerGaussDomain" ref="ae75eed5521c9ead25a093ddec31baee9" args="(const Field &F)" -->  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_power_gauss_domain.html#ae75eed5521c9ead25a093ddec31baee9">PowerGaussDomain</a> (const Field &F)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The field parameter is the domain over which to perform computations. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66be394bace6f92c18729a119581d7bd"></a><!-- doxytag: member="LinBox::PowerGaussDomain::field" ref="a66be394bace6f92c18729a119581d7bd" args="() const " --> const Field & </td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_gauss_domain.html#a66be394bace6f92c18729a119581d7bd">field</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">accessor for the field of computation <br/></td></tr> <tr><td class="memTemplParams" colspan="2">template<class Matrix , class Perm > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">unsigned long & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_gauss_domain.html#a10e9e1d9eed55ae330cc605fc871dedc">QLUPin</a> (unsigned long &rank, Element &determinant, Perm &Q, <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &L, <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &U, Perm &P, unsigned long Ni, unsigned long Nj) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sparse in place Gaussian elimination with reordering to reduce fill-in. <a href="#a10e9e1d9eed55ae330cc605fc871dedc"></a><br/></td></tr> <tr><td class="memTemplParams" colspan="2">template<class Matrix > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">unsigned long & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_gauss_domain.html#a15fc04b8a7f8f60d3bcc25fc665bc658">NoReordering</a> (unsigned long &rank, Element &determinant, <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &LigneA, unsigned long Ni, unsigned long Nj) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sparse Gaussian elimination without reordering. <a href="#a15fc04b8a7f8f60d3bcc25fc665bc658"></a><br/></td></tr> <tr><td class="memTemplParams" colspan="2">template<class Matrix > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">unsigned long & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_gauss_domain.html#a016d14c820675ea91cee3455936ad5e3">LUin</a> (unsigned long &rank, <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &A) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Dense in place LU factorization without reordering. <a href="#a016d14c820675ea91cee3455936ad5e3"></a><br/></td></tr> <tr><td class="memTemplParams" colspan="2">template<class Matrix > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">unsigned long & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_gauss_domain.html#a0ea789427aaeba698016d75673f35bd5">upperin</a> (unsigned long &rank, <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &A) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Dense in place Gaussian elimination without reordering. <a href="#a0ea789427aaeba698016d75673f35bd5"></a><br/></td></tr> <tr><td colspan="2"><div class="groupHeader">rank</div></td></tr> <tr><td colspan="2"><div class="groupText"><p>Callers of the different rank routines\</p> <p>-/ The "in" suffix indicates in place computation\ -/ Without Ni, Nj, the Matrix parameter must be a vector of sparse row vectors, NOT storing any zero.\ -/ Calls <a class="el" href="">rankinLinearPivoting</a> (by default) or <a class="el" href="">rankinNoReordering</a> </p> </div></td></tr> <tr><td class="memTemplParams" colspan="2"><a class="anchor" id="ade463e97ffaf17a2fe758e3f3f12dfa2"></a><!-- doxytag: member="LinBox::PowerGaussDomain::rankin" ref="ade463e97ffaf17a2fe758e3f3f12dfa2" args="(unsigned long &rank, Matrix &A, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const " --> template<class Matrix > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">unsigned long & </td><td class="memTemplItemRight" valign="bottom"><b>rankin</b> (unsigned long &rank, <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &A, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const </td></tr> <tr><td class="memTemplParams" colspan="2"><a class="anchor" id="a05d5a66398c68f4deb7d1804be3a07b2"></a><!-- doxytag: member="LinBox::PowerGaussDomain::rankin" ref="a05d5a66398c68f4deb7d1804be3a07b2" args="(unsigned long &rank, Matrix &A, unsigned long Ni, unsigned long Nj, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const " --> template<class Matrix > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">unsigned long & </td><td class="memTemplItemRight" valign="bottom"><b>rankin</b> (unsigned long &rank, <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &A, unsigned long Ni, unsigned long Nj, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const </td></tr> <tr><td class="memTemplParams" colspan="2"><a class="anchor" id="a931951c1218b6c2e0a94c17a83b690f6"></a><!-- doxytag: member="LinBox::PowerGaussDomain::rank" ref="a931951c1218b6c2e0a94c17a83b690f6" args="(unsigned long &rank, const Matrix &A, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const " --> template<class Matrix > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">unsigned long & </td><td class="memTemplItemRight" valign="bottom"><b>rank</b> (unsigned long &rank, const <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &A, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const </td></tr> <tr><td class="memTemplParams" colspan="2"><a class="anchor" id="a19985139fabda161db318610e5f4c8d4"></a><!-- doxytag: member="LinBox::PowerGaussDomain::rank" ref="a19985139fabda161db318610e5f4c8d4" args="(unsigned long &rank, const Matrix &A, unsigned long Ni, unsigned long Nj, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const " --> template<class Matrix > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">unsigned long & </td><td class="memTemplItemRight" valign="bottom"><b>rank</b> (unsigned long &rank, const <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &A, unsigned long Ni, unsigned long Nj, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const </td></tr> <tr><td colspan="2"><div class="groupHeader">det</div></td></tr> <tr><td colspan="2"><div class="groupText"><p>Callers of the different determinant routines\</p> <p>-/ The "in" suffix indicates in place computation\ -/ Without Ni, Nj, the Matrix parameter must be a vector of sparse row vectors, NOT storing any zero.\ -/ Calls <a class="el" href="">LinearPivoting</a> (by default) or <a class="el" href="class_lin_box_1_1_gauss_domain.html#a15fc04b8a7f8f60d3bcc25fc665bc658">NoReordering</a> </p> </div></td></tr> <tr><td class="memTemplParams" colspan="2"><a class="anchor" id="adaddd90073e31b6149b4809b1d200502"></a><!-- doxytag: member="LinBox::PowerGaussDomain::detin" ref="adaddd90073e31b6149b4809b1d200502" args="(Element &determinant, Matrix &A, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const " --> template<class Matrix > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">Element & </td><td class="memTemplItemRight" valign="bottom"><b>detin</b> (Element &determinant, <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &A, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const </td></tr> <tr><td class="memTemplParams" colspan="2"><a class="anchor" id="a5d103446dc42c24666b9dc26e668fa85"></a><!-- doxytag: member="LinBox::PowerGaussDomain::detin" ref="a5d103446dc42c24666b9dc26e668fa85" args="(Element &determinant, Matrix &A, unsigned long Ni, unsigned long Nj, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const " --> template<class Matrix > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">Element & </td><td class="memTemplItemRight" valign="bottom"><b>detin</b> (Element &determinant, <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &A, unsigned long Ni, unsigned long Nj, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const </td></tr> <tr><td class="memTemplParams" colspan="2"><a class="anchor" id="a6a3a26bb18b79063f081fc45aabe9fe0"></a><!-- doxytag: member="LinBox::PowerGaussDomain::det" ref="a6a3a26bb18b79063f081fc45aabe9fe0" args="(Element &determinant, const Matrix &A, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const " --> template<class Matrix > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">Element & </td><td class="memTemplItemRight" valign="bottom"><b>det</b> (Element &determinant, const <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &A, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const </td></tr> <tr><td class="memTemplParams" colspan="2"><a class="anchor" id="a171047f30a7b31c80c3d04871129fb6f"></a><!-- doxytag: member="LinBox::PowerGaussDomain::det" ref="a171047f30a7b31c80c3d04871129fb6f" args="(Element &determinant, const Matrix &A, unsigned long Ni, unsigned long Nj, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const " --> template<class Matrix > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">Element & </td><td class="memTemplItemRight" valign="bottom"><b>det</b> (Element &determinant, const <a class="el" href="class_lin_box_1_1_zero_one.html">Matrix</a> &A, unsigned long Ni, unsigned long Nj, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR) const </td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><h3>template<class _Field><br/> class LinBox::PowerGaussDomain< _Field ></h3> <p>Repository of functions for rank modulo a prime power by elimination on sparse matrices. </p> <dl><dt><b>Examples: </b></dt><dd> <p><a class="el" href="examples_2smith_8_c-example.html#_a8">examples/smith.C</a>, and <a class="el" href="examples_2smithvalence_8_c-example.html#_a11">examples/smithvalence.C</a>.</p> </dd> </dl></div><hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a10e9e1d9eed55ae330cc605fc871dedc"></a><!-- doxytag: member="LinBox::PowerGaussDomain::QLUPin" ref="a10e9e1d9eed55ae330cc605fc871dedc" args="(unsigned long &rank, Element &determinant, Perm &Q, Matrix &L, Matrix &U, Perm &P, unsigned long Ni, unsigned long Nj) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">unsigned long & QLUPin </td> <td>(</td> <td class="paramtype">unsigned long & </td> <td class="paramname"><em>rank</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">Element & </td> <td class="paramname"><em>determinant</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">Perm & </td> <td class="paramname"><em>Q</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">Matrix & </td> <td class="paramname"><em>L</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">Matrix & </td> <td class="paramname"><em>U</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">Perm & </td> <td class="paramname"><em>P</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned long </td> <td class="paramname"><em>Ni</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned long </td> <td class="paramname"><em>Nj</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Sparse in place Gaussian elimination with reordering to reduce fill-in. </p> <p>Pivots are chosen in sparsest column of sparsest row. This runs in linear overhead. It is similar in spirit but different from Markovitz' approach.</p> <dl class="pre"><dt><b>Precondition:</b></dt><dd>Using : SparseFindPivot(..., density) for sparsest column, and eliminate (..., density)</dd></dl> <p>The Matrix parameter must meet the <a class="el" href="namespace_lin_box.html" title="Namespace in which all linbox code resides.">LinBox</a> sparse matrix interface. [check details]. The computedet indicates whether the algorithm must compute the determionant as it goes</p> <dl class="bib"><dt><b><a class="el" href="bib.html#_bib000007">Bibliography:</a></b></dt><dd></dd></dl> <p>- Jean-Guillaume Dumas and Gilles Villard, <em>Computing the rank of sparse matrices over finite fields</em>. In Ganzha et~al. CASC'2002, pages 47--62. </p> </div> </div> <a class="anchor" id="a15fc04b8a7f8f60d3bcc25fc665bc658"></a><!-- doxytag: member="LinBox::PowerGaussDomain::NoReordering" ref="a15fc04b8a7f8f60d3bcc25fc665bc658" args="(unsigned long &rank, Element &determinant, Matrix &LigneA, unsigned long Ni, unsigned long Nj) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">unsigned long & NoReordering </td> <td>(</td> <td class="paramtype">unsigned long & </td> <td class="paramname"><em>rank</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">Element & </td> <td class="paramname"><em>determinant</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">Matrix & </td> <td class="paramname"><em>LigneA</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned long </td> <td class="paramname"><em>Ni</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned long </td> <td class="paramname"><em>Nj</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Sparse Gaussian elimination without reordering. </p> <p>Gaussian elimination is done on a copy of the matrix. Using : SparseFindPivot eliminate</p> <p>Requirements : SLA is an array of sparse rows WARNING : NOT IN PLACE, THERE IS A COPY. Without reordering (Pivot is first non-zero in row) </p> </div> </div> <a class="anchor" id="a016d14c820675ea91cee3455936ad5e3"></a><!-- doxytag: member="LinBox::PowerGaussDomain::LUin" ref="a016d14c820675ea91cee3455936ad5e3" args="(unsigned long &rank, Matrix &A) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">unsigned long & LUin </td> <td>(</td> <td class="paramtype">unsigned long & </td> <td class="paramname"><em>rank</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">Matrix & </td> <td class="paramname"><em>A</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Dense in place LU factorization without reordering. </p> <p>Using : FindPivot and LU </p> </div> </div> <a class="anchor" id="a0ea789427aaeba698016d75673f35bd5"></a><!-- doxytag: member="LinBox::PowerGaussDomain::upperin" ref="a0ea789427aaeba698016d75673f35bd5" args="(unsigned long &rank, Matrix &A) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">unsigned long & upperin </td> <td>(</td> <td class="paramtype">unsigned long & </td> <td class="paramname"><em>rank</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">Matrix & </td> <td class="paramname"><em>A</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Dense in place Gaussian elimination without reordering. </p> <p>Using : FindPivot and LU </p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>smith-form-sparseelim-local.h</li> </ul> </div> <hr class="footer"/><address class="footer"><small>Generated on Tue Aug 30 2011 for linbox by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> </body> </html>