It is easy to control what algorithms are used by decoding
, for
example if you want to replace unvariate polynomial multiplication
with your own function or if the ring you are implementing has
caracteristic 2.
The file include/decoding/rings/GF17.c
is an example of how to
use macros defined below.
#define R NAME
R
contains the name NAME
of the ring you are implementing. See
decoding-rings
(3) for details.
#define RING_COMM_CAR2
Tell decoding
that your ring has caracteristic 2. It is not
mandatory to specify it. When defined it activates certain fast
algorithms specific to caracteristic 2.
#define MY_UPOL_MUL myfunc
Replace default univariate polynomial multiplication by myfunc
.
See decoding-lowlevels
(3) for the prototype of my_func
.
#define MY_UPOL_SHIFT myfunc
Replace default univariate polynomial shifting by myfunc
.
See decoding-lowlevels
(3) for the prototype of my_func
.
#define MY_DBPOL_MUL myfunc
Replace default dense bivariate polynomial multiplication by myfunc
.
See decoding-lowlevels
(3) for the prototype of my_func
.
#define MY_DBPOL_SHIFT myfunc
Replace default dense bivariate polynomial shfting by myfunc
.
See decoding-lowlevels
(3) for the prototype of my_func
.
#define MY_UPOL_ROOTS myfunc
Replace default univariate root finding by myfunc
.
See decoding-lowlevels
(3) for the prototype of my_func
.
Note that decoding
provides no algorithm for univariate root
finding.
#define GF_MAGMA_DECL "k := GF(p^n)"
This macro is useful only for test purpose with MAGMA.
See decoding-rings
(3) for details.
Written by Guillaume Quintin (coincoin169g@gmail.com).
decoding-rings
(3),decoding-lowlevels
(3),
MAGMA(http://magma.maths.usyd.edu.au/magma/)