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


SCHDC

       SUBROUTINE SCHDC(A,LDA,P,WORK,JPVT,JOB,INFO)
       INTEGER LDA,P,JPVT(1),JOB,INFO
       REAL A(LDA,1),WORK(1)
 C
 C     SCHDC COMPUTES THE CHOLESKY DECOMPOSITION OF A POSITIVE DEFINIT
 C     MATRIX.  A PIVOTING OPTION ALLOWS THE USER TO ESTIMATE THE
 C     CONDITION OF A POSITIVE DEFINITE MATRIX OR DETERMINE THE RANK
 C     OF A POSITIVE SEMIDEFINITE MATRIX.
 C
 C     ON ENTRY
 C
 C         A      REAL(LDA,P).
 C                A CONTAINS THE MATRIX WHOSE DECOMPOSITION IS TO
 C                BE COMPUTED.  ONLT THE UPPER HALF OF A NEED BE STORE
 C                THE LOWER PART OF THE ARRAY A IS NOT REFERENCED.
 C
 C         LDA    INTEGER.
 C                LDA IS THE LEADING DIMENSION OF THE ARRAY A.
 C
 C         P      INTEGER.
 C                P IS THE ORDER OF THE MATRIX.
 C
 C         WORK   REAL.
 C                WORK IS A WORK ARRAY.
 C
 C         JPVT   INTEGER(P).
 C                JPVT CONTAINS INTEGERS THAT CONTROL THE SELECTION
 C                OF THE PIVOT ELEMENTS, IF PIVOTING HAS BEEN REQUESTE
 C                EACH DIAGONAL ELEMENT A(K,K)
 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                                      ELEMENT.
 C
 C                   IF JPVT(K) .EQ. 0, THEN X(K) IS A FREE ELEMENT.
 C
 C                   IF JPVT(K) .LT. 0, THEN X(K) IS A FINAL ELEMENT.
 C
 C                BEFORE THE DECOMPOSITION IS COMPUTED, INITIAL ELEMEN
 C                ARE MOVED BY SYMMETRIC ROW AND COLUMN INTERCHANGES T
 C                THE BEGINNING OF THE ARRAY A AND FINAL
 C                ELEMENTS TO THE END.  BOTH INITIAL AND FINAL ELEMENT
 C                ARE FROZEN IN PLACE DURING THE COMPUTATION AND ONLY
 C                FREE ELEMENTS ARE MOVED.  AT THE K-TH STAGE OF THE
 C                REDUCTION, IF A(K,K) IS OCCUPIED BY A FREE ELEMENT
 C                IT IS INTERCHANGED WITH THE LARGEST FREE ELEMENT
 C                A(L,L) WITH L .GE. K.  JPVT 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         A      A CONTAINS IN ITS UPPER HALF THE CHOLESKY FACTOR
 C                OF THE MATRIX A AS IT HAS BEEN PERMUTED BY PIVOTING.
 C
 C         JPVT   JPVT(J) CONTAINS THE INDEX OF THE DIAGONAL ELEMENT
 C                OF A THAT WAS MOVED INTO THE J-TH POSITION,
 C                PROVIDED PIVOTING WAS REQUESTED.
 C
 C         INFO   CONTAINS THE INDEX OF THE LAST POSITIVE DIAGONAL
 C                ELEMENT OF THE CHOLESKY FACTOR.
 C
 C     FOR POSITIVE DEFINITE MATRICES INFO = P IS THE NORMAL RETURN.
 C     FOR PIVOTING WITH POSITIVE SEMIDEFINITE MATRICES INFO WILL
 C     IN GENERAL BE LESS THAN P.  HOWEVER, INFO MAY BE GREATER THAN
 C     THE RANK OF A, SINCE ROUNDING ERROR CAN CAUSE AN OTHERWISE ZERO
 C     ELEMENT TO BE POSITIVE. INDEFINITE SYSTEMS WILL ALWAYS CAUSE
 C     INFO TO BE LESS THAN P.
 C
 C     LINPACK. THIS VERSION DATED 03/19/79 .
 C     J.J. DONGARRA AND G.W. STEWART, ARGONNE NATIONAL LABORATORY AND
 C     UNIVERSITY OF MARYLAND.
 C
 C
 C     BLAS SAXPY,SSWAP
 C     FORTRAN SQRT
 C