M4RIE  0.20111004
 All Data Structures Files Functions Variables Typedefs Macros Groups Pages
echelonform.h
Go to the documentation of this file.
1 
9 #ifndef M4RIE_ECHELONFORM_H
10 #define M4RIE_ECHELONFORM_H
11 
12 /******************************************************************************
13 *
14 * M4RIE: Linear Algebra over GF(2^e)
15 *
16 * Copyright (C) 2010,2011 Martin Albrecht <martinralbrecht@googlemail.com>
17 *
18 * Distributed under the terms of the GNU General Public License (GEL)
19 * version 2 or higher.
20 *
21 * This code is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24 * General Public License for more details.
25 *
26 * The full text of the GPL is available at:
27 *
28 * http://www.gnu.org/licenses/
29 ******************************************************************************/
30 
31 #include <m4rie/mzed.h>
32 #include <m4rie/mzd_slice.h>
33 #include <m4rie/conversion.h>
34 
48 rci_t mzd_slice_echelonize_ple(mzd_slice_t *A, int full);
49 
67 static inline rci_t mzed_echelonize_ple(mzed_t *A, int full) {
68  mzd_slice_t *a = mzed_slice(NULL, A);
69  rci_t r = mzd_slice_echelonize_ple(a, full);
70  mzed_cling(A, a);
71  mzd_slice_free(a);
72  return r;
73 }
74 
87 #define mzd_slice_echelonize mzd_slice_echelonize_ple
88 
101 rci_t mzed_echelonize(mzed_t *A, int full);
102 
103 #endif //M4RIE_ECHELONFORM_H
static void mzd_slice_free(mzd_slice_t *A)
Free a matrix created with mzd_slice_init().
Definition: mzd_slice.h:145
Dense matrices over represented as packed matrices.
Definition: mzed.h:59
static rci_t mzed_echelonize_ple(mzed_t *A, int full)
Compute row echelon forms using PLE decomposition.
Definition: echelonform.h:67
mzed_t * mzed_cling(mzed_t *A, const mzd_slice_t *Z)
Pack a bitslice matrix into a packed represenation.
Definition: conversion.c:88
rci_t mzd_slice_echelonize_ple(mzd_slice_t *A, int full)
Compute row echelon forms using PLE decomposition.
Definition: echelonform.c:36
Dense matrices over represented as slices of matrices over .
Definition: mzd_slice.h:56
rci_t mzed_echelonize(mzed_t *A, int full)
Compute row echelon forms.
Definition: echelonform.c:26
mzd_slice_t * mzed_slice(mzd_slice_t *A, const mzed_t *Z)
Unpack the matrix Z into bitslice representation.
Definition: conversion.c:56