1: #include
2: #include
3: #include
4: #include "../galois.h"
5: #include "../nc.h"
6:
7: int n,k,piece;
8: int r[3] = {0, 0, 0};
9:
10: void printa(int *a){
11: int i;
12:
13: for(i = 0; i < k; i++ ){
14: printf("%d ",*(a+i));
15: }
16: printf("\n");
17: }
18:
19: int check_full(Matrix8g &mat){
20: int i, j;
21: int temp;
22: int count = 0;
23: int a[100];
24: int cur;
25: Matrix8g mat_chk;
26: vector shift; /* shift used to move k non-zero elements
27: * and store the result */
28:
29: for(i = 0; i < n; i++){
30: mat_chk = Slice_matrix(mat, i*piece, piece);
31: if(0 == Is_full(mat_chk))
32: return 0;
33: }
34: /* Any k nodes combine into a k(n-k)*k(n-k) matrix *
35: * which is a full-rank matrix */
36: for(i = 0; i < k; i++){
37: a[i] = i;
38: }
39: cur = k-1;
40: do{
41: if(a[cur]-cur <= n-k){
42: for(i = 0; i < k; i+