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