Constructions of generator matrices using the GUAVA package for GAP

This module only contains Guava wrappers (GUAVA is an optional GAP package).


  • David Joyner (2005-11-22, 2006-12-03): initial version

  • Nick Alexander (2006-12-10): factor GUAVA code to

  • David Joyner (2007-05): removed Golay codes, toric and trivial codes and placed them in code_constructions; renamed RandomLinearCode to RandomLinearCodeGuava

  • David Joyner (2008-03): removed QR, XQR, cyclic and ReedSolomon codes

  • David Joyner (2009-05): added “optional package” comments, fixed some docstrings to be sphinx compatible

  • Dima Pasechnik (2019-11): port to libgap


A (binary) quasi-quadratic residue code (or QQR code).

Follows the definition of Proposition 2.2 in [BM2003]. 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_{p-1})\), 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_{p-1})\), where \(x_i+y_i=1\) for all \(i\).


  • p – a prime \(>2\).


Returns a QQR code of length \(2p\).


sage: C = codes.QuasiQuadraticResidueCode(11); C   # optional - gap_packages (Guava package)
[22, 11] linear code over GF(2)

These are self-orthogonal in general and self-dual when \(p \\equiv 3 \\pmod 4\).

AUTHOR: David Joyner (11-2005)

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 (n-k)\) matrix constructed using random elements of \(F\). Then the columns are permuted using a randomly selected element of the symmetric group \(S_n\).


  • n,k – integers with \(n>k>1\).


Returns a “random” linear code with length \(n\), dimension \(k\) over field \(F\).


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 (11-2005)