M4RIE 20250128
Loading...
Searching...
No Matches
ple.h
Go to the documentation of this file.
1
7
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
54
55rci_t mzed_ple_naive(mzed_t *A, mzp_t *P, mzp_t *Q);
56
81
82rci_t _mzd_slice_ple(mzd_slice_t *A, mzp_t *P, mzp_t *Q, rci_t cutoff);
83
103
104static 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
124
125rci_t _mzd_slice_pluq(mzd_slice_t *A, mzp_t *P, mzp_t *Q, rci_t cutoff);
126
140
141static 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
172
173rci_t _mzed_ple(mzed_t *A, mzp_t *P, mzp_t *Q, rci_t cutoff);
174
178
179#define __M4RIE_PLE_CUTOFF (__M4RI_CPU_L2_CACHE<<2)
180
202
203static 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
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
rci_t _mzd_slice_ple(mzd_slice_t *A, mzp_t *P, mzp_t *Q, rci_t cutoff)
PLE decomposition: .
Definition ple.c:89
static rci_t mzd_slice_ple(mzd_slice_t *A, mzp_t *P, mzp_t *Q)
PLE decomposition: .
Definition ple.h:104
rci_t _mzd_slice_pluq(mzd_slice_t *A, mzp_t *P, mzp_t *Q, rci_t cutoff)
PLUQ decomposition: .
Definition ple.c:183
static rci_t mzed_ple(mzed_t *A, mzp_t *P, mzp_t *Q)
PLE decomposition: .
Definition ple.h:203
rci_t mzed_ple_naive(mzed_t *A, mzp_t *P, mzp_t *Q)
PLE decomposition: .
Definition ple.c:25
#define __M4RIE_PLE_CUTOFF
Definition ple.h:179
Dense matrices over represented as slices of matrices over .
Definition mzd_slice.h:56
rci_t nrows
Definition mzd_slice.h:58
rci_t ncols
Definition mzd_slice.h:59
Dense matrices over represented as packed matrices.
Definition mzed.h:59