//---[CLO, Using ..., p. 431], Reed-Solomon [8,5,8-5+1] // codifica di w |--> c // posizioni di informazione: x^7,x^6,x^5,x^4,x^3 ring s = (3,a),x,lp; minpoly = a^2+a+2; poly g = (x-a)*(x-a^2)*(x-a^3); poly w = x^7+a*x^5+(a+1)*x^3; list d = division(w,g); poly resto = d[2][1]; poly c = w - resto; c; //---[CLO, Using Algebraic Geometry, p. 432] // 2-dimensional cyclic code [9,7] // codifica di w |--> c ring r = (2,a),(x,y),lp; minpoly = a^2+a+1; ideal I = x^3-1, y^3-1; qring q = std(I); ideal J = x^2+a^2*x*y+a*y, y+1; option(redSB); ideal G = std(J); poly w = x^2*y^2; poly resto = reduce(w,G); poly c = w - resto; c; lead(J); //posizioni di informazione: x^2,y, xy, x^2y,y^2,xy^2,x^2y^2 //--- posizioni di controllo: 1,x //---[CLO, Using ..., p. 426], Reed-Solomon [8,3,8-3+1] // codifica di w |--> c // posizioni di informazione: x^7,x^6,x^5 ring s = (3,a),x,lp; minpoly = a^2+a+2; poly g = (x-a)*(x-a^2)*(x-a^3)*(x-a^4)*(x-a^5); poly w = x^7+a*x^6+2*(a+2)*x^5; list d = division(w,g); poly resto = d[2][1]; poly c = w - resto; c; //---[CLO, Using ..., p. 445], Reed-Solomon [8,4,8-4+1] //--- si possono correggere 2 errori //--- c = x^7 + 2*x^5 + x^2 + 2x +1 //--- y = x^7 + a*x^5 + (a-1)*x^2 + 2*x + 1 //--- posizioni di informazione: x^7,x^6,x^5,x^4 //--- posizioni di controllo: x^3,x^2,x^1,1 ring s = (3,a),x,(lp,c); minpoly = a^2+a+2; //---codifica sistematica di w poly w = x^7 + 2*x^5; proc codifica (poly w) { poly g = (x-a)*(x-a^2)*(x-a^3)*(x-a^4); return(w-division(w,g)[2][1]); }; poly c = codifica(w); c; //---decodifica di y poly y = x^7 + a*x^5 + (a+2)*x^2 + 2*x + 1; proc decodifica (poly y) { poly syndrome = subst(y,x,a)+subst(y,x,a^2)*x+subst(y,x,a^3)*x^2+subst(y,x,a^4)*x^3; vector v1 = [x^4,0]; // 2*t = 4, d = 5 vector v2 = [syndrome,1]; module K = v1,v2; module G = std(K); //base ridotta di Groebner per il modulo K if (G[1]