Previous: sptsl Up: ../linpack.html Next: sqrsl


SQRDC

       SUBROUTINE SQRDC(X,LDX,N,P,QRAUX,JPVT,WORK,JOB)
       INTEGER LDX,N,P,JOB
       INTEGER JPVT(1)
       REAL X(LDX,1),QRAUX(1),WORK(1)
 C
 C     SQRDC USES HOUSEHOLDER TRANSFORMATIONS TO COMPUTE THE QR
 C     FACTORIZATION OF AN N BY P MATRIX X.  COLUMN PIVOTING
 C     BASED ON THE 2-NORMS OF THE REDUCED COLUMNS MAY BE
 C     PERFORMED AT THE USERS OPTION.
 C
 C     ON ENTRY
 C
 C        X       REAL(LDX,P), WHERE LDX .GE. N.
 C                X CONTAINS THE MATRIX WHOSE DECOMPOSITION IS TO BE
 C                COMPUTED.
 C
 C        LDX     INTEGER.
 C                LDX IS THE LEADING DIMENSION OF THE ARRAY X.
 C
 C        N       INTEGER.
 C                N IS THE NUMBER OF ROWS OF THE MATRIX X.
 C
 C        P       INTEGER.
 C                P IS THE NUMBER OF COLUMNS OF THE MATRIX X.
 C
 C        JPVT    INTEGER(P).
 C                JPVT CONTAINS INTEGERS THAT CONTROL THE SELECTION
 C                OF THE PIVOT COLUMNS.  THE K-TH COLUMN X(K) OF X
 C                IS PLACED IN ONE OF THREE CLASSES ACCORDING TO THE
 C                VALUE OF JPVT(K).
 C
 C                   IF JPVT(K) .GT. 0, THEN X(K) IS AN INITIAL
 C                                      COLUMN.
 C
 C                   IF JPVT(K) .EQ. 0, THEN X(K) IS A FREE COLUMN.
 C
 C                   IF JPVT(K) .LT. 0, THEN X(K) IS A FINAL COLUMN.
 C
 C                BEFORE THE DECOMPOSITION IS COMPUTED, INITIAL COLUMN
 C                ARE MOVED TO THE BEGINNING OF THE ARRAY X AND FINAL
 C                COLUMNS TO THE END.  BOTH INITIAL AND FINAL COLUMNS
 C                ARE FROZEN IN PLACE DURING THE COMPUTATION AND ONLY
 C                FREE COLUMNS ARE MOVED.  AT THE K-TH STAGE OF THE
 C                REDUCTION, IF X(K) IS OCCUPIED BY A FREE COLUMN
 C                IT IS INTERCHANGED WITH THE FREE COLUMN OF LARGEST
 C                REDUCED NORM.  JPVT IS NOT REFERENCED IF
 C                JOB .EQ. 0.
 C
 C        WORK    REAL(P).
 C                WORK IS A WORK ARRAY.  WORK IS NOT REFERENCED IF
 C                JOB .EQ. 0.
 C
 C        JOB     INTEGER.
 C                JOB IS AN INTEGER THAT INITIATES COLUMN PIVOTING.
 C                IF JOB .EQ. 0, NO PIVOTING IS DONE.
 C                IF JOB .NE. 0, PIVOTING IS DONE.
 C
 C     ON RETURN
 C
 C        X       X CONTAINS IN ITS UPPER TRIANGLE THE UPPER
 C                TRIANGULAR MATRIX R OF THE QR FACTORIZATION.
 C                BELOW ITS DIAGONAL X CONTAINS INFORMATION FROM
 C                WHICH THE ORTHOGONAL PART OF THE DECOMPOSITION
 C                CAN BE RECOVERED.  NOTE THAT IF PIVOTING HAS
 C                BEEN REQUESTED, THE DECOMPOSITION IS NOT THAT
 C                OF THE ORIGINAL MATRIX X BUT THAT OF X
 C                WITH ITS COLUMNS PERMUTED AS DESCRIBED BY JPVT.
 C
 C        QRAUX   REAL(P).
 C                QRAUX CONTAINS FURTHER INFORMATION REQUIRED TO RECOV
 C                THE ORTHOGONAL PART OF THE DECOMPOSITION.
 C
 C        JPVT    JPVT(K) CONTAINS THE INDEX OF THE COLUMN OF THE
 C                ORIGINAL MATRIX THAT HAS BEEN INTERCHANGED INTO
 C                THE K-TH COLUMN, IF PIVOTING WAS REQUESTED.
 C
 C     LINPACK. THIS VERSION DATED 08/14/78 .
 C     G.W. STEWART, UNIVERSITY OF MARYLAND, ARGONNE NATIONAL LAB.
 C
 C     SQRDC USES THE FOLLOWING FUNCTIONS AND SUBPROGRAMS.
 C
 C     BLAS SAXPY,SDOT,SSCAL,SSWAP,SNRM2
 C     FORTRAN ABS,AMAX1,MIN0,SQRT
 C