zev man page
zev — compute matrix eigenvalues
zev [Options] <Matrix> [<Poly> [<Group>]]
This program reads a matrix from Matrix and a list of polynomials from Poly (or from the standard input). For each input polynomial, it evaluates that function of the input matrix, calculates the nullity, and puts out this nullity, divided by the degree, along with a text from the input.
The program was specifically designed to assist in the calculation of the Brauer characters of diagonalizable matrices, with the text giving the complex number which is the Brauer character of the companion matrix for that polynomial. Usually the polynomials have been prepared in a separate data file and are fed into zev by giving the file name or by redirecting its input. The preparation of the input polynomials is generally a time-consuming task if it is done by hand, but there are data files available for the most commonly used fields. These files should be located in the library directory. They are distributed with this release of the C MeatAxe. If the user is familiar with the computer program system GAP, he will find it easy to create his own data files.
If the nullity is not a multiple of the degree, zev prints a warning message.
Polynomial File Format
The data file contains the polynomials in text form. Several polynomials can be comprised in a group, and the data file can contain any number of groups of polynomials. This allows several sets of polynomials to be kept in one data file (for example, all polynomials for a given field), the appropriate polynomials being selected through the Group argument on the command line.
The file is read and interpreted line by line. There are three types of lines:
- Comment lines, beginning with a "#". These lines are simply ignored by zev, as are empty lines.
- Group headers. Each line beginning with a non-space character is interpreted as the beginning of a new group of polynomials. Such lines contain only one text field, the name of the group (up to 1023 characters).
Lines beginning with a space are interpreted as polynomials. The format is:
where Name is any text (up to 1023 characters), and Coefficients are the coefficients of the polynomial (in free format). Note that the first character must be an ordinary space charcter, a TAB is not allowed! The coefficients must use the names as specified by the arithmetic — usually 0, 1, ..., q-1. The one exception is -1, which the program treats specially as "0-1" so that the cyclotomic polynomials can be used over all fields. The coefficients are in decreasing degree, starting with the coefficient of the highest power of x and continuing, ending up with the constant term.
Here is an example:
# Sample input file for zev
# Some polynomials over GF(5)
1 1 4
b11 1 4 4 1 3 4
-1-b11 1 2 4 1 1 4
1 1 4
c13 1 3 0 3 1
c13*3 1 1 4 1 1
c13*9 1 2 1 2 1
This file contains 7 polynomials in two groups. The polynomial "b11" in group "p11b11" is x^5+4x^4+4x^3+x^2+3x+4.
There are two output formats. By default the nullities are printed in tabular form giving group, name, degree and multiplicity (i.e., nullity divided by degree) for each polynomial. If the -G option is given, zev prints an algebraic expression which can be read from GAP. Here is an example with an 8 by 8 matrix over GF(3), polynomials being read from "poly3":
$ zev mat poly3 p8i2
p8i2 1 1 1
p8i2 -1 1 4
p8i2 0 2 2
p8i2 i2 2 0
p8i2 -i2 2 1
$ zev -G mat poly3 p8i2
MeatAxe.BrauerChar := 1*(1) + 4*(-1) + 2*(0) + 1*(-i2);
Note that "i2" does not appear in the expression because its coefficient is zero.
Quiet, no messages.
Verbose, more messages.
- -T <MaxTime>
Set CPU time limit
- -G, --gap
Produce output in GAP format. This option implies -Q.
There must be enough memory to hold the input matrix and two more matrices of the same size. Lines in the polynomial input file must not be longer than 1023 characters.
It is not checked that the input file is a matrix. TAB characters at the beginning of a line are not interpreted as space.
A square matrix.
Polynomial definition file; read from standard input by default.