M4RI 1.0.1
|
00001 00009 /****************************************************************************** 00010 * 00011 * M4RI: Linear Algebra over GF(2) 00012 * 00013 * Copyright (C) 2008 Martin Albrecht <malb@informatik.uni-bremen.de> 00014 * 00015 * Distributed under the terms of the GNU General Public License (GPL) 00016 * version 2 or higher. 00017 * 00018 * This code is distributed in the hope that it will be useful, 00019 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00021 * General Public License for more details. 00022 * 00023 * The full text of the GPL is available at: 00024 * 00025 * http://www.gnu.org/licenses/ 00026 ******************************************************************************/ 00027 00028 #ifndef M4RI_PERMUTATION_H 00029 #define M4RI_PERMUTATION_H 00030 00031 #include "packedmatrix.h" 00032 00037 typedef struct mzp_t { 00041 rci_t *values; 00042 00047 rci_t length; 00048 00049 } mzp_t; // note that this is NOT mpz_t 00050 00057 mzp_t *mzp_init(rci_t length); 00058 00065 void mzp_free(mzp_t *P); 00066 00078 mzp_t *mzp_init_window(mzp_t *P, rci_t begin, rci_t end); 00079 00087 void mzp_free_window(mzp_t *condemned); 00088 00100 void mzp_set_ui(mzp_t *P, unsigned int value); 00101 00111 void mzd_apply_p_left(mzd_t *A, mzp_t const *P); 00112 00122 void mzd_apply_p_left_trans(mzd_t *A, mzp_t const *P); 00123 00133 void mzd_apply_p_right(mzd_t *A, mzp_t const *P); 00134 00144 void mzd_apply_p_right_trans(mzd_t *A, mzp_t const *P); 00145 00159 void mzd_apply_p_right_even_capped(mzd_t *A, mzp_t const *P, rci_t start_row, rci_t start_col); 00160 00174 void mzd_apply_p_right_trans_even_capped(mzd_t *A, mzp_t const *P, rci_t start_row, rci_t start_col); 00175 00185 void mzd_apply_p_right_trans(mzd_t *A, mzp_t const *P); 00186 00196 void mzd_apply_p_right_trans_tri(mzd_t *A, mzp_t const *Q); 00197 00204 void mzp_print(mzp_t const *P); 00205 00216 void _mzd_compress_l(mzd_t *A, rci_t r1, rci_t n1, rci_t r2); 00217 00218 #endif // M4RI_PERMUTATION_H