source: CIVL/examples/omp/m4ri/tests/test_elimination.c@ bb03188

main test-branch
Last change on this file since bb03188 was ea777aa, checked in by Alex Wilton <awilton@…>, 3 years ago

Moved examples, include, build_default.properties, common.xml, and README out from dev.civl.com into the root of the repo.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5704 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 2.9 KB
Line 
1#include <m4ri/config.h>
2#include <stdlib.h>
3#include <m4ri/m4ri.h>
4
5int elim_test_equality(rci_t nr, rci_t nc) {
6 int ret = 0;
7
8 printf("elim: m: %4d, n: %4d ", nr, nc);
9
10 mzd_t *A = mzd_init(nr, nc);
11 mzd_randomize(A);
12 mzd_t *B = mzd_copy(NULL, A);
13 mzd_t *C = mzd_copy(NULL, A);
14 mzd_t *D = mzd_copy(NULL, A);
15 mzd_t *E = mzd_copy(NULL, A);
16 mzd_t *F = mzd_copy(NULL, A);
17 mzd_t *G = mzd_copy(NULL, A);
18
19 /* M4RI k=auto */
20 rci_t ra = mzd_echelonize_m4ri(A, 1, 0);
21
22 /* M4RI k=8 */
23 rci_t rb = mzd_echelonize_m4ri(B, 1, 8);
24
25 /* M4RI Upper Triangular k=auto*/
26 rci_t rc = mzd_echelonize_m4ri(C, 0, 0);
27 mzd_top_echelonize_m4ri(C, 0);
28
29 /* M4RI Upper Triangular k=4*/
30 rci_t rd = mzd_echelonize_m4ri(D, 0, 4);
31 mzd_top_echelonize_m4ri(D, 4);
32
33 /* Gauss */
34 rci_t re = mzd_echelonize_naive(E, 1);
35
36 /* Gauss Upper Triangular */
37 rci_t rf = mzd_echelonize_naive(F, 0);
38 mzd_top_echelonize_m4ri(F, 0);
39
40 /* PLUQ */
41 rci_t rg = mzd_echelonize_pluq(G, 1);
42
43 if(mzd_equal(A, B) != TRUE || ra != rb) {
44 printf("A != B ");
45 ret -= 1;
46 }
47
48 if(mzd_equal(B, C) != TRUE || rb != rc) {
49 printf("B != C ");
50 ret -= 1;
51 }
52
53 if(mzd_equal(C, D) != TRUE || rc != rd) {
54 printf("C != D ");
55 ret -= 1;
56 }
57
58 if(mzd_equal(D, E) != TRUE || rd != re) {
59 printf("D != E ");
60 ret -= 1;
61 }
62
63 if(mzd_equal(E, F) != TRUE || re != rf) {
64 printf("E != F ");
65 ret -= 1;
66 }
67
68 if(mzd_equal(F, G) != TRUE || rf != rg) {
69 printf("F != G ");
70 ret -= 1;
71 }
72 if(mzd_equal(G, A) != TRUE || rg != ra) {
73 printf("G != A ");
74 ret -= 1;
75 }
76
77
78 mzd_free(A);
79 mzd_free(B);
80 mzd_free(C);
81 mzd_free(D);
82 mzd_free(E);
83 mzd_free(F);
84 mzd_free(G);
85
86 if(ret == 0) {
87 printf(" ... passed\n");
88 } else {
89 printf(" ... FAILED\n");
90 }
91 return ret;
92}
93
94int main() {
95 int status = 0;
96
97 srandom(17);
98
99 status += elim_test_equality(4, 67);
100 status += elim_test_equality(17, 121);
101 status += elim_test_equality(65, 17);
102 status += elim_test_equality(128, 128);
103 status += elim_test_equality(1024, 1024);
104 status += elim_test_equality(2047, 2047);
105 status += elim_test_equality(65, 65);
106
107 status += elim_test_equality(100, 100);
108 status += elim_test_equality(21, 171);
109 status += elim_test_equality(31, 121);
110 status += elim_test_equality(193, 65);
111 status += elim_test_equality(1025, 1025);
112 status += elim_test_equality(2048, 2048);
113 status += elim_test_equality(64, 64);
114 status += elim_test_equality(128, 128);
115 status += elim_test_equality(4096, 3528);
116 status += elim_test_equality(1024, 1025);
117 status += elim_test_equality(1000, 1000);
118 status += elim_test_equality(1000, 10);
119 status += elim_test_equality(1710, 1290);
120 status += elim_test_equality(1290, 1710);
121 status += elim_test_equality(1290, 1710);
122 status += elim_test_equality(1290, 1290);
123 status += elim_test_equality(1000, 210);
124
125 if (status == 0) {
126 printf("All tests passed.\n");
127 return 0;
128 } else {
129 return -1;
130 }
131}
Note: See TracBrowser for help on using the repository browser.