# Singular          #### D.10.1.9 decodeSV

Procedure from library `brnoeth.lib` (see brnoeth_lib).

Usage:
decodeSV( y, K ); y a row-matrix and K a list

Return:
a codeword (row-matrix) if possible, resp. the 0-matrix (of size 1) if decoding is impossible.
For decoding the basic (Skorobogatov-Vladut) decoding algorithm is applied.

Note:
The list_expression should be the output K of the procedure `prepSV`.
The matrix_expression should be a (1 x n)-matrix, where n = ncols(K).
The decoding may fail if the number of errors is greater than the correction capacity of the algorithm.

Example:
 ```LIB "brnoeth.lib"; int plevel=printlevel; printlevel=-1; ring s=2,(x,y),lp; list HC=Adj_div(x3+y2+y); ==> The genus of the curve is 1 HC=NSplaces(1..2,HC); HC=extcurve(2,HC); ==> Total number of rational places : NrRatPl = 9 def ER=HC; setring ER; intvec G=5; // the rational divisor G = 5*HC intvec D=2..9; // D = sum of the rational places no. 2..9 over F_4 // construct the corresp. residual AG code of type [8,3,>=5] over F_4: matrix C=AGcode_Omega(G,D,HC); ==> Vector basis successfully computed // we can correct 1 error and the genus is 1, thus F must have degree 2 // and support disjoint from that of D intvec F=2; list SV=prepSV(G,D,F,HC); ==> Vector basis successfully computed ==> Vector basis successfully computed ==> Vector basis successfully computed // now we produce 1 error on the zero-codeword : matrix y; y[1,3]=a; // and then we decode : print(decodeSV(y,SV)); ==> 0,0,0,0,0,0,0,0 printlevel=plevel; ``` 