Subclass Determination for Matrices.

DESCRIPTION:
Determines the class of a Matrix relative to the "Matrix" class structure.

USAGE:
Matrix.class(x, tol = 0, symmetry = T, unit.diagonal = T,
             triangularity = c(T, T), orthogonality = c(T, T),
             normality = c(T, T))

REQUIRED ARGUMENTS:
x:
a numeric or complex matrix.

OPTIONAL ARGUMENTS:
tol:
tolerance for the various tests. The default is 0.
symmetry:
a logical value indicating whether or not to test for symmetry (conjugate symmetry in the complex case). The default is to test for symmetry.
unit.diagonal:
a logical value indicating whether or not to test for a unit diagonal. The default is to test for a unit diagonal.
triangularity:
a logical vector of length indicating whether or not to test lower and/or upper triangularity, respectively. The default is to test for both lower and upper triangularity.
orthogonality:
a logical vector of length indicating whether or not to test row and/or column orthogonality, respectively. The default is to test for both row and column orthogonality.
normality:
a logical vector of length indicating whether or not to see if the rows and/or columns have norm one, respectively. The default is to test if both row and columns are normalized.

VALUE:
Returns a class for the matrix, relative to the "Matrix" class structure. The matrix will be of class "Matrix", but there may also subclasses depending on the options chosen and their results.

REFERENCES:
Golub, G., and Van Loan, C. F. (1989). Matrix Computations, 2nd edition, Johns Hopkins, Baltimore.

SEE ALSO:
is.Hermitian , is.LowerTriangular , is.Orthonormal .

EXAMPLES:
x <- Matrix( rnorm(9), 3, 3)
Matrix.class(x)
v <- rnorm(3)
v <- v /vecnorm(v)
x <- Diagonal(3) - 2 * (v %*% t(v))
Matrix.class(x)
Matrix.class(x, tol = sqrt(.Machine$double.eps))