M4RI 20250128
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
37typedef struct mzp_t {
42
48
49} mzp_t; // note that this is NOT mpz_t
50
57mzp_t *mzp_init(rci_t length);
58
65void mzp_free(mzp_t *P);
66
78mzp_t *mzp_init_window(mzp_t *P, rci_t begin, rci_t end);
79
87void mzp_free_window(mzp_t *condemned);
88
96mzp_t *mzp_copy(mzp_t *P, const mzp_t *Q);
97
109void mzp_set_ui(mzp_t *P, unsigned int value);
110
120void mzd_apply_p_left(mzd_t *A, mzp_t const *P);
121
131void mzd_apply_p_left_trans(mzd_t *A, mzp_t const *P);
132
142void mzd_apply_p_right(mzd_t *A, mzp_t const *P);
143
153void mzd_apply_p_right_trans(mzd_t *A, mzp_t const *P);
154
166void mzd_apply_p_right_even_capped(mzd_t *A, mzp_t const *P, rci_t start_row, rci_t start_col);
167
179void mzd_apply_p_right_trans_even_capped(mzd_t *A, mzp_t const *P, rci_t start_row,
180 rci_t start_col);
181
191void mzd_apply_p_right_trans(mzd_t *A, mzp_t const *P);
192
202void mzd_apply_p_right_trans_tri(mzd_t *A, mzp_t const *Q);
203
210void mzp_print(mzp_t const *P);
211
222void _mzd_compress_l(mzd_t *A, rci_t r1, rci_t n1, rci_t r2);
223
224#endif // M4RI_MZP
int rci_t
Type of row and column indexes.
Definition misc.h:72
Dense matrices over GF(2) represented as a bit field.
struct mzp_t mzp_t
Permutations.
void mzd_apply_p_left_trans(mzd_t *A, mzp_t const *P)
Definition mzp.c:74
void mzd_apply_p_right(mzd_t *A, mzp_t const *P)
Definition mzp.c:257
void mzp_free_window(mzp_t *condemned)
Free a permutation window created with mzp_init_mzp_t_window().
Definition mzp.c:48
void mzd_apply_p_right_trans_tri(mzd_t *A, mzp_t const *Q)
Definition mzp.c:279
void mzd_apply_p_left(mzd_t *A, mzp_t const *P)
Definition mzp.c:65
void mzp_free(mzp_t *P)
Definition mzp.c:35
void mzp_print(mzp_t const *P)
Definition mzp.c:273
void mzd_apply_p_right_even_capped(mzd_t *A, mzp_t const *P, rci_t start_row, rci_t start_col)
Definition mzp.c:268
mzp_t * mzp_init(rci_t length)
Definition mzp.c:27
void mzd_apply_p_right_trans_even_capped(mzd_t *A, mzp_t const *P, rci_t start_row, rci_t start_col)
Definition mzp.c:262
mzp_t * mzp_copy(mzp_t *P, const mzp_t *Q)
copy permutation Q to P
Definition mzp.c:50
void _mzd_compress_l(mzd_t *A, rci_t r1, rci_t n1, rci_t r2)
Definition mzp.c:294
mzp_t * mzp_init_window(mzp_t *P, rci_t begin, rci_t end)
Create a window/view into the permutation P.
Definition mzp.c:40
void mzp_set_ui(mzp_t *P, unsigned int value)
Set the permutation P to the identity permutation. The only allowed value is 1.
Definition mzp.c:60
void mzd_apply_p_right_trans(mzd_t *A, mzp_t const *P)
Definition mzp.c:252
Dense matrices over GF(2).
Definition mzd.h:68
Permutations.
Definition mzp.h:37
rci_t * values
Definition mzp.h:41
rci_t length
Definition mzp.h:47