34#include "m4rie/gf2e.h"
40#define M4RIE_CRT_LEN (M4RIE_MAX_DEGREE + 1)
66extern const int costs[17];
73 int cost = costs[p[0]];
75 cost += costs[d] * p[d];
static int blm_cost_crt(const int p[M4RIE_CRT_LEN])
Definition blm.h:72
blm_t * _blm_djb_compile(blm_t *f)
Compile DJB map for f.
Definition blm.c:43
int * crt_init(const deg_t f_len, const deg_t g_len)
Definition blm.c:105
void _mzd_ptr_apply_blm_djb(mzd_t **X, const mzd_t **A, const mzd_t **B, const blm_t *f)
Apply f (stored as a DJB map) on A and B, writing to X.
Definition blm.c:65
blm_t * blm_init_crt(const gf2e *ff, const deg_t f_ncols, const deg_t g_ncols, const int *p, int djb)
Definition blm.c:840
blm_t * _blm_finish_polymult(const gf2e *ff, blm_t *f)
Definition blm.c:734
#define M4RIE_CRT_LEN
We consider at most polynomials of degree M4RIE_MAX_DEGREE in CRT.
Definition blm.h:40
static void _mzd_ptr_apply_blm(mzd_t **X, const mzd_t **A, const mzd_t **B, const blm_t *f)
Apply f on A and B, writing to X.
Definition blm.h:153
void _mzd_ptr_apply_blm_mzd(mzd_t **X, const mzd_t **A, const mzd_t **B, const blm_t *f)
Apply f (stored as a matrix) on A and B, writing to X.
Definition blm.c:6
void blm_free(blm_t *f)
Definition blm.c:964
struct gf2e_struct gf2e
Definition gf2e.h:56
int deg_t
Definition gf2x.h:37
Bilinear Maps on Matrices over GF(2).
Definition blm.h:51
djb_t * g
Definition blm.h:59
djb_t * h
Definition blm.h:53
mzd_t * H
Definition blm.h:52
mzd_t * G
Definition blm.h:58
djb_t * f
Definition blm.h:56
mzd_t * F
Definition blm.h:55