repthy
Class PMatrixModp

Object
  extended byMatrixModp
      extended byPMatrixModp
All Implemented Interfaces:
Comparable, GroupElt
Direct Known Subclasses:
PSLEltModp

public class PMatrixModp
extends MatrixModp

Square matrices modulo a byte p as in the superclass MatrixModp, but modulo scalar multiples of the identity. The underlying matrix is multiplied by a scalar so that the first non-zero entry in row-major order is 1.

Operations on two PMatrixModps will throw IllegalArgumentException if the degrees or the primes don't match.

All operations returning mod p values (matrix entries, det, etc.) will return least positive residues. The constructors convert all matrix entries to their least positive residues. If p is negative, it's silently made positive.

Author:
Mark McConnell

Constructor Summary
PMatrixModp(byte[][] x, byte p)
          Constructor extending MatrixModp.MatrixModp(byte[][], byte).
PMatrixModp(int n, byte[] x, byte p)
          Extends the "ρ" constructor MatrixModp.MatrixModp(int, byte[], byte).
PMatrixModp(MatrixModp x)
          Projectivizes its argument.
 
Method Summary
 boolean commutesWith(GroupElt y)
          Whether this and y commute.
 GroupElt conjugate(GroupElt y)
          Returns y * this * y^(-1).
 GroupElt conjugateYinvXY(GroupElt y)
          Returns y^(-1) * this * y.
 byte det()
          Return the determinant--but beware, the result is well-defined only up to n-th powers in the field.
 GroupElt getIdentity()
          Returns the identity element of the same class as this.
 GroupElt inverse()
          Returns the inverse element for this.
 boolean isOrthogonal(byte d)
          Whether this preserves the quadratic form {1,1,d} up to scalar multiples.
 GroupElt mult(GroupElt y)
          Returns the product this * y.
protected  void projectivize(byte[][] a)
          Overwrites its argument with a scalar multiple so that the first non-zero entry in row-major order is 1.
 
Methods inherited from class MatrixModp
compareTo, det, equals, getEntry, getOrder, getP, getSize, hashCode, isDiagonal, isIdentity, isJordanCanonical, isPermShaped, isSignedPerm, isUnipotentUpperTriangular, isUpperTriangular, main, power, toString
 
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PMatrixModp

public PMatrixModp(byte[][] x,
                   byte p)
Constructor extending MatrixModp.MatrixModp(byte[][], byte).


PMatrixModp

public PMatrixModp(MatrixModp x)
Projectivizes its argument.


PMatrixModp

public PMatrixModp(int n,
                   byte[] x,
                   byte p)
Extends the "ρ" constructor MatrixModp.MatrixModp(int, byte[], byte).

Method Detail

projectivize

protected void projectivize(byte[][] a)
Overwrites its argument with a scalar multiple so that the first non-zero entry in row-major order is 1. Assumes a is square and all entries are least positive residues; the result is in the same form.


isOrthogonal

public boolean isOrthogonal(byte d)
Whether this preserves the quadratic form {1,1,d} up to scalar multiples. If d is not zero mod p and p > 2, the group of all orthogonal matrices depends up to isomorphism only on whether d is a quadratic residue mod p.


det

public final byte det()
Return the determinant--but beware, the result is well-defined only up to n-th powers in the field.

Overrides:
det in class MatrixModp

mult

public GroupElt mult(GroupElt y)
Description copied from interface: GroupElt
Returns the product this * y. The operation must be associative.

Specified by:
mult in interface GroupElt
Overrides:
mult in class MatrixModp

inverse

public GroupElt inverse()
Description copied from interface: GroupElt
Returns the inverse element for this.

Specified by:
inverse in interface GroupElt
Overrides:
inverse in class MatrixModp

getIdentity

public GroupElt getIdentity()
Description copied from interface: GroupElt
Returns the identity element of the same class as this.

Specified by:
getIdentity in interface GroupElt
Overrides:
getIdentity in class MatrixModp

conjugate

public GroupElt conjugate(GroupElt y)
Description copied from interface: GroupElt
Returns y * this * y^(-1). Compare GroupElt.conjugateYinvXY(repthy.GroupElt).

Specified by:
conjugate in interface GroupElt
Overrides:
conjugate in class MatrixModp

conjugateYinvXY

public GroupElt conjugateYinvXY(GroupElt y)
Description copied from interface: GroupElt
Returns y^(-1) * this * y. Compare GroupElt.conjugate(repthy.GroupElt).

Specified by:
conjugateYinvXY in interface GroupElt
Overrides:
conjugateYinvXY in class MatrixModp

commutesWith

public boolean commutesWith(GroupElt y)
Description copied from interface: GroupElt
Whether this and y commute.

Specified by:
commutesWith in interface GroupElt
Overrides:
commutesWith in class MatrixModp