Previous: schdd Up: ../linpack.html Next: schud


SCHEX

       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