M4RI 1.0.1
|
00001 00012 #ifndef STRASSEN_H 00013 #define STRASSEN_H 00014 /******************************************************************* 00015 * 00016 * M4RI: Linear Algebra over GF(2) 00017 * 00018 * Copyright (C) 2008 Martin Albrecht <M.R.Albrecht@rhul.ac.uk> 00019 * Copyright (C) 2008 Clement Pernet <pernet@math.washington.edu> 00020 * 00021 * Distributed under the terms of the GNU General Public License (GPL) 00022 * version 2 or higher. 00023 * 00024 * This code is distributed in the hope that it will be useful, 00025 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00026 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00027 * General Public License for more details. 00028 * 00029 * The full text of the GPL is available at: 00030 * 00031 * http://www.gnu.org/licenses/ 00032 * 00033 ********************************************************************/ 00034 00035 #include <math.h> 00036 #include "misc.h" 00037 #include "packedmatrix.h" 00038 #include "brilliantrussian.h" 00039 00053 mzd_t *mzd_mul(mzd_t *C, mzd_t *A, mzd_t *B, int cutoff); 00054 00069 mzd_t *mzd_addmul(mzd_t *C, mzd_t *A, mzd_t *B, int cutoff); 00070 00089 mzd_t *_mzd_mul_even(mzd_t *C, mzd_t *A, mzd_t *B, int cutoff); 00090 00110 mzd_t *_mzd_addmul_even(mzd_t *C, mzd_t *A, mzd_t *B, int cutoff); 00111 00127 mzd_t *_mzd_addmul (mzd_t *C, mzd_t *A, mzd_t *B, int cutoff); 00128 00137 mzd_t *_mzd_addmul_weird_weird (mzd_t *C, mzd_t *A, mzd_t *B, int cutoff); 00138 00147 mzd_t *_mzd_addmul_weird_even (mzd_t *C, mzd_t *A, mzd_t *B, int cutoff); 00148 00157 mzd_t *_mzd_addmul_even_weird (mzd_t *C, mzd_t *A, mzd_t *B, int cutoff); 00158 00164 #ifndef STRASSEN_MUL_CUTOFF 00165 #define STRASSEN_MUL_CUTOFF MIN(((int)sqrt((double)(4*CPU_L2_CACHE))),4096) 00166 #endif// STRASSEN_MUL_CUTOFF 00167 00168 #endif //STRASSEN_H