				SnapPea Matrix Generators File Format

A generators file must begin with the line

	% Generators

to distinguish it from a triangulation file, which begins with
"% Triangulation", or a link projection file which begins with
"% Link Projection".  Next comes an integer telling how many matrices
are present.  The matrices may by in either O(3,1) or SL(2,C).
Orientation-reversing generators are allowed in O(3,1) but not in
PSL(2,C).  If the matrices are in SL(2,C), read_generators() will
convert them to O(3,1).  read_generators() can tell which format
you are using by comparing the total number of matrix entries to
the total number of matrices.  (SL(2,C) matrices contain 8 real entries
each, while O(3,1) matrices contain 16 real entries each.)

In PSL(2,C), the entries of a matrix

                a   b
                c   d

should be written as

        Re(a)    Im(a)
        Re(b)    Im(b)
        Re(c)    Im(c)
        Re(d)    Im(d).

Actually, the arrangement of the white space (blanks, tabs and returns)
is irrelevant, so if you prefer you may write a PSL(2,C) matrix as, say,

        Re(a)    Im(a)        Re(b)    Im(b)
        Re(c)    Im(c)        Re(d)    Im(d).

In O(3,1) the entries of each matrix should be written as

        m00  m01  m02  m03
        m10  m11  m12  m13
        m20  m21  m22  m23
        m30  m31  m32  m33

where the 0-th coordinate is the timelike one.  Again, the arrangement
of the white space is irrelevant.

Here are two sample files.

Sample #1.   PSL(2,C) generators for the Borromean rings complement.

% Generators
6
   0.000000000000000    0.000000000000000
   0.000000000000000   -1.000000000000000
   0.000000000000000   -1.000000000000000
   2.000000000000000    0.000000000000000

   0.000000000000000    0.000000000000000
   0.000000000000000    1.000000000000000
   0.000000000000000    1.000000000000000
   2.000000000000000    0.000000000000000

   1.000000000000000   -1.000000000000000
   0.000000000000000   -1.000000000000000
   0.000000000000000    1.000000000000000
   1.000000000000000    1.000000000000000

   1.000000000000000   -1.000000000000000
   0.000000000000000    1.000000000000000
   0.000000000000000   -1.000000000000000
   1.000000000000000    1.000000000000000

   1.000000000000000    0.000000000000000
  -2.000000000000000    0.000000000000000
   0.000000000000000    0.000000000000000
   1.000000000000000    0.000000000000000

   1.000000000000000    0.000000000000000
   0.000000000000000    0.000000000000000
  -2.000000000000000    0.000000000000000
   1.000000000000000    0.000000000000000

Sample #2.  O(3,1) generators for a mirrored regular ideal tetrahedron.

% Generators

4

 1.25        -0.433012    -0.433012    -0.433012
 0.433012     0.25        -0.75        -0.75    
 0.433012    -0.75         0.25        -0.75    
 0.433012    -0.75        -0.75         0.25    

 1.25        -0.433012    +0.433012    +0.433012
 0.433012     0.25        +0.75        +0.75    
-0.433012    +0.75         0.25        -0.75    
-0.433012    +0.75        -0.75         0.25    

 1.25        +0.433012    -0.433012    +0.433012
-0.433012     0.25        +0.75        -0.75    
 0.433012    +0.75         0.25        +0.75    
-0.433012    -0.75        +0.75         0.25    

 1.25        +0.433012    +0.433012    -0.433012
-0.433012     0.25        -0.75        +0.75    
-0.433012    -0.75         0.25        +0.75    
 0.433012    +0.75        +0.75         0.25    

(Note:  I truncated sqrt(3)/4 = 0.433012701892219323... to 0.433012
to fit the above matrices within the width of this window.
If you want to try out this example, please restore the
high-precision value.)
