15namespace layer1_foundations {
16namespace data_structures {
37 int f_v = (verbose_level >= 1);
41 cout <<
"bitmatrix::init" << endl;
52 for (i = 0; i <
m *
N; i++) {
56 cout <<
"bitmatrix::init done" << endl;
63 int f_v = (verbose_level >= 1);
68 cout <<
"bitmatrix::unrank_PG_elements_in_columns_consecutively" << endl;
71 cout <<
"bitmatrix::unrank_PG_elements_in_columns_consecutively F->q != 2" << endl;
77 for (j = 0; j <
n; j++) {
78 if ((j % n100) == 0) {
79 cout <<
"bitmatrix::unrank_PG_elements_in_columns_consecutively " << j / n100 <<
" % done unranking" << endl;
82 for (i = 0; i <
m; i++) {
89 cout <<
"bitmatrix::unrank_PG_elements_in_columns_consecutively done" << endl;
95 int *perms,
unsigned int *PG_ranks,
int verbose_level)
97 int f_v = (verbose_level >= 1);
106 cout <<
"bitmatrix::rank_PG_elements_in_columns" << endl;
109 cout <<
"bitmatrix::rank_PG_elements_in_columns F->q != 2" << endl;
119 for (j = 0; j <
n; j++) {
120 if ((j % n100) == 0) {
121 cout <<
"bitmatrix::rank_PG_elements_in_columns "
122 << j / n100 <<
" % done ranking" << endl;
124 for (i = 0; i <
m; i++) {
138 PG_ranks[j] = (
unsigned int) b;
142 cout <<
"bitmatrix::rank_PG_elements_in_columns done" << endl;
150 for (i = 0; i <
m; i++) {
151 for (j = 0; j <
MIN(
n, 10); j++) {
167 for (i = 0; i <
m *
N; i++) {
177 if (i < 0 || i >=
m) {
178 cout <<
"bitmatrix::s_ij addressing error, i = " << i <<
", m = " <<
m << endl;
181 if ( j < 0 || j >=
n ) {
182 cout <<
"bitmatrix::s_ij addressing error, j = " << j <<
", n = " <<
n << endl;
187 mask = ((uint32_t) 1) << bit;
188 uint32_t &x =
data[i *
N + jj];
200 if (i < 0 || i >=
m) {
201 cout <<
"bitmatrix::m_ij addressing error, i = " << i <<
", m = " <<
m << endl;
204 if ( j < 0 || j >=
n ) {
205 cout <<
"bitmatrix::m_ij addressing error, j = " << j <<
", n = " <<
n << endl;
210 mask = ((uint32_t) 1) << bit;
211 uint32_t &x =
data[i *
N + jj];
213 uint32_t not_mask = ~mask;
224 int f_v = (verbose_level >= 1);
229 cout <<
"bitmatrix::mult_int_matrix_from_the_left" << endl;
232 cout <<
"bitmatrix::mult_int_matrix_from_the_left An != m" << endl;
233 cout <<
"An=" << An << endl;
234 cout <<
"m=" <<
m << endl;
238 cout <<
"bitmatrix::mult_int_matrix_from_the_left Out->m != Am" << endl;
239 cout <<
"Am=" << Am << endl;
240 cout <<
"Out->m=" << Out->
m << endl;
244 cout <<
"bitmatrix::mult_int_matrix_from_the_left Out->n != n" << endl;
245 cout <<
"n=" <<
n << endl;
246 cout <<
"Out->n=" << Out->
n << endl;
250 for (i = 0; i < Am; i++) {
252 cout <<
"bitmatrix::mult_int_matrix_from_the_left row " << i <<
" : ";
254 for (j = 0; j < An; j++) {
259 for (h = 0; h <
N; h++) {
271 cout <<
"bitmatrix::mult_int_matrix_from_the_left done" << endl;
matrices over GF(2) stored as bitvectors
void m_ij(int i, int j, int a)
void init(int m, int n, int verbose_level)
void unrank_PG_elements_in_columns_consecutively(field_theory::finite_field *F, long int start_value, int verbose_level)
void mult_int_matrix_from_the_left(int *A, int Am, int An, bitmatrix *Out, int verbose_level)
void rank_PG_elements_in_columns(field_theory::finite_field *F, int *perms, unsigned int *PG_ranks, int verbose_level)
void PG_element_unrank_modified_lint(int *v, int stride, int len, long int a)
void PG_element_rank_modified_lint(int *v, int stride, int len, long int &a)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects