65.77 RootsCode

RootsCode( n, list )

This is the generalization of the BCH, Reed-Solomon and quadratic residue codes (see BCHCode, ReedSolomonCode and QRCode). The user can give a length of the code n and a prescribed set of zeros. The argument list must be a valid list of primitive <n>^{th} roots of unity in a splitting field GF(q^m). The resulting code will be over the field GF(q). The function will return the largest possible cyclic code for which the list list is a subset of the roots of the code. From this list, GUAVA calculates the entire set of roots.

    gap> a := PrimitiveUnityRoot( 3, 14 );
    Z(3^6)^52
    gap> C1 := RootsCode( 14, [ a^0, a, a^3 ] );
    a cyclic [14,7,3..6]3..7 code defined by roots over GF(3)
    gap> MinimumDistance( C1 );
    4
    gap> b := PrimitiveUnityRoot( 2, 15 );
    Z(2^4)
    gap> C2 := RootsCode( 15, [ b, b^2, b^3, b^4 ] );
    a cyclic [15,7,5]3..5 code defined by roots over GF(2)
    gap> C2 = BCHCode( 15, 5, GF(2) );
    true 

RootsCode( n, list, F )

In this second form, the second argument is a list of integers, ranging from 0 to n-1. The resulting code will be over a field F. GUAVA calculates a primitive <n>^{th} root of unity, alpha, in the extension field of F. It uses the set of the powers of alpha in the list as a prescribed set of zeros.

    gap> C := RootsCode( 4, [ 1, 2 ], GF(5) );
    a cyclic [4,2,3]2 code defined by roots over GF(5)
    gap> RootsOfCode( C );
    [ Z(5), Z(5)^2 ]
    gap> C = ReedSolomonCode( 4, 3 );
    true 

Previous Up Top Next
Index

GAP 3.4.4
April 1997