13 #ifndef M4RI_BRILLIANTRUSSIAN_H
14 #define M4RI_BRILLIANTRUSSIAN_H
319 #endif // M4RI_BRILLIANTRUSSIAN_H
void mzd_make_table(mzd_t const *M, rci_t r, rci_t c, int k, mzd_t *T, rci_t *L)
Constructs all possible row combinations using the gray code table.
Definition: brilliantrussian.c:175
Dense matrices over GF(2).
Definition: mzd.h:86
int rci_t
Type of row and column indexes.
Definition: misc.h:72
mzd_t * mzd_mul_m4rm(mzd_t *C, mzd_t const *A, mzd_t const *B, int k)
Matrix multiplication using Konrod's method, i.e. compute C such that C == AB.
Definition: brilliantrussian.c:986
void mzd_process_rows4(mzd_t *M, rci_t startrow, rci_t endrow, rci_t startcol, int k, mzd_t const *T0, rci_t const *L0, mzd_t const *T1, rci_t const *L1, mzd_t const *T2, rci_t const *L2, mzd_t const *T3, rci_t const *L3)
Same as mzd_process_rows but works with four Gray code tables in parallel.
Definition: brilliantrussian.c:431
mzd_t * _mzd_mul_m4rm(mzd_t *C, mzd_t const *A, mzd_t const *B, int k, int clear)
Matrix multiplication using Konrod's method, i.e. compute C such that C == AB.
Definition: brilliantrussian.c:1021
void mzd_top_echelonize_m4ri(mzd_t *M, int k)
Given a matrix in upper triangular form compute the reduced row echelon form of that matrix...
Definition: brilliantrussian.c:953
rci_t _mzd_echelonize_m4ri(mzd_t *A, const int full, int k, int heuristic, const double threshold)
Definition: brilliantrussian.c:585
mzd_t * mzd_inv_m4ri(mzd_t *dst, const mzd_t *src, int k)
Invert the matrix src using Konrod's method.
Definition: brilliantrussian.c:957
void mzd_process_rows(mzd_t *M, rci_t startrow, rci_t endrow, rci_t startcol, int k, mzd_t const *T, rci_t const *L)
The function looks up k bits from position i,startcol in each row and adds the appropriate row from T...
Definition: brilliantrussian.c:226
mzd_t * mzd_addmul_m4rm(mzd_t *C, mzd_t const *A, mzd_t const *B, int k)
Definition: brilliantrussian.c:1001
rci_t _mzd_top_echelonize_m4ri(mzd_t *A, int k, rci_t r, rci_t c, rci_t max_r)
Given a matrix in upper triangular form compute the reduced row echelon form of that matrix but only ...
Definition: brilliantrussian.c:826
void mzd_process_rows2(mzd_t *M, rci_t startrow, rci_t endrow, rci_t startcol, int k, mzd_t const *T0, rci_t const *L0, mzd_t const *T1, rci_t const *L1)
Same as mzd_process_rows but works with two Gray code tables in parallel.
Definition: brilliantrussian.c:356
void mzd_process_rows5(mzd_t *M, rci_t startrow, rci_t endrow, rci_t startcol, int k, mzd_t const *T0, rci_t const *L0, mzd_t const *T1, rci_t const *L1, mzd_t const *T2, rci_t const *L2, mzd_t const *T3, rci_t const *L3, mzd_t const *T4, rci_t const *L4)
Same as mzd_process_rows but works with five Gray code tables in parallel.
Definition: brilliantrussian.c:477
void mzd_process_rows6(mzd_t *M, rci_t startrow, rci_t endrow, rci_t startcol, int k, mzd_t const *T0, rci_t const *L0, mzd_t const *T1, rci_t const *L1, mzd_t const *T2, rci_t const *L2, mzd_t const *T3, rci_t const *L3, mzd_t const *T4, rci_t const *L4, mzd_t const *T5, rci_t const *L5)
Same as mzd_process_rows but works with six Gray code tables in parallel.
Definition: brilliantrussian.c:527
void mzd_process_rows3(mzd_t *M, rci_t startrow, rci_t endrow, rci_t startcol, int k, mzd_t const *T0, rci_t const *L0, mzd_t const *T1, rci_t const *L1, mzd_t const *T2, rci_t const *L2)
Same as mzd_process_rows but works with three Gray code tables in parallel.
Definition: brilliantrussian.c:390