Specialized decoding algorithms exist for differential code,
those which are the duals of the standard algebraic-geometric codes.
These algorithms generally require as input another divisor on the curve
whose support is disjoint from the divisor defining the code.
An algebraic-geometric code with Goppa designated distance of 3
is used to correct one error.
> q := 8;
> F<a> := GF(q);
> PS<x,y,z> := ProjectiveSpace(F, 2);
> W := x^3*y + y^3*z + x*z^3;
> Cv := Curve(PS, W);
> FF<X,Y> := FunctionField(Cv);
> Pl := Places(Cv, 1);
> plc := Place(Cv ! [0,1,0]);
> P := [ Pl[i] : i in [1..#Pl] | Pl[i] ne plc ];
> G := 11*plc;
> C := AGDualCode(P, G);
>
> v := Random(C);
> rec_vec := v;
> rec_vec[Random(1,Length(C))] +:= Random(F);
> res := AGDecode(C, v, 4*plc);
> res eq v;
true
[Next][Prev] [Right] [Left] [Up] [Index] [Root]