M4RI  1.0.1
mzp.h
Go to the documentation of this file.
1 
9 /******************************************************************************
10 *
11 * M4RI: Linear Algebra over GF(2)
12 *
13 * Copyright (C) 2008 Martin Albrecht <malb@informatik.uni-bremen.de>
14 *
15 * Distributed under the terms of the GNU General Public License (GPL)
16 * version 2 or higher.
17 *
18 * This code is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 * General Public License for more details.
22 *
23 * The full text of the GPL is available at:
24 *
25 * http://www.gnu.org/licenses/
26 ******************************************************************************/
27 
28 #ifndef M4RI_MZP
29 #define M4RI_MZP
30 
31 #include <m4ri/mzd.h>
32 
37 typedef struct mzp_t {
42 
48 
49 } mzp_t; // note that this is NOT mpz_t
50 
57 mzp_t *mzp_init(rci_t length);
58 
65 void mzp_free(mzp_t *P);
66 
78 mzp_t *mzp_init_window(mzp_t *P, rci_t begin, rci_t end);
79 
87 void mzp_free_window(mzp_t *condemned);
88 
100 void mzp_set_ui(mzp_t *P, unsigned int value);
101 
111 void mzd_apply_p_left(mzd_t *A, mzp_t const *P);
112 
122 void mzd_apply_p_left_trans(mzd_t *A, mzp_t const *P);
123 
133 void mzd_apply_p_right(mzd_t *A, mzp_t const *P);
134 
144 void mzd_apply_p_right_trans(mzd_t *A, mzp_t const *P);
145 
159 void mzd_apply_p_right_even_capped(mzd_t *A, mzp_t const *P, rci_t start_row, rci_t start_col);
160 
174 void mzd_apply_p_right_trans_even_capped(mzd_t *A, mzp_t const *P, rci_t start_row, rci_t start_col);
175 
185 void mzd_apply_p_right_trans(mzd_t *A, mzp_t const *P);
186 
196 void mzd_apply_p_right_trans_tri(mzd_t *A, mzp_t const *Q);
197 
204 void mzp_print(mzp_t const *P);
205 
216 void _mzd_compress_l(mzd_t *A, rci_t r1, rci_t n1, rci_t r2);
217 
218 #endif // M4RI_MZP