<!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 <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 Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="annotated.html"><span>Data 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 <stdlib.h></span> <span class="preprocessor">#include "m4ri/m4ri.h"</span> <span class="preprocessor">#include "cpucycles.h"</span> <span class="preprocessor">#include "walltime.h"</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 < 3) { <a name="a0"></a>m4ri_die(<span class="stringliteral">"Parameters m,n expected.\n"</span>); } <span class="keywordflow">if</span> (argc == 4) algorithm = argv[3]; <span class="keywordflow">else</span> algorithm = <span class="stringliteral">"m4ri"</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<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<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<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<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(&clockZero); t = cpucycles(); <span class="keywordflow">if</span>(strcmp(algorithm,<span class="stringliteral">"m4ri"</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">"pluq"</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">"mmpf"</span>)==0) r = <a name="a9"></a>_mzd_pluq_mmpf(A, <a name="a10"></a>mzp_init(A-><a name="a11"></a><a class="code" href="structmzd__t.html#a431207854b150a792cd98b9ae801129b">nrows</a>),mzp_init(A-><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">"naive"</span>)==0) r = <a name="a13"></a>mzd_echelonize_naive(A, 1); printf(<span class="stringliteral">"m: %5d, n: %5d, r: %5d, cpu cycles: %llu wall time: %lf\n"</span>,m, n, r, cpucycles() - t, walltime(&wt)); mzd_free(A); } </pre></div> </div> </div> <hr class="footer"/><address class="footer"><small>Generated on Sat Apr 23 2011 for M4RI 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>