33 #include <m4ri/m4ri.h>
34 #include "m4rie/gf2e.h"
40 #define M4RIE_CRT_LEN (M4RIE_MAX_DEGREE + 1)
66 extern const int costs[17];
73 int cost =
costs[p[0]];
75 cost +=
costs[d] * p[d];
mzd_t * H
Definition: blm.h:52
djb_t * h
Definition: blm.h:53
djb_t * g
Definition: blm.h:59
Bilinear Maps on Matrices over GF(2).
Definition: blm.h:51
blm_t * _blm_djb_compile(blm_t *f)
Compile DJB map for f.
Definition: blm.c:43
mzd_t * F
Definition: blm.h:55
int deg_t
Definition: gf2x.h:37
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:487
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
static int blm_cost_crt(const int p[M4RIE_CRT_LEN])
Definition: blm.h:72
int * crt_init(const deg_t f_len, const deg_t g_len)
Definition: blm.c:105
void blm_free(blm_t *f)
Definition: blm.c:611
#define M4RIE_CRT_LEN
We consider at most polynomials of degree M4RIE_MAX_DEGREE in CRT.
Definition: blm.h:40
mzd_t * G
Definition: blm.h:58
djb_t * f
Definition: blm.h:56
blm_t * _blm_finish_polymult(const gf2e *ff, blm_t *f)
Definition: blm.c:381
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 _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
const int costs[17]
Definition: blm.c:484