Decoding AG Codes#
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.
- AGDecode(C, v, Fd): CodeLinFld, ModTupFldElt, DivCrvElt -> ModTupFldElt#
Decode the received vector \(v\) of the dual algebraic geometric code \(C\) using the divisor \(Fd\).
- Example: AG Decode (ex-a1eda2)#
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