Previous: schdd Up: ../linpack.html Next: schud
SUBROUTINE SCHEX(R,LDR,P,K,L,Z,LDZ,NZ,C,S,JOB) INTEGER LDR,P,K,L,LDZ,NZ,JOB REAL R(LDR,1),Z(LDZ,1),S(1) REAL C(1) C C SCHEX UPDATES THE CHOLESKY FACTORIZATION C C A = TRANS(R)*R C C OF A POSITIVE DEFINITE MATRIX A OF ORDER P UNDER DIAGONAL C PERMUTATIONS OF THE FORM C C TRANS(E)*A*E C C WHERE E IS A PERMUTATION MATRIX. SPECIFICALLY, GIVEN C AN UPPER TRIANGULAR MATRIX R AND A PERMUTATION MATRIX C E (WHICH IS SPECIFIED BY K, L, AND JOB), SCHEX DETERMINES C A ORTHOGONAL MATRIX U SUCH THAT C C U*R*E = RR, C C WHERE RR IS UPPER TRIANGULAR. AT THE USERS OPTION, THE C TRANSFORMATION U WILL BE MULTIPLIED INTO THE ARRAY Z. C IF A = TRANS(X)*X, SO THAT R IS THE TRIANGULAR PART OF THE C QR FACTORIZATION OF X, THEN RR IS THE TRIANGULAR PART OF THE C QR FACTORIZATION OF X*E, I.E. X WITH ITS COLUMNS PERMUTED. C FOR A LESS TERSE DESCRIPTION OF WHAT SCHEX DOES AND HOW C IT MAY BE APPLIED, SEE THE LINPACK GUIDE. C C THE MATRIX Q IS DETERMINED AS THE PRODUCT U(L-K)*...*U(1) C OF PLANE ROTATIONS OF THE FORM C C ( C(I) S(I) ) C ( ) , C ( -S(I) C(I) ) C C WHERE C(I) IS REAL, THE ROWS THESE ROTATIONS OPERATE ON C ARE DESCRIBED BELOW. C C THERE ARE TWO TYPES OF PERMUTATIONS, WHICH ARE DETERMINED C BY THE VALUE OF JOB. C C 1. RIGHT CIRCULAR SHIFT (JOB = 1). C C THE COLUMNS ARE REARRANGED IN THE FOLLOWING ORDER. C C 1,...,K-1,L,K,K+1,...,L-1,L+1,...,P. C C U IS THE PRODUCT OF L-K ROTATIONS U(I), WHERE U(I) C ACTS IN THE (L-I,L-I+1)-PLANE. C C 2. LEFT CIRCULAR SHIFT (JOB = 2). C THE COLUMNS ARE REARRANGED IN THE FOLLOWING ORDER C C 1,...,K-1,K+1,K+2,...,L,K,L+1,...,P. C C U IS THE PRODUCT OF L-K ROTATIONS U(I), WHERE U(I) C ACTS IN THE (K+I-1,K+I)-PLANE. C C ON ENTRY C C R REAL(LDR,P), WHERE LDR.GE.P. C R CONTAINS THE UPPER TRIANGULAR FACTOR C THAT IS TO BE UPDATED. ELEMENTS OF R C BELOW THE DIAGONAL ARE NOT REFERENCED. C C LDR INTEGER. C LDR IS THE LEADING DIMENSION OF THE ARRAY R. C C P INTEGER. C P IS THE ORDER OF THE MATRIX R. C C K INTEGER. C K IS THE FIRST COLUMN TO BE PERMUTED. C C L INTEGER. C L IS THE LAST COLUMN TO BE PERMUTED. C L MUST BE STRICTLY GREATER THAN K. C C Z REAL(LDZ,NZ), WHERE LDZ.GE.P. C Z IS AN ARRAY OF NZ P-VECTORS INTO WHICH THE C TRANSFORMATION U IS MULTIPLIED. Z IS C NOT REFERENCED IF NZ = 0. C C LDZ INTEGER. C LDZ IS THE LEADING DIMENSION OF THE ARRAY Z. C C NZ INTEGER. C NZ IS THE NUMBER OF COLUMNS OF THE MATRIX Z. C C JOB INTEGER. C JOB DETERMINES THE TYPE OF PERMUTATION. C JOB = 1 RIGHT CIRCULAR SHIFT. C JOB = 2 LEFT CIRCULAR SHIFT. C C ON RETURN C C R CONTAINS THE UPDATED FACTOR. C C Z CONTAINS THE UPDATED MATRIX Z. C C C REAL(P). C C CONTAINS THE COSINES OF THE TRANSFORMING ROTATIONS C C S REAL(P). C S CONTAINS THE SINES OF THE TRANSFORMING ROTATIONS. C C LINPACK. THIS VERSION DATED 08/14/78 . C G.W. STEWART, UNIVERSITY OF MARYLAND, ARGONNE NATIONAL LAB. C C SCHEX USES THE FOLLOWING FUNCTIONS AND SUBROUTINES. C C BLAS SROTG C FORTRAN MIN0 C