# GUAVA: A Computer Algebra Package for Coding Theory

Juriaan Simonis

November 8, 1994

## What is GUAVA?

GUAVA is a share library package that implements coding theory algorithms. It has been developed by Reinald Baart, Jasper Cramwinckel and Erik Roijackers at Delft University of Technology and RWTH Aachen. Almost all of GUAVA has been written in the GAP language. GUAVA is distributed together with GAP.

## What is GAP?

GAP (Groups, Algorithms, and Programming) is a powerful computer algebra system designed for doing computations with algebraic structures like groups, finite fields, vector spaces etc.. It has been created at the Lehrstuhl für Mathematik, RWTH Aachen. GAP is freely obtainable by anonymous ftp from
samson.math.rwth-aachen.de (internet number 137.226.152.6). If you get GAP, the authors would like to be notified, e.g. by means of a short e-mail to
gap@samson.math.rwth-aachen.de.

## Features of GUAVA

An important data type in GAP is a ''record'', and the basic object in GUAVA is the ''code record''. A code record contains several components that give information about the code. Some of these components, like name, basefield and size, are mandatory. Other components, like minimumDistance, weightDistribution, coveringRadius and isSelfDualCode, are created in the course of a session and contain knowledge about the code. The use of these code records has proven to be very versatile.

The functions within GUAVA can be divided into four categories:

• Construction of codes. GUAVA can construct non-linear, linear and cyclic codes over an arbitrary finite field. Examples are HadamardCode, ReedMullerCode, BestKnownLinearCode, QRCode and GoppaCode.

• Manipulation of codes. These functions allow the user to transform one code into another or to construct a new code from two codes. Examples are PuncturedCode, DualCode, DirectProductCode and UUVCode.

• Computation of information about codes. This information is stored in the code record. Examples are MinimumDistance, OuterDistribution, IsSelfDualCode and AutomorphismGroup .

• Generation of bounds on linear codes. The table by Brouwer and Verhoeff is incorporated into GUAVA.

## Speed considerations

The most important parameter of a code is its minimum distance. To increase speed in the binary case, the code vectors are converted into Boolean lists (Blists). Then the distance of two vectors can be calculated by means of the (very fast) XOR instruction. In the linear case, a considerable improvement of the minimum distance canculation is obtained by taking advantage of the weight ordering of the information vectors. All this results in a calculation speed that is usually vastly superior to the speed of the commercial package MAGMA.

## The future of GUAVA

The following features are planned to be incorporated in GUAVA in the near future:

• Automorphism group computations. Presently, GUAVA computes the automorphism group of a code by means of external C programs written by J.S. Leon. These programs only work for binary, ternary and quaternary codes. We aim to implement the automorfism group calculations in GAP and to remove the restriction on the alphabet.

• Codes over rings. GUAVA can only handle codes over finite fields. The growing of interest of the coding community in Z_4-codes suggests an extension of the code alphabet to rings.

Special Purpose Systems

webmaster@can.nl