# Singular

#### D.10.1.12 sys_code

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

Usage:
sys_code(C); C is a matrix of constants

Return:
list L with:
 ``` L[1] is the generator matrix in standard form of an equivalent code, L[2] is the parity check matrix in standard form of such code, L[3] is an intvec which represents the needed permutation. ```

Note:
Computes a systematic code which is equivalent to the given one.
The input should be a matrix of numbers.
The output has to be interpreted as follows: if the input was the generator matrix of an AG code then one should apply the permutation L[3] to the divisor D of rational points by means of `permute_L(D,L[3]);` before continuing to work with the code (for instance, if you want to use the systematic encoding together with a decoding algorithm).

Example:
 ```LIB "brnoeth.lib"; ring s=3,T,lp; matrix C[2][5]=0,1,0,1,1,0,1,0,0,1; print(C); ==> 0,1,0,1,1, ==> 0,1,0,0,1 list L=sys_code(C); L[3]; ==> 2,4,3,1,5 // here is the generator matrix in standard form print(L[1]); ==> 1,0,0,0,1, ==> 0,1,0,0,0 // here is the control matrix in standard form print(L[2]); ==> 0, 0,1,0,0, ==> 0, 0,0,1,0, ==> -1,0,0,0,1 // we can check that both codes are dual to each other print(L[1]*transpose(L[2])); ==> 0,0,0, ==> 0,0,0 ```