M4RIE  0.20120415
 All Data Structures Files Functions Variables Defines
echelonform.h
Go to the documentation of this file.
00001 
00009 #ifndef M4RIE_ECHELONFORM_H
00010 #define M4RIE_ECHELONFORM_H
00011 
00012 /******************************************************************************
00013 *
00014 *            M4RIE: Linear Algebra over GF(2^e)
00015 *
00016 *    Copyright (C) 2010,2011 Martin Albrecht <martinralbrecht@googlemail.com>
00017 *
00018 *  Distributed under the terms of the GNU General Public License (GEL)
00019 *  version 2 or higher.
00020 *
00021 *    This code is distributed in the hope that it will be useful,
00022 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
00023 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00024 *    General Public License for more details.
00025 *
00026 *  The full text of the GPL is available at:
00027 *
00028 *                  http://www.gnu.org/licenses/
00029 ******************************************************************************/
00030 
00031 #include "mzed.h"
00032 #include "mzd_slice.h"
00033 #include "conversion.h"
00034 
00048 rci_t mzd_slice_echelonize_ple(mzd_slice_t *A, int full);
00049 
00067 static inline rci_t mzed_echelonize_ple(mzed_t *A, int full) {
00068   mzd_slice_t *a = mzed_slice(NULL, A);
00069   rci_t r = mzd_slice_echelonize_ple(a, full);
00070   mzed_cling(A, a);
00071   mzd_slice_free(a);
00072   return r;
00073 }
00074 
00087 #define mzd_slice_echelonize mzd_slice_echelonize_ple
00088 
00101 rci_t mzed_echelonize(mzed_t *A, int full);
00102 
00103 #endif //M4RIE_ECHELONFORM_H