11 #ifndef M4RIE_NEWTON_JOHN_H
12 #define M4RIE_NEWTON_JOHN_H
33 #include <m4rie/gf2e.h>
34 #include <m4rie/mzed.h>
35 #include <m4rie/mzd_slice.h>
228 mzd_process_rows(M->
x, startrow, endrow, startcol*M->
w, M->
w, T->
T->
x, T->
L);
247 mzd_process_rows2(M->
x, startrow, endrow, startcol*M->
w, 2*M->
w, T0->
T->
x, T0->
L, T1->
T->
x, T1->
L);
267 mzd_process_rows3(M->
x, startrow, endrow, startcol*M->
w, 3*M->
w, T0->
T->
x, T0->
L, T1->
T->
x, T1->
L, T2->
T->
x, T2->
L);
288 mzd_process_rows4(M->
x, startrow, endrow, startcol*M->
w, 4*M->
w, T0->
T->
x, T0->
L, T1->
T->
x, T1->
L, T2->
T->
x, T2->
L, T3->
T->
x, T3->
L);
310 mzd_process_rows5(M->
x, startrow, endrow, startcol*M->
w, 5*M->
w, T0->
T->
x, T0->
L, T1->
T->
x, T1->
L, T2->
T->
x, T2->
L, T3->
T->
x, T3->
L, T4->
T->
x, T4->
L);
335 mzd_process_rows6(M->
x, startrow, endrow, startcol*M->
w, 6*M->
w, T0->
T->
x, T0->
L, T1->
T->
x, T1->
L, T2->
T->
x, T2->
L, T3->
T->
x, T3->
L, T4->
T->
x, T4->
L, T5->
T->
x, T5->
L);
339 #endif //M4RIE_NEWTON_JOHN_H
Newton-John table.
Definition: newton_john.h:41
rci_t * L
Definition: newton_john.h:42
mzed_t * _mzed_mul_newton_john(mzed_t *C, const mzed_t *A, const mzed_t *B)
using Newton-John tables.
Definition: newton_john.c:412
Dense matrices over represented as packed matrices.
Definition: mzed.h:59
mzed_t * mzed_mul_newton_john(mzed_t *C, const mzed_t *A, const mzed_t *B)
using Newton-John tables.
Definition: newton_john.c:498
mzed_t * M
Definition: newton_john.h:43
mzd_t * x
Definition: mzed.h:60
rci_t mzed_ple_newton_john(mzed_t *A, mzp_t *P, mzp_t *Q)
PLE decomposition: using Newton-John tables.
Definition: newton_john.c:349
void mzed_trsm_lower_left_newton_john(const mzed_t *L, mzed_t *B)
using Newton-John tables.
Definition: newton_john.c:523
static void mzed_process_rows(mzed_t *M, const rci_t startrow, const rci_t endrow, rci_t startcol, const njt_mzed_t *T)
The function looks up 6 entries from position i,startcol in each row and adds the appropriate row fro...
Definition: newton_john.h:227
mzed_t * T
Definition: newton_john.h:44
void mzd_slice_trsm_upper_left_newton_john(const mzd_slice_t *U, mzd_slice_t *B)
using Newton-John tables.
Definition: newton_john.c:592
static void mzed_process_rows5(mzed_t *M, const rci_t startrow, const rci_t endrow, const rci_t startcol, const njt_mzed_t *T0, const njt_mzed_t *T1, const njt_mzed_t *T2, const njt_mzed_t *T3, const njt_mzed_t *T4)
Same as mzed_process_rows but works with five Newton-John tables in parallel.
Definition: newton_john.h:308
njt_mzed_t * mzed_make_table(njt_mzed_t *T, const mzed_t *A, const rci_t r, const rci_t c)
Construct Newton-John table T for row r of A, and element A[r,c].
Definition: newton_john.c:156
njt_mzed_t * njt_mzed_init(const gf2e *ff, const rci_t ncols)
Allocate Newton-John table of dimension gf2e::degree<<1 * ncols.
Definition: newton_john.c:32
static void mzed_process_rows2(mzed_t *M, const rci_t startrow, const rci_t endrow, const rci_t startcol, const njt_mzed_t *T0, const njt_mzed_t *T1)
Same as mzed_process_rows but works with two Newton-John tables in parallel.
Definition: newton_john.h:245
static void mzed_process_rows4(mzed_t *M, const rci_t startrow, const rci_t endrow, const rci_t startcol, const njt_mzed_t *T0, const njt_mzed_t *T1, const njt_mzed_t *T2, const njt_mzed_t *T3)
Same as mzed_process_rows but works with four Newton-John tables in parallel.
Definition: newton_john.h:286
void mzd_slice_trsm_lower_left_newton_john(const mzd_slice_t *L, mzd_slice_t *B)
using Newton-John tables.
Definition: newton_john.c:567
static void mzed_process_rows3(mzed_t *M, const rci_t startrow, const rci_t endrow, const rci_t startcol, const njt_mzed_t *T0, const njt_mzed_t *T1, const njt_mzed_t *T2)
Same as mzed_process_rows but works with three Newton-John tables in parallel.
Definition: newton_john.h:265
mzed_t * mzed_invert_newton_john(mzed_t *B, const mzed_t *A)
Invert the matrix A using Gauss-Newton-John elimination.
Definition: newton_john.c:508
void mzed_trsm_upper_left_newton_john(const mzed_t *U, mzed_t *B)
using Newton-John tables.
Definition: newton_john.c:545
rci_t mzed_echelonize_newton_john(mzed_t *A, int full)
Reduce matrix A to row echelon form using Gauss-Newton-John elimination.
Definition: newton_john.c:235
void njt_mzed_free(njt_mzed_t *t)
Free Newton-John table.
Definition: newton_john.c:40
mzed_t * _mzed_mul_newton_john0(mzed_t *C, const mzed_t *A, const mzed_t *B)
using Newton-John tables.
Definition: newton_john.c:399
static void mzed_process_rows6(mzed_t *M, const rci_t startrow, const rci_t endrow, const rci_t startcol, const njt_mzed_t *T0, const njt_mzed_t *T1, const njt_mzed_t *T2, const njt_mzed_t *T3, const njt_mzed_t *T4, const njt_mzed_t *T5)
Same as mzed_process_rows but works with six Newton-John tables in parallel.
Definition: newton_john.h:332
mzed_t * mzed_addmul_newton_john(mzed_t *C, const mzed_t *A, const mzed_t *B)
using Newton-John tables.
Definition: newton_john.c:503
Dense matrices over represented as slices of matrices over .
Definition: mzd_slice.h:56
wi_t w
Definition: mzed.h:64