Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 925d05e241dbe3b9ea38e50d2b88728b > files > 104

m4ri-devel-20100817-1.fc15.i686.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>M4RI: testsuite/bench_elimination.c</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 -->
<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">M4RI&#160;<span id="projectnumber">1.0.1</span></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="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="headertitle">
<div class="title">testsuite/bench_elimination.c</div>  </div>
</div>
<div class="contents">
<dl class="user"><dt><b>Ignores offset atrtribute of packedmatrix.</b></dt><dd></dd></dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Rank of A.</dd></dl>
<div class="fragment"><pre class="fragment"><span class="preprocessor">#include &lt;stdlib.h&gt;</span>

<span class="preprocessor">#include &quot;m4ri/m4ri.h&quot;</span>
<span class="preprocessor">#include &quot;cpucycles.h&quot;</span>
<span class="preprocessor">#include &quot;walltime.h&quot;</span>

<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {
  <span class="keywordtype">int</span> halfrank = 0;
  <span class="keywordtype">size_t</span> m, n, r;
  <span class="keyword">const</span> <span class="keywordtype">char</span> *algorithm;
  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> t;
  <span class="keywordtype">double</span> wt;
  <span class="keywordtype">double</span> clockZero = 0.0;

  <span class="keywordflow">if</span> (argc &lt; 3) {
    <a name="a0"></a>m4ri_die(<span class="stringliteral">&quot;Parameters m,n expected.\n&quot;</span>);
  }
  <span class="keywordflow">if</span> (argc == 4)
    algorithm = argv[3];
  <span class="keywordflow">else</span>
    algorithm = <span class="stringliteral">&quot;m4ri&quot;</span>;
  m = atoi(argv[1]);
  n = atoi(argv[2]);
  <a name="_a1"></a><a class="code" href="structmzd__t.html" title="Dense matrices over GF(2).">mzd_t</a> *A = <a name="a2"></a>mzd_init(m, n);
  <span class="keywordflow">if</span> (!halfrank) {
    <a name="a3"></a>mzd_randomize(A);
  } <span class="keywordflow">else</span> {
    <a class="code" href="structmzd__t.html" title="Dense matrices over GF(2).">mzd_t</a> *L, *U;
    L = mzd_init(m, m);
    U = mzd_init(m, n);
    mzd_randomize(U);
    mzd_randomize(L);
    <span class="keywordtype">size_t</span> i,j;
    <span class="keywordflow">for</span> (i=0; i&lt;m; ++i){
      <a name="a4"></a><a class="code" href="packedmatrix_8h.html#a279d49adacd0f08fbcf9d3936c1774a4" title="Write the bit value to position M[row,col].">mzd_write_bit</a>(U,i,i, 1);
      <span class="keywordflow">for</span> (j=0; j&lt;i;++j)
        <a class="code" href="packedmatrix_8h.html#a279d49adacd0f08fbcf9d3936c1774a4" title="Write the bit value to position M[row,col].">mzd_write_bit</a>(U,i,j, 0);
      <span class="keywordflow">if</span> (i%2)
        <span class="keywordflow">for</span> (j=i; j&lt;n;++j)
          <a class="code" href="packedmatrix_8h.html#a279d49adacd0f08fbcf9d3936c1774a4" title="Write the bit value to position M[row,col].">mzd_write_bit</a>(U,i,j, 0);
      <span class="keywordflow">for</span> (j=i+1; j&lt;m;++j)
        <a class="code" href="packedmatrix_8h.html#a279d49adacd0f08fbcf9d3936c1774a4" title="Write the bit value to position M[row,col].">mzd_write_bit</a>(L,i,j, 0);
      <a class="code" href="packedmatrix_8h.html#a279d49adacd0f08fbcf9d3936c1774a4" title="Write the bit value to position M[row,col].">mzd_write_bit</a>(L,i,i, 1);
    }
    <a name="a5"></a>mzd_mul(A,L,U,0);
    <a name="a6"></a>mzd_free(L);
    mzd_free(U);
  }
  wt = walltime(&amp;clockZero);
  t = cpucycles();
  <span class="keywordflow">if</span>(strcmp(algorithm,<span class="stringliteral">&quot;m4ri&quot;</span>)==0)
    r = <a name="a7"></a>mzd_echelonize_m4ri(A, 1, 0);
  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(algorithm,<span class="stringliteral">&quot;pluq&quot;</span>)==0)
    r = <a name="a8"></a>mzd_echelonize_pluq(A, 1);
  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(algorithm,<span class="stringliteral">&quot;mmpf&quot;</span>)==0)
    r = <a name="a9"></a>_mzd_pluq_mmpf(A, <a name="a10"></a>mzp_init(A-&gt;<a name="a11"></a><a class="code" href="structmzd__t.html#a431207854b150a792cd98b9ae801129b">nrows</a>),mzp_init(A-&gt;<a name="a12"></a><a class="code" href="structmzd__t.html#afc8515ec2757e92d80dd198b33bc3cab">ncols</a>),0);
  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(algorithm,<span class="stringliteral">&quot;naive&quot;</span>)==0)
    r = <a name="a13"></a>mzd_echelonize_naive(A, 1);
  printf(<span class="stringliteral">&quot;m: %5d, n: %5d, r: %5d, cpu cycles: %llu wall time: %lf\n&quot;</span>,m, n, r, cpucycles() - t, walltime(&amp;wt));

  mzd_free(A);
}
</pre></div> </div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Sat Apr 23 2011 for M4RI 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>