Reordered Schur Factorization

DESCRIPTION:
Reorders the Schur factorization of a square matrix.

USAGE:
schurmod(x, indexes=<see below>, vectors=<see below>)

REQUIRED ARGUMENTS:
x:
an object of class schur.Matrix.

OPTIONAL ARGUMENTS:
indexes:
a integer vector of length 2 indicating which indexes of the eigenvalues involved in the reordering. If indexes = c(i,j), then the block or element in row i is moved to row j by a sequence of transpositions between adjacents blocks or elements.
vectors:
a logical value telling whether or not to update and return the Schur vectors if they are present in x. The default is to update and return the Schur vectors.

VALUE:
An object of class schur.Matrix containing the reordered Schur form and (optionally) the corresponding Schur vectors.

DETAILS:
Based on the functions dtrexc and ztrexc from Lapack (Anderson et al. 1994).

REFERENCES:
Anderson, E., et al. (1994). LAPACK User's Guide, 2nd edition, SIAM, Philadelphia.

SEE ALSO:
schur.Matrix , schur.Matrix.object

BUGS:
Does not return the proper ordering in all cases. A bug report will be filed with the Lapack developers.

EXAMPLES:
n <- 9
x <- Matrix( rnorm( n*n, sd = 100), nrow = n, ncol = n)
schur.x <- schur(x)                                 # schur factorization
schur.x <- schurmod(schur.x, indexes = c(1,n))      # reordered factorization