SUBROUTINE MPRC PURPOSE TO PERMUTE THE ROWS OR COLUMNS OF A GIVEN MATRIX ACCORDING TO A GIVEN TRANSPOSITION VECTOR OR ITS INVERSE. (SEE THE DISCUSSION ON PERMUTATIONS FOR DEFINITIONS AND NOTATION.) USAGE CALL MPRC(A,M,N,ITRA,INV,IROCO,IER) DESCRIPTION OF PARAMETERS A - GIVEN M BY N MATRIX AND RESULTING PERMUTED MATRIX M - NUMBER OF ROWS OF A N - NUMBER OF COLUMNS OF A ITRA - GIVEN TRANSPOSITION VECTOR (DIMENSION M IF ROWS ARE PERMUTED, N IF COLUMNS ARE PERMUTED) INV - INPUT PARAMETER INV NON-ZERO - PERMUTE ACCORDING TO ITRA INV = 0 - PERMUTE ACCORDING TO ITRA INVERSE IROCO - INPUT PARAMETER IROCO NON-ZERO - PERMUTE THE COLUMNS OF A IROCO = 0 - PERMUTE THE ROWS OF A IER - RESULTING ERROR PARAMETER IER = -1 - M AND N ARE NOT BOTH POSITIVE IER = 0 - NO ERROR IER = 1 - ITRA IS NOT A TRANSPOSITION VECTOR ON 1,...,M IF ROWS ARE PERMUTED, 1,...,N IF COLUMNS ARE PERMUTED REMARKS (1) IF IER=-1 THERE IS NO COMPUTATION. (2) IF IER= 1, THEN COMPUTATION HAS BEEN UNSUCCESSFUL DUE TO ERROR, BUT THE MATRIX A WILL REFLECT THE ROW OR COLUMN INTERCHANGES PERFORMED BEFORE THE ERROR WAS DETECTED. (3) THE MATRIX A IS ASSUMED TO BE STORED COLUMNWISE. SUBROUTINES AND SUBPROGRAMS REQUIRED NONE METHOD THE ROWS OR COLUMNS ARE PERMUTED ELEMENTWISE, INTERCHANGING ROW OR COLUMN 1 AND ITRA(1),...,ROW OR COLUMN K AND ITRA(K) IN THAT ORDER IF INV=0, AND OTHERWISE INTERCHANGING ROW OR COLUMN K AND ITRA(K),...,ROW OR COLUMN 1 AND ITRA(1), WHERE K IS M OR N DEPENDING ON WHETHER WE PERMUTE ROWS OR COLUMNS.