MeatAxe
2.4

zvp [Options] [g NGen] [l Limit] [s Start] [np] Man Seed Perm [Orbit]
This program reads a set of matrices and one or more vectors from Seed, and finds the orbit of the vector under the matrices. The action of the matrices on the orbit is written out in permutation form.
By default, two matrices are read from Mat.1 and Mat.2. You can specify a different number of matrices using the "g" option, but the naming scheme is always the same. All matrices must be square, over the same field, and of equal dimension. The seed space, Seed, must be a matrix over the same field and the number of columns must match the matrices.
The program tries seed vectors until no more seed vectors are available or the orbit is small enough (as specified by "l"). With "p" all vectors in the orbit file are normalized, i.e., their first nonzero entry is equal to one.
After initializing everything and reading the input files the program enters the main loop. The next seed vector is read in, or generated, and the orbit is set up initially to contain only this vector. Then, the complete orbit is calculated by applying the matrices to vectors in the orbit until no new vectors appear, or until the limit is reached. In the latter case, the program proceeds with the next seed vector. If an orbit has been found, the action of the two matrices on the orbit is written out in permutation format an appropriate message is printed. If the ‘v’ option was used, also the orbit is written out.
The matrices, seed vectors, and all vectors in the orbit must fit into memory.