|
D.10.2.1 sysCRHT
Procedure from library decodegb.lib (see decodegb_lib).
- Usage:
- sysCRHT(n,defset,e,q,m,[k]); n,e,q,m,k are int, defset list of int's
| - n length of the cyclic code,
- defset is a list representing the defining set,
- e the error-correcting capacity,
- q field size
- m degree extension of the splitting field,
- if k>0 additional equations representing the fact that every two
error positions are either different or at least one of them is zero
|
- Return:
- the ring to work with the CRHT-ideal (with Sala's additions),
containing an ideal with name 'crht'
- Theory:
- Based on 'defset' of the given cyclic code, the procedure constructs
the corresponding Cooper-Reed-Heleseth-Truong ideal 'crht'. With its
help one can solve the decoding problem. For basics of the method Cooper philosophy.
Example:
| LIB "decodegb.lib";
// binary cyclic [15,7,5] code with defining set (1,3)
intvec v = option(get);
list defset=1,3; // defining set
int n=15; // length
int e=2; // error-correcting capacity
int q=2; // basefield size
int m=4; // degree extension of the splitting field
int sala=1; // indicator to add additional equations
def A=sysCRHT(n,defset,e,q,m);
setring A;
A; // shows the ring we are working in
==> // coefficients: ZZ/2(a)
==> // number of vars : 6
==> // block 1 : ordering lp
==> // : names Y(2) Y(1) Z(1) Z(2) X(2) X(1)
==> // block 2 : ordering C
print(crht); // the CRHT-ideal
==> Y(2)*Z(2)+Y(1)*Z(1)+X(1),
==> Y(2)*Z(2)^3+Y(1)*Z(1)^3+X(2),
==> X(1)^16+X(1),
==> X(2)^16+X(2),
==> Z(1)^16+Z(1),
==> Z(2)^16+Z(2),
==> Y(1)+1,
==> Y(2)+1
option(redSB);
ideal red_crht=std(crht); // reduced Groebner basis
print(red_crht);
==> X(1)^16+X(1),
==> X(2)*X(1)^15+X(2),
==> X(2)^8+X(2)^4*X(1)^12+X(2)^2*X(1)^3+X(2)*X(1)^6,
==> Z(2)^2*X(1)+Z(2)*X(1)^2+X(2)+X(1)^3,
==> Z(2)^2*X(2)+Z(2)*X(2)*X(1)+X(2)^2*X(1)^14+X(2)*X(1)^2,
==> Z(2)^16+Z(2),
==> Z(1)+Z(2)+X(1),
==> Y(1)+1,
==> Y(2)+1
//============================
A=sysCRHT(n,defset,e,q,m,sala);
setring A;
print(crht); // CRHT-ideal with additional equations from Sala
==> Y(2)*Z(2)+Y(1)*Z(1)+X(1),
==> Y(2)*Z(2)^3+Y(1)*Z(1)^3+X(2),
==> X(1)^16+X(1),
==> X(2)^16+X(2),
==> Z(1)^16+Z(1),
==> Z(2)^16+Z(2),
==> Y(1)+1,
==> Y(2)+1,
==> Z(1)^15*Z(2)+Z(1)^14*Z(2)^2+Z(1)^13*Z(2)^3+Z(1)^12*Z(2)^4+Z(1)^11*Z(2)^5+\
Z(1)^10*Z(2)^6+Z(1)^9*Z(2)^7+Z(1)^8*Z(2)^8+Z(1)^7*Z(2)^9+Z(1)^6*Z(2)^10+Z\
(1)^5*Z(2)^11+Z(1)^4*Z(2)^12+Z(1)^3*Z(2)^13+Z(1)^2*Z(2)^14+Z(1)*Z(2)^15
option(redSB);
ideal red_crht=std(crht); // reduced Groebner basis
print(red_crht);
==> X(1)^16+X(1),
==> X(2)*X(1)^15+X(2),
==> X(2)^8+X(2)^4*X(1)^12+X(2)^2*X(1)^3+X(2)*X(1)^6,
==> Z(2)*X(1)^15+Z(2),
==> Z(2)^2+Z(2)*X(1)+X(2)*X(1)^14+X(1)^2,
==> Z(1)+Z(2)+X(1),
==> Y(1)+1,
==> Y(2)+1
red_crht[5]; // general error-locator polynomial for this code
==> Z(2)^2+Z(2)*X(1)+X(2)*X(1)^14+X(1)^2
option(set,v);
| See also:
sysBin;
sysNewton.
|