M4RI 1.0.1
strassen.h
Go to the documentation of this file.
00001 
00011 #ifndef M4RI_STRASSEN_H
00012 #define M4RI_STRASSEN_H
00013 
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 "packedmatrix.h"
00037 #include "brilliantrussian.h"
00038 
00052 mzd_t *mzd_mul(mzd_t *C, mzd_t const *A, mzd_t const *B, int cutoff);
00053 
00068 mzd_t *mzd_addmul(mzd_t *C, mzd_t const *A, mzd_t const *B, int cutoff);
00069 
00088 mzd_t *_mzd_mul_even(mzd_t *C, mzd_t const *A, mzd_t const *B, int cutoff);
00089 
00109 mzd_t *_mzd_addmul_even(mzd_t *C, mzd_t const *A, mzd_t const *B, int cutoff);
00110 
00126 mzd_t *_mzd_addmul (mzd_t *C, mzd_t const *A, mzd_t const *B, int cutoff);
00127 
00136 mzd_t *_mzd_addmul_weird_weird (mzd_t *C, mzd_t const *A, mzd_t const *B);
00137 
00146 mzd_t *_mzd_addmul_weird_even (mzd_t *C, mzd_t const *A, mzd_t const *B, int cutoff);
00147 
00156 mzd_t *_mzd_addmul_even_weird (mzd_t *C, mzd_t const *A, mzd_t const *B, int cutoff);
00157 
00163 #ifndef __M4RI_STRASSEN_MUL_CUTOFF
00164 #define __M4RI_STRASSEN_MUL_CUTOFF MIN(((int)sqrt((double)(4 * __M4RI_CPU_L2_CACHE))), 4096)
00165 #endif
00166 
00167 #endif // M4RI_STRASSEN_H