Google
 

Trailing-Edge - PDP-10 Archives - decus_20tap2_198111 - decus/20-0026/mfss.ssp
There are 2 other files named mfss.ssp in the archive. Click here to see a list.
C                                                                       MFSS  10
C     ..................................................................MFSS  20
C                                                                       MFSS  30
C        SUBROUTINE MFSS                                                MFSS  40
C                                                                       MFSS  50
C        PURPOSE                                                        MFSS  60
C           GIVEN A SYMMETRIC POSITIVE SEMI DEFINITE MATRIX , MFSS WILL MFSS  70
C           (1) DETERMINE THE RANK AND LINEARLY INDEPENDENT ROWS AND    MFSS  80
C               COLUMNS                                                 MFSS  90
C           (2) FACTOR A SYMMETRIC SUBMATRIX OF MAXIMAL RANK            MFSS 100
C           (3) EXPRESS NONBASIC ROWS IN TERMS OF BASIC ONES,           MFSS 110
C               EXPRESS NONBASIC COLUMNS IN TERMS OF BASIC ONES         MFSS 120
C               EXPRESS BASIC VARIABLES IN TERMS OF FREE ONES           MFSS 130
C           SUBROUTINE MFSS MAY BE USED AS A PREPARATORY STEP FOR THE   MFSS 140
C           CALCULATION OF THE LEAST SQUARES SOLUTION OF MINIMAL        MFSS 150
C           LENGTH OF A SYSTEM OF LINEAR EQUATIONS WITH SYMMETRIC       MFSS 160
C           POSITIVE SEMI-DEFINITE COEFFICIENT MATRIX                   MFSS 170
C                                                                       MFSS 180
C        USAGE                                                          MFSS 190
C           CALL MFSS(A,N,EPS,IRANK,TRAC)                               MFSS 200
C                                                                       MFSS 210
C        DESCRIPTION OF PARAMETERS                                      MFSS 220
C           A     - UPPER TRIANGULAR PART OF GIVEN SYMMETRIC SEMI-      MFSS 230
C                   DEFINITE MATRIX STORED COLUMNWISE IN COMPRESSED FORMMFSS 240
C                   ON RETURN A CONTAINS THE MATRIX T AND, IF IRANK IS  MFSS 250
C                   LESS THAN N, THE MATRICES U AND TU                  MFSS 260
C           N     - DIMENSION OF GIVEN MATRIX A                         MFSS 270
C           EPS   - TESTVALUE FOR ZERO AFFECTED BY ROUND-OFF NOISE      MFSS 280
C           IRANK - RESULTANT VARIABLE, CONTAINING THE RANK OF GIVEN    MFSS 290
C                   MATRIX A IF A IS SEMI-DEFINITE                      MFSS 300
C                   IRANK = 0 MEANS A HAS NO POSITIVE DIAGONAL ELEMENT  MFSS 310
C                             AND/OR EPS IS NOT ABSOLUTELY LESS THAN ONEMFSS 320
C                   IRANK =-1 MEANS DIMENSION N IS NOT POSITIVE         MFSS 330
C                   IRANK =-2 MEANS COMPLETE FAILURE, POSSIBLY DUE TO   MFSS 340
C                             INADEQUATE RELATIVE TOLERANCE EPS         MFSS 350
C           TRAC  - VECTOR OF DIMENSION N CONTAINING THE                MFSS 360
C                   SOURCE INDEX OF THE I-TH PIVOT ROW IN ITS I-TH      MFSS 370
C                   LOCATION, THIS MEANS THAT TRAC CONTAINS THE         MFSS 380
C                   PRODUCT REPRESENTATION OF THE PERMUTATION WHICH     MFSS 390
C                   IS APPLIED TO ROWS AND COLUMNS OF A IN TERMS OF     MFSS 400
C                   TRANSPOSITIONS                                      MFSS 410
C                                                                       MFSS 420
C        REMARKS                                                        MFSS 430
C           EPS MUST BE ABSOLUTELY LESS THAN ONE. A SENSIBLE VALUE IS   MFSS 440
C           SOMEWHERE IN BETWEEN 10**(-4) AND 10**(-6)                  MFSS 450
C           THE ABSOLUTE VALUE OF INPUT PARAMETER EPS IS USED AS        MFSS 460
C           RELATIVE TOLERANCE.                                         MFSS 470
C           IN ORDER TO PRESERVE SYMMETRY ONLY PIVOTING ALONG THE       MFSS 480
C           DIAGONAL IS BUILT IN.                                       MFSS 490
C           ALL PIVOTELEMENTS MUST BE GREATER THAN THE ABSOLUTE VALUE   MFSS 500
C           OF EPS TIMES ORIGINAL DIAGONAL ELEMENT                      MFSS 510
C           OTHERWISE THEY ARE TREATED AS IF THEY WERE ZERO             MFSS 520
C           MATRIX A REMAINS UNCHANGED IF THE RESULTANT VALUE IRANK     MFSS 530
C           EQUALS ZERO                                                 MFSS 540
C                                                                       MFSS 550
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED                  MFSS 560
C           NONE                                                        MFSS 570
C                                                                       MFSS 580
C        METHOD                                                         MFSS 590
C           THE SQUARE ROOT METHOD WITH DIAGONAL PIVOTING IS USED FOR   MFSS 600
C           CALCULATION OF THE RIGHT HAND TRIANGULAR FACTOR.            MFSS 610
C           IN CASE OF AN ONLY SEMI-DEFINITE MATRIX THE SUBROUTINE      MFSS 620
C           RETURNS THE IRANK X IRANK UPPER TRIANGULAR FACTOR T OF A    MFSS 630
C           SUBMATRIX OF MAXIMAL RANK, THE IRANK X (N-IRANK) MATRIX U   MFSS 640
C           AND THE (N-IRANK) X (N-IRANK) UPPER TRIANGULAR TU SUCH      MFSS 650
C           THAT TRANSPOSE(TU)*TU=I+TRANSPOSE(U)*U                      MFSS 660
C                                                                       MFSS 670
C     ..................................................................MFSS 680
C                                                                       MFSS 690
      SUBROUTINE MFSS(A,N,EPS,IRANK,TRAC)                               MFSS 700
C                                                                       MFSS 710
C                                                                       MFSS 720
C        DIMENSIONED DUMMY VARIABLES                                    MFSS 730
      DIMENSION A(1),TRAC(1)                                            MFSS 740
      DOUBLE PRECISION SUM                                              MFSS 750
C                                                                       MFSS 760
C        TEST OF SPECIFIED DIMENSION                                    MFSS 770
      IF(N)36,36,1                                                      MFSS 780
C                                                                       MFSS 790
C        INITIALIZE TRIANGULAR FACTORIZATION                            MFSS 800
    1 IRANK=0                                                           MFSS 810
      ISUB=0                                                            MFSS 820
      KPIV=0                                                            MFSS 830
      J=0                                                               MFSS 840
      PIV=0.                                                            MFSS 850
C                                                                       MFSS 860
C        SEARCH FIRST PIVOT ELEMENT                                     MFSS 870
      DO 3 K=1,N                                                        MFSS 880
      J=J+K                                                             MFSS 890
      TRAC(K)=A(J)                                                      MFSS 900
      IF(A(J)-PIV)3,3,2                                                 MFSS 910
    2 PIV=A(J)                                                          MFSS 920
      KSUB=J                                                            MFSS 930
      KPIV=K                                                            MFSS 940
    3 CONTINUE                                                          MFSS 950
C                                                                       MFSS 960
C        START LOOP OVER ALL ROWS OF A                                  MFSS 970
      DO 32 I=1,N                                                       MFSS 980
      ISUB=ISUB+I                                                       MFSS 990
      IM1=I-1                                                           MFSS1000
    4 KMI=KPIV-I                                                        MFSS1010
      IF(KMI)35,9,5                                                     MFSS1020
C                                                                       MFSS1030
C        PERFORM PARTIAL COLUMN INTERCHANGE                             MFSS1040
    5 JI=KSUB-KMI                                                       MFSS1050
      IDC=JI-ISUB                                                       MFSS1060
      JJ=ISUB-IM1                                                       MFSS1070
      DO 6 K=JJ,ISUB                                                    MFSS1080
      KK=K+IDC                                                          MFSS1090
      HOLD=A(K)                                                         MFSS1100
      A(K)=A(KK)                                                        MFSS1110
    6 A(KK)=HOLD                                                        MFSS1120
C                                                                       MFSS1130
C        PERFORM PARTIAL ROW INTERCHANGE                                MFSS1140
      KK=KSUB                                                           MFSS1150
      DO 7 K=KPIV,N                                                     MFSS1160
      II=KK-KMI                                                         MFSS1170
      HOLD=A(KK)                                                        MFSS1180
      A(KK)=A(II)                                                       MFSS1190
      A(II)=HOLD                                                        MFSS1200
    7 KK=KK+K                                                           MFSS1210
C                                                                       MFSS1220
C        PERFORM REMAINING INTERCHANGE                                  MFSS1230
      JJ=KPIV-1                                                         MFSS1240
      II=ISUB                                                           MFSS1250
      DO 8 K=I,JJ                                                       MFSS1260
      HOLD=A(II)                                                        MFSS1270
      A(II)=A(JI)                                                       MFSS1280
      A(JI)=HOLD                                                        MFSS1290
      II=II+K                                                           MFSS1300
    8 JI=JI+1                                                           MFSS1310
    9 IF(IRANK)22,10,10                                                 MFSS1320
C                                                                       MFSS1330
C        RECORD INTERCHANGE IN TRANSPOSITION VECTOR                     MFSS1340
   10 TRAC(KPIV)=TRAC(I)                                                MFSS1350
      TRAC(I)=KPIV                                                      MFSS1360
C                                                                       MFSS1370
C        MODIFY CURRENT PIVOT ROW                                       MFSS1380
      KK=IM1-IRANK                                                      MFSS1390
      KMI=ISUB-KK                                                       MFSS1400
      PIV=0.                                                            MFSS1410
      IDC=IRANK+1                                                       MFSS1420
      JI=ISUB-1                                                         MFSS1430
      JK=KMI                                                            MFSS1440
      JJ=ISUB-I                                                         MFSS1450
      DO 19 K=I,N                                                       MFSS1460
      SUM=0.D0                                                          MFSS1470
C                                                                       MFSS1480
C        BUILD UP SCALAR PRODUCT IF NECESSARY                           MFSS1490
      IF(KK)13,13,11                                                    MFSS1500
   11 DO 12 J=KMI,JI                                                    MFSS1510
      SUM=SUM-A(J)*A(JK)                                                MFSS1520
   12 JK=JK+1                                                           MFSS1530
   13 JJ=JJ+K                                                           MFSS1540
      IF(K-I)14,14,16                                                   MFSS1550
   14 SUM=A(ISUB)+SUM                                                   MFSS1560
C                                                                       MFSS1570
C        TEST RADICAND FOR LOSS OF SIGNIFICANCE                         MFSS1580
      IF(SUM-ABS(A(ISUB)*EPS))20,20,15                                  MFSS1590
   15 A(ISUB)=DSQRT(SUM)                                                MFSS1600
      KPIV=I+1                                                          MFSS1610
      GOTO 19                                                           MFSS1620
   16 SUM=(A(JK)+SUM)/A(ISUB)                                           MFSS1630
      A(JK)=SUM                                                         MFSS1640
C                                                                       MFSS1650
C        SEARCH FOR NEXT PIVOT ROW                                      MFSS1660
      IF(A(JJ))19,19,17                                                 MFSS1670
   17 TRAC(K)=TRAC(K)-SUM*SUM                                           MFSS1680
      HOLD=TRAC(K)/A(JJ)                                                MFSS1690
      IF(PIV-HOLD)18,19,19                                              MFSS1700
   18 PIV=HOLD                                                          MFSS1710
      KPIV=K                                                            MFSS1720
      KSUB=JJ                                                           MFSS1730
   19 JK=JJ+IDC                                                         MFSS1740
      GOTO 32                                                           MFSS1750
C                                                                       MFSS1760
C        CALCULATE MATRIX OF DEPENDENCIES U                             MFSS1770
   20 IF(IRANK)21,21,37                                                 MFSS1780
   21 IRANK=-1                                                          MFSS1790
      GOTO 4                                                            MFSS1800
   22 IRANK=IM1                                                         MFSS1810
      II=ISUB-IRANK                                                     MFSS1820
      JI=II                                                             MFSS1830
      DO 26 K=1,IRANK                                                   MFSS1840
      JI=JI-1                                                           MFSS1850
      JK=ISUB-1                                                         MFSS1860
      JJ=K-1                                                            MFSS1870
      DO 26 J=I,N                                                       MFSS1880
      IDC=IRANK                                                         MFSS1890
      SUM=0.D0                                                          MFSS1900
      KMI=JI                                                            MFSS1910
      KK=JK                                                             MFSS1920
      IF(JJ)25,25,23                                                    MFSS1930
   23 DO 24 L=1,JJ                                                      MFSS1940
      IDC=IDC-1                                                         MFSS1950
      SUM=SUM-A(KMI)*A(KK)                                              MFSS1960
      KMI=KMI-IDC                                                       MFSS1970
   24 KK=KK-1                                                           MFSS1980
   25 A(KK)=(SUM+A(KK))/A(KMI)                                          MFSS1990
   26 JK=JK+J                                                           MFSS2000
C                                                                       MFSS2010
C        CALCULATE I+TRANSPOSE(U)*U                                     MFSS2020
      JJ=ISUB-I                                                         MFSS2030
      PIV=0.                                                            MFSS2040
      KK=ISUB-1                                                         MFSS2050
      DO 31 K=I,N                                                       MFSS2060
      JJ=JJ+K                                                           MFSS2070
      IDC=0                                                             MFSS2080
      DO 28 J=K,N                                                       MFSS2090
      SUM=0.D0                                                          MFSS2100
      KMI=JJ+IDC                                                        MFSS2110
      DO 27 L=II,KK                                                     MFSS2120
      JK=L+IDC                                                          MFSS2130
   27 SUM=SUM+A(L)*A(JK)                                                MFSS2140
      A(KMI)=SUM                                                        MFSS2150
   28 IDC=IDC+J                                                         MFSS2160
      A(JJ)=A(JJ)+1.D0                                                  MFSS2170
      TRAC(K)=A(JJ)                                                     MFSS2180
C                                                                       MFSS2190
C        SEARCH NEXT DIAGONAL ELEMENT                                   MFSS2200
      IF(PIV-A(JJ))29,30,30                                             MFSS2210
   29 KPIV=K                                                            MFSS2220
      KSUB=JJ                                                           MFSS2230
      PIV=A(JJ)                                                         MFSS2240
   30 II=II+K                                                           MFSS2250
      KK=KK+K                                                           MFSS2260
   31 CONTINUE                                                          MFSS2270
      GOTO 4                                                            MFSS2280
   32 CONTINUE                                                          MFSS2290
   33 IF(IRANK)35,34,35                                                 MFSS2300
   34 IRANK=N                                                           MFSS2310
   35 RETURN                                                            MFSS2320
C                                                                       MFSS2330
C        ERROR RETURNS                                                  MFSS2340
C                                                                       MFSS2350
C        RETURN IN CASE OF ILLEGAL DIMENSION                            MFSS2360
   36 IRANK=-1                                                          MFSS2370
      RETURN                                                            MFSS2380
C                                                                       MFSS2390
C        INSTABLE FACTORIZATION OF I+TRANSPOSE(U)*U                     MFSS2400
   37 IRANK=-2                                                          MFSS2410
      RETURN                                                            MFSS2420
      END                                                               MFSS2430