Constructions of generator matrices using the GUAVA package for GAP¶
This module only contains Guava wrappers (GUAVA is an optional GAP package).
AUTHORS:
 David Joyner (20051122, 20061203): initial version
 Nick Alexander (20061210): factor GUAVA code to guava.py
 David Joyner (200705): removed Golay codes, toric and trivial codes and placed them in code_constructions; renamed RandomLinearCode to RandomLinearCodeGuava
 David Joyner (200803): removed QR, XQR, cyclic and ReedSolomon codes
 David Joyner (200905): added “optional package” comments, fixed some docstrings to be sphinx compatible
REFERENCES:
[BM]  Bazzi and Mitter, {it Some constructions of codes from group actions}, (preprint March 2003, available on Mitter’s MIT website). 

sage.coding.guava.
QuasiQuadraticResidueCode
(p)¶ A (binary) quasiquadratic residue code (or QQR code).
Follows the definition of Proposition 2.2 in [BM]. The code has a generator matrix in the block form \(G=(Q,N)\). Here \(Q\) is a \(p \times p\) circulant matrix whose top row is \((0,x_1,...,x_{p1})\), where \(x_i=1\) if and only if \(i\) is a quadratic residue \(\mod p\), and \(N\) is a \(p \times p\) circulant matrix whose top row is \((0,y_1,...,y_{p1})\), where \(x_i+y_i=1\) for all \(i\).
INPUT:
p
– a prime \(>2\).
OUTPUT:
Returns a QQR code of length \(2p\).
EXAMPLES:
sage: C = codes.QuasiQuadraticResidueCode(11); C # optional  gap_packages (Guava package) [22, 11] linear code over GF(2)
These are selforthogonal in general and selfdual when \(p \\equiv 3 \\pmod 4\).
AUTHOR: David Joyner (112005)

sage.coding.guava.
RandomLinearCodeGuava
(n, k, F)¶ The method used is to first construct a \(k \times n\) matrix of the block form \((I,A)\), where \(I\) is a \(k \times k\) identity matrix and \(A\) is a \(k \times (nk)\) matrix constructed using random elements of \(F\). Then the columns are permuted using a randomly selected element of the symmetric group \(S_n\).
INPUT:
n,k
– integers with \(n>k>1\).
OUTPUT:
Returns a “random” linear code with length \(n\), dimension \(k\) over field \(F\).
EXAMPLES:
sage: C = codes.RandomLinearCodeGuava(30,15,GF(2)); C # optional  gap_packages (Guava package) [30, 15] linear code over GF(2) sage: C = codes.RandomLinearCodeGuava(10,5,GF(4,'a')); C # optional  gap_packages (Guava package) [10, 5] linear code over GF(4)
AUTHOR: David Joyner (112005)