M4RIE  0.20120415
 All Data Structures Files Functions Variables Defines
trsm.h
Go to the documentation of this file.
00001 
00008 #ifndef TRSM_H
00009 #define TRSM_H
00010 
00011 /******************************************************************************
00012 *
00013 *            M4RIE: Linear Algebra over GF(2^e)
00014 *
00015 *    Copyright (C) 2011 Martin Albrecht <martinralbrecht@googlemail.com>
00016 *
00017 *  Distributed under the terms of the GNU General Public License (GEL)
00018 *  version 2 or higher.
00019 *
00020 *    This code is distributed in the hope that it will be useful,
00021 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
00022 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00023 *    General Public License for more details.
00024 *
00025 *  The full text of the GPL is available at:
00026 *
00027 *                  http://www.gnu.org/licenses/
00028 ******************************************************************************/
00029 
00030 #include <mzed.h>
00031 #include <mzd_slice.h>
00032 
00033 #define MZED_TRSM_CUTOFF 512 
00045 void _mzed_trsm_upper_left(const mzed_t *U, mzed_t *B, const rci_t cutoff);
00046 
00056 void mzed_trsm_upper_left_naive(const mzed_t *U, mzed_t *B);
00057 
00067 static inline void mzed_trsm_upper_left(const mzed_t *U, mzed_t *B) {
00068   _mzed_trsm_upper_left(U, B, MZED_TRSM_CUTOFF);
00069 }
00070 
00081 void _mzd_slice_trsm_upper_left(const mzd_slice_t *U, mzd_slice_t *B, const rci_t cutoff);
00082 
00092 void mzd_slice_trsm_upper_left_naive(const mzd_slice_t *U, mzd_slice_t *B);
00093 
00103 static inline void mzd_slice_trsm_upper_left(const mzd_slice_t *U, mzd_slice_t *B) {
00104   _mzd_slice_trsm_upper_left(U, B, MZED_TRSM_CUTOFF);
00105 }
00106 
00117 void _mzed_trsm_lower_left(const mzed_t *L, mzed_t *B, const rci_t cutoff);
00118 
00128 void mzed_trsm_lower_left_naive(const mzed_t *L, mzed_t *B);
00129 
00139 static inline void mzed_trsm_lower_left(const mzed_t *L, mzed_t *B) {
00140   _mzed_trsm_lower_left(L, B, MZED_TRSM_CUTOFF);
00141 }
00142 
00153 void _mzd_slice_trsm_lower_left(const mzd_slice_t *L, mzd_slice_t *B, const rci_t cutoff);
00154 
00164 void mzd_slice_trsm_lower_left_naive(const mzd_slice_t *L, mzd_slice_t *B);
00165 
00175 static inline void mzd_slice_trsm_lower_left(const mzd_slice_t *L, mzd_slice_t *B) {
00176   _mzd_slice_trsm_lower_left(L, B, MZED_TRSM_CUTOFF);
00177 }
00178 
00179 
00180 
00181 
00182 #endif //TRSM_H