M4RIE
0.20120415
|
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