M4RIE  0.20111004
 All Data Structures Files Functions Variables Typedefs Macros Groups Pages
ple.h
Go to the documentation of this file.
1 
8 #ifndef M4RIE_PLE_H
9 #define M4RIE_PLE_H
10 
11 /******************************************************************************
12 *
13 * M4RIE: Linear Algebra over GF(2^e)
14 *
15 * Copyright (C) 2011 Martin Albrecht <martinralbrecht@googlemail.com>
16 *
17 * Distributed under the terms of the GNU General Public License (GEL)
18 * version 2 or higher.
19 *
20 * This code is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23 * General Public License for more details.
24 *
25 * The full text of the GPL is available at:
26 *
27 * http://www.gnu.org/licenses/
28 ******************************************************************************/
29 
30 #include <m4ri/m4ri.h>
31 #include <m4rie/mzed.h>
32 #include <m4rie/mzd_slice.h>
33 #include <m4rie/conversion.h>
34 
55 rci_t mzed_ple_naive(mzed_t *A, mzp_t *P, mzp_t *Q);
56 
82 rci_t _mzd_slice_ple(mzd_slice_t *A, mzp_t *P, mzp_t *Q, rci_t cutoff);
83 
104 static inline rci_t mzd_slice_ple(mzd_slice_t *A, mzp_t *P, mzp_t *Q) {
105  assert(P->length == A->nrows);
106  assert(Q->length == A->ncols);
107  return _mzd_slice_ple(A, P, Q, 0);
108 }
109 
125 rci_t _mzd_slice_pluq(mzd_slice_t *A, mzp_t *P, mzp_t *Q, rci_t cutoff);
126 
141 static inline rci_t mzd_slice_pluq(mzd_slice_t *A, mzp_t *P, mzp_t *Q) {
142  assert(P->length == A->nrows);
143  assert(Q->length == A->ncols);
144  return _mzd_slice_pluq(A, P, Q, 0);
145 }
146 
147 
173 rci_t _mzed_ple(mzed_t *A, mzp_t *P, mzp_t *Q, rci_t cutoff);
174 
179 #define __M4RIE_PLE_CUTOFF (__M4RI_CPU_L2_CACHE<<2)
180 
203 static inline rci_t mzed_ple(mzed_t *A, mzp_t *P, mzp_t *Q) {
204  return _mzed_ple(A, P, Q, __M4RIE_PLE_CUTOFF);
205 }
206 
207 #endif //M4RIE_PLE_H
rci_t _mzd_slice_pluq(mzd_slice_t *A, mzp_t *P, mzp_t *Q, rci_t cutoff)
PLUQ decomposition: .
Definition: ple.c:183
rci_t nrows
Definition: mzd_slice.h:58
Dense matrices over represented as packed matrices.
Definition: mzed.h:59
rci_t _mzd_slice_ple(mzd_slice_t *A, mzp_t *P, mzp_t *Q, rci_t cutoff)
PLE decomposition: .
Definition: ple.c:89
rci_t ncols
Definition: mzd_slice.h:59
static rci_t mzd_slice_pluq(mzd_slice_t *A, mzp_t *P, mzp_t *Q)
PLUQ decomposition: .
Definition: ple.h:141
rci_t _mzed_ple(mzed_t *A, mzp_t *P, mzp_t *Q, rci_t cutoff)
PLE decomposition: .
Definition: ple.c:74
static rci_t mzd_slice_ple(mzd_slice_t *A, mzp_t *P, mzp_t *Q)
PLE decomposition: .
Definition: ple.h:104
static rci_t mzed_ple(mzed_t *A, mzp_t *P, mzp_t *Q)
PLE decomposition: .
Definition: ple.h:203
#define __M4RIE_PLE_CUTOFF
Definition: ple.h:179
rci_t mzed_ple_naive(mzed_t *A, mzp_t *P, mzp_t *Q)
PLE decomposition: .
Definition: ple.c:25
Dense matrices over represented as slices of matrices over .
Definition: mzd_slice.h:56