M4RI
1.0.1
|
00001 00010 #ifndef M4RI_PLE_RUSSIAN 00011 #define M4RI_PLE_RUSSIAN 00012 00013 /******************************************************************* 00014 * 00015 * M4RI: Linear Algebra over GF(2) 00016 * 00017 * Copyright (C) 2008-2011 Martin Albrecht <M.R.Albrecht@rhul.ac.uk> 00018 * 00019 * Distributed under the terms of the GNU General Public License (GPL) 00020 * version 2 or higher. 00021 * 00022 * This code is distributed in the hope that it will be useful, 00023 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00024 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00025 * General Public License for more details. 00026 * 00027 * The full text of the GPL is available at: 00028 * 00029 * http://www.gnu.org/licenses/ 00030 * 00031 ********************************************************************/ 00032 00033 #include "mzd.h" 00034 #include "mzp.h" 00035 00056 rci_t _mzd_ple_russian(mzd_t *A, mzp_t *P, mzp_t *Q, int k); 00057 00075 rci_t _mzd_pluq_russian(mzd_t *A, mzp_t *P, mzp_t *Q, int k); 00076 00099 int _mzd_ple_submatrix(mzd_t *A, 00100 rci_t const start_row, rci_t const stop_row, 00101 rci_t const start_col, int const k, 00102 mzp_t *P, mzp_t *Q, rci_t *pivots, rci_t *done, rci_t *done_row, 00103 wi_t const splitblock); 00104 00125 void mzd_process_rows2_ple(mzd_t *M, rci_t startrow, rci_t stoprow, rci_t startcol, 00126 int const k0, mzd_t const *T0, rci_t const *E0, 00127 int const k1, mzd_t const *T1, rci_t const *E1); 00128 00129 void mzd_process_rows3_ple(mzd_t *M, rci_t startrow, rci_t stoprow, rci_t startcol, 00130 int const k0, mzd_t const *T0, rci_t const *E0, 00131 int const k1, mzd_t const *T1, rci_t const *E1, 00132 int const k2, mzd_t const *T2, rci_t const *E2); 00133 00134 void mzd_process_rows4_ple(mzd_t *M, rci_t startrow, rci_t stoprow, rci_t startcol, 00135 int const k0, mzd_t const *T0, rci_t const *E0, 00136 int const k1, mzd_t const *T1, rci_t const *E1, 00137 int const k2, mzd_t const *T2, rci_t const *E2, 00138 int const k3, mzd_t const *T3, rci_t const *E3); 00139 00150 mzd_t *_mzd_ple_to_e(mzd_t *E, mzd_t const *A, rci_t r, rci_t c, int k, rci_t *offsets); 00151 00152 #endif // M4RI_PLE_RUSSIAN