Previous: spoco Up: ../linpack.html Next: spofa


SPODI

       SUBROUTINE SPODI(A,LDA,N,DET,JOB)
       INTEGER LDA,N,JOB
       REAL A(LDA,1)
       REAL DET(2)
 C
 C     SPODI COMPUTES THE DETERMINANT AND INVERSE OF A CERTAIN
 C     REAL SYMMETRIC POSITIVE DEFINITE MATRIX (SEE BELOW)
 C     USING THE FACTORS COMPUTED BY SPOCO, SPOFA OR SQRDC.
 C
 C     ON ENTRY
 C
 C        A       REAL(LDA, N)
 C                THE OUTPUT  A  FROM SPOCO OR SPOFA
 C                OR THE OUTPUT  X  FROM SQRDC.
 C
 C        LDA     INTEGER
 C                THE LEADING DIMENSION OF THE ARRAY  A .
 C
 C        N       INTEGER
 C                THE ORDER OF THE MATRIX  A .
 C
 C        JOB     INTEGER
 C                = 11   BOTH DETERMINANT AND INVERSE.
 C                = 01   INVERSE ONLY.
 C                = 10   DETERMINANT ONLY.
 C
 C     ON RETURN
 C
 C        A       IF SPOCO OR SPOFA WAS USED TO FACTOR  A  THEN
 C                SPODI PRODUCES THE UPPER HALF OF INVERSE(A) .
 C                IF SQRDC WAS USED TO DECOMPOSE  X  THEN
 C                SPODI PRODUCES THE UPPER HALF OF INVERSE(TRANS(X)*X)
 C                WHERE TRANS(X) IS THE TRANSPOSE.
 C                ELEMENTS OF  A  BELOW THE DIAGONAL ARE UNCHANGED.
 C                IF THE UNITS DIGIT OF JOB IS ZERO,  A  IS UNCHANGED.
 C
 C        DET     REAL(2)
 C                DETERMINANT OF  A  OR OF  TRANS(X)*X  IF REQUESTED.
 C                OTHERWISE NOT REFERENCED.
 C                DETERMINANT = DET(1) * 10.0**DET(2)
 C                WITH  1.0 .LE. DET(1) .LT. 10.0
 C                OR  DET(1) .EQ. 0.0 .
 C
 C     ERROR CONDITION
 C
 C        A DIVISION BY ZERO WILL OCCUR IF THE INPUT FACTOR CONTAINS
 C        A ZERO ON THE DIAGONAL AND THE INVERSE IS REQUESTED.
 C        IT WILL NOT OCCUR IF THE SUBROUTINES ARE CALLED CORRECTLY
 C        AND IF SPOCO OR SPOFA HAS SET INFO .EQ. 0 .
 C
 C     LINPACK.  THIS VERSION DATED 08/14/78 .
 C     CLEVE MOLER, UNIVERSITY OF NEW MEXICO, ARGONNE NATIONAL LAB.
 C
 C     SUBROUTINES AND FUNCTIONS
 C
 C     BLAS SAXPY,SSCAL
 C     FORTRAN MOD
 C