Previous: sqrdc Up: ../linpack.html Next: srot


SQRSL

       SUBROUTINE SQRSL(X,LDX,N,K,QRAUX,Y,QY,QTY,B,RSD,XB,JOB,INFO)
       INTEGER LDX,N,K,JOB,INFO
       REAL X(LDX,1),QRAUX(1),Y(1),QY(1),QTY(1),B(1),RSD(1),XB(1)
 C
 C     SQRSL APPLIES THE OUTPUT OF SQRDC TO COMPUTE COORDINATE
 C     TRANSFORMATIONS, PROJECTIONS, AND LEAST SQUARES SOLUTIONS.
 C     FOR K .LE. MIN(N,P), LET XK BE THE MATRIX
 C
 C            XK = (X(JPVT(1)),X(JPVT(2)), ... ,X(JPVT(K)))
 C
 C     FORMED FROM COLUMNNS JPVT(1), ... ,JPVT(K) OF THE ORIGINAL
 C     N X P MATRIX X THAT WAS INPUT TO SQRDC (IF NO PIVOTING WAS
 C     DONE, XK CONSISTS OF THE FIRST K COLUMNS OF X IN THEIR
 C     ORIGINAL ORDER).  SQRDC PRODUCES A FACTORED ORTHOGONAL MATRIX Q
 C     AND AN UPPER TRIANGULAR MATRIX R SUCH THAT
 C
 C              XK = Q * (R)
 C                       (0)
 C
 C     THIS INFORMATION IS CONTAINED IN CODED FORM IN THE ARRAYS
 C     X AND QRAUX.
 C
 C     ON ENTRY
 C
 C        X      REAL(LDX,P).
 C               X CONTAINS THE OUTPUT OF SQRDC.
 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 XK.  IT MUST
 C               HAVE THE SAME VALUE AS N IN SQRDC.
 C
 C        K      INTEGER.
 C               K IS THE NUMBER OF COLUMNS OF THE MATRIX XK.  K
 C               MUST NNOT BE GREATER THAN MIN(N,P), WHERE P IS THE
 C               SAME AS IN THE CALLING SEQUENCE TO SQRDC.
 C
 C        QRAUX  REAL(P).
 C               QRAUX CONTAINS THE AUXILIARY OUTPUT FROM SQRDC.
 C
 C        Y      REAL(N)
 C               Y CONTAINS AN N-VECTOR THAT IS TO BE MANIPULATED
 C               BY SQRSL.
 C
 C        JOB    INTEGER.
 C               JOB SPECIFIES WHAT IS TO BE COMPUTED.  JOB HAS
 C               THE DECIMAL EXPANSION ABCDE, WITH THE FOLLOWING
 C               MEANING.
 C
 C                    IF A.NE.0, COMPUTE QY.
 C                    IF B,C,D, OR E .NE. 0, COMPUTE QTY.
 C                    IF C.NE.0, COMPUTE B.
 C                    IF D.NE.0, COMPUTE RSD.
 C                    IF E.NE.0, COMPUTE XB.
 C
 C               NOTE THAT A REQUEST TO COMPUTE B, RSD, OR XB
 C               AUTOMATICALLY TRIGGERS THE COMPUTATION OF QTY, FOR
 C               WHICH AN ARRAY MUST BE PROVIDED IN THE CALLING
 C               SEQUENCE.
 C
 C     ON RETURN
 C
 C        QY     REAL(N).
 C               QY CONNTAINS Q*Y, IF ITS COMPUTATION HAS BEEN
 C               REQUESTED.
 C
 C        QTY    REAL(N).
 C               QTY CONTAINS TRANS(Q)*Y, IF ITS COMPUTATION HAS
 C               BEEN REQUESTED.  HERE TRANS(Q) IS THE
 C               TRANSPOSE OF THE MATRIX Q.
 C
 C        B      REAL(K)
 C               B CONTAINS THE SOLUTION OF THE LEAST SQUARES PROBLEM
 C
 C                    MINIMIZE NORM2(Y - XK*B),
 C
 C               IF ITS COMPUTATION HAS BEEN REQUESTED.  (NOTE THAT
 C               IF PIVOTING WAS REQUESTED IN SQRDC, THE J-TH
 C               COMPONENT OF B WILL BE ASSOCIATED WITH COLUMN JPVT(J)
 C               OF THE ORIGINAL MATRIX X THAT WAS INPUT INTO SQRDC.)
 C
 C        RSD    REAL(N).
 C               RSD CONTAINS THE LEAST SQUARES RESIDUAL Y - XK*B,
 C               IF ITS COMPUTATION HAS BEEN REQUESTED.  RSD IS
 C               ALSO THE ORTHOGONAL PROJECTION OF Y ONTO THE
 C               ORTHOGONAL COMPLEMENT OF THE COLUMN SPACE OF XK.
 C
 C        XB     REAL(N).
 C               XB CONTAINS THE LEAST SQUARES APPROXIMATION XK*B,
 C               IF ITS COMPUTATION HAS BEEN REQUESTED.  XB IS ALSO
 C               THE ORTHOGONAL PROJECTION OF Y ONTO THE COLUMN SPACE
 C               OF X.
 C
 C        INFO   INTEGER.
 C               INFO IS ZERO UNLESS THE COMPUTATION OF B HAS
 C               BEEN REQUESTED AND R IS EXACTLY SINGULAR.  IN
 C               THIS CASE, INFO IS THE INDEX OF THE FIRST ZERO
 C               DIAGONAL ELEMENT OF R AND B IS LEFT UNALTERED.
 C
 C     THE PARAMETERS QY, QTY, B, RSD, AND XB ARE NOT REFERENCED
 C     IF THEIR COMPUTATION IS NOT REQUESTED AND IN THIS CASE
 C     CAN BE REPLACED BY DUMMY VARIABLES IN THE CALLING PROGRAM.
 C     TO SAVE STORAGE, THE USER MAY IN SOME CASES USE THE SAME
 C     ARRAY FOR DIFFERENT PARAMETERS IN THE CALLING SEQUENCE.  A
 C     FREQUENTLY OCCURING EXAMPLE IS WHEN ONE WISHES TO COMPUTE
 C     ANY OF B, RSD, OR XB AND DOES NOT NEED Y OR QTY.  IN THIS
 C     CASE ONE MAY IDENTIFY Y, QTY, AND ONE OF B, RSD, OR XB, WHILE
 C     PROVIDING SEPARATE ARRAYS FOR ANYTHING ELSE THAT IS TO BE
 C     COMPUTED.  THUS THE CALLING SEQUENCE
 C
 C          CALL SQRSL(X,LDX,N,K,QRAUX,Y,DUM,Y,B,Y,DUM,110,INFO)
 C
 C     WILL RESULT IN THE COMPUTATION OF B AND RSD, WITH RSD
 C     OVERWRITING Y.  MORE GENERALLY, EACH ITEM IN THE FOLLOWING
 C     LIST CONTAINS GROUPS OF PERMISSIBLE IDENTIFICATIONS FOR
 C     A SINGLE CALLINNG SEQUENCE.
 C
 C          1. (Y,QTY,B) (RSD) (XB) (QY)
 C
 C          2. (Y,QTY,RSD) (B) (XB) (QY)
 C
 C          3. (Y,QTY,XB) (B) (RSD) (QY)
 C
 C          4. (Y,QY) (QTY,B) (RSD) (XB)
 C
 C          5. (Y,QY) (QTY,RSD) (B) (XB)
 C
 C          6. (Y,QY) (QTY,XB) (B) (RSD)
 C
 C     IN ANY GROUP THE VALUE RETURNED IN THE ARRAY ALLOCATED TO
 C     THE GROUP CORRESPONDS TO THE LAST MEMBER OF THE GROUP.
 C
 C     LINPACK. THIS VERSION DATED 08/14/78 .
 C     G.W. STEWART, UNIVERSITY OF MARYLAND, ARGONNE NATIONAL LAB.
 C
 C     SQRSL USES THE FOLLOWING FUNCTIONS AND SUBPROGRAMS.
 C
 C     BLAS SAXPY,SCOPY,SDOT
 C     FORTRAN ABS,MIN0,MOD
 C