Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-02 - decus/20-0026/qsf.ssp
There are 2 other files named qsf.ssp in the archive. Click here to see a list.
C                                                                       QSF   10
C     ..................................................................QSF   20
C                                                                       QSF   30
C        SUBROUTINE QSF                                                 QSF   40
C                                                                       QSF   50
C        PURPOSE                                                        QSF   60
C           TO COMPUTE THE VECTOR OF INTEGRAL VALUES FOR A GIVEN        QSF   70
C           EQUIDISTANT TABLE OF FUNCTION VALUES.                       QSF   80
C                                                                       QSF   90
C        USAGE                                                          QSF  100
C           CALL QSF (H,Y,Z,NDIM)                                       QSF  110
C                                                                       QSF  120
C        DESCRIPTION OF PARAMETERS                                      QSF  130
C           H      - THE INCREMENT OF ARGUMENT VALUES.                  QSF  140
C           Y      - THE INPUT VECTOR OF FUNCTION VALUES.               QSF  150
C           Z      - THE RESULTING VECTOR OF INTEGRAL VALUES. Z MAY BE  QSF  160
C                    IDENTICAL WITH Y.                                  QSF  170
C           NDIM   - THE DIMENSION OF VECTORS Y AND Z.                  QSF  180
C                                                                       QSF  190
C        REMARKS                                                        QSF  200
C           NO ACTION IN CASE NDIM LESS THAN 3.                         QSF  210
C                                                                       QSF  220
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED                  QSF  230
C           NONE                                                        QSF  240
C                                                                       QSF  250
C        METHOD                                                         QSF  260
C           BEGINNING WITH Z(1)=0, EVALUATION OF VECTOR Z IS DONE BY    QSF  270
C           MEANS OF SIMPSONS RULE TOGETHER WITH NEWTONS 3/8 RULE OR A  QSF  280
C           COMBINATION OF THESE TWO RULES. TRUNCATION ERROR IS OF      QSF  290
C           ORDER H**5 (I.E. FOURTH ORDER METHOD). ONLY IN CASE NDIM=3  QSF  300
C           TRUNCATION ERROR OF Z(2) IS OF ORDER H**4.                  QSF  310
C           FOR REFERENCE, SEE                                          QSF  320
C           (1) F.B.HILDEBRAND, INTRODUCTION TO NUMERICAL ANALYSIS,     QSF  330
C               MCGRAW-HILL, NEW YORK/TORONTO/LONDON, 1956, PP.71-76.   QSF  340
C           (2) R.ZURMUEHL, PRAKTISCHE MATHEMATIK FUER INGENIEURE UND   QSF  350
C               PHYSIKER, SPRINGER, BERLIN/GOETTINGEN/HEIDELBERG, 1963, QSF  360
C               PP.214-221.                                             QSF  370
C                                                                       QSF  380
C     ..................................................................QSF  390
C                                                                       QSF  400
      SUBROUTINE QSF(H,Y,Z,NDIM)                                        QSF  410
C                                                                       QSF  420
C                                                                       QSF  430
      DIMENSION Y(1),Z(1)                                               QSF  440
C                                                                       QSF  450
      HT=.3333333*H                                                     QSF  460
      IF(NDIM-5)7,8,1                                                   QSF  470
C                                                                       QSF  480
C     NDIM IS GREATER THAN 5. PREPARATIONS OF INTEGRATION LOOP          QSF  490
    1 SUM1=Y(2)+Y(2)                                                    QSF  500
      SUM1=SUM1+SUM1                                                    QSF  510
      SUM1=HT*(Y(1)+SUM1+Y(3))                                          QSF  520
      AUX1=Y(4)+Y(4)                                                    QSF  530
      AUX1=AUX1+AUX1                                                    QSF  540
      AUX1=SUM1+HT*(Y(3)+AUX1+Y(5))                                     QSF  550
      AUX2=HT*(Y(1)+3.875*(Y(2)+Y(5))+2.625*(Y(3)+Y(4))+Y(6))           QSF  560
      SUM2=Y(5)+Y(5)                                                    QSF  570
      SUM2=SUM2+SUM2                                                    QSF  580
      SUM2=AUX2-HT*(Y(4)+SUM2+Y(6))                                     QSF  590
      Z(1)=0.                                                           QSF  600
      AUX=Y(3)+Y(3)                                                     QSF  610
      AUX=AUX+AUX                                                       QSF  620
      Z(2)=SUM2-HT*(Y(2)+AUX+Y(4))                                      QSF  630
      Z(3)=SUM1                                                         QSF  640
      Z(4)=SUM2                                                         QSF  650
      IF(NDIM-6)5,5,2                                                   QSF  660
C                                                                       QSF  670
C     INTEGRATION LOOP                                                  QSF  680
    2 DO 4 I=7,NDIM,2                                                   QSF  690
      SUM1=AUX1                                                         QSF  700
      SUM2=AUX2                                                         QSF  710
      AUX1=Y(I-1)+Y(I-1)                                                QSF  720
      AUX1=AUX1+AUX1                                                    QSF  730
      AUX1=SUM1+HT*(Y(I-2)+AUX1+Y(I))                                   QSF  740
      Z(I-2)=SUM1                                                       QSF  750
      IF(I-NDIM)3,6,6                                                   QSF  760
    3 AUX2=Y(I)+Y(I)                                                    QSF  770
      AUX2=AUX2+AUX2                                                    QSF  780
      AUX2=SUM2+HT*(Y(I-1)+AUX2+Y(I+1))                                 QSF  790
    4 Z(I-1)=SUM2                                                       QSF  800
    5 Z(NDIM-1)=AUX1                                                    QSF  810
      Z(NDIM)=AUX2                                                      QSF  820
      RETURN                                                            QSF  830
    6 Z(NDIM-1)=SUM2                                                    QSF  840
      Z(NDIM)=AUX1                                                      QSF  850
      RETURN                                                            QSF  860
C     END OF INTEGRATION LOOP                                           QSF  870
C                                                                       QSF  880
    7 IF(NDIM-3)12,11,8                                                 QSF  890
C                                                                       QSF  900
C     NDIM IS EQUAL TO 4 OR 5                                           QSF  910
    8 SUM2=1.125*HT*(Y(1)+Y(2)+Y(2)+Y(2)+Y(3)+Y(3)+Y(3)+Y(4))           QSF  920
      SUM1=Y(2)+Y(2)                                                    QSF  930
      SUM1=SUM1+SUM1                                                    QSF  940
      SUM1=HT*(Y(1)+SUM1+Y(3))                                          QSF  950
      Z(1)=0.                                                           QSF  960
      AUX1=Y(3)+Y(3)                                                    QSF  970
      AUX1=AUX1+AUX1                                                    QSF  980
      Z(2)=SUM2-HT*(Y(2)+AUX1+Y(4))                                     QSF  990
      IF(NDIM-5)10,9,9                                                  QSF 1000
    9 AUX1=Y(4)+Y(4)                                                    QSF 1010
      AUX1=AUX1+AUX1                                                    QSF 1020
      Z(5)=SUM1+HT*(Y(3)+AUX1+Y(5))                                     QSF 1030
   10 Z(3)=SUM1                                                         QSF 1040
      Z(4)=SUM2                                                         QSF 1050
      RETURN                                                            QSF 1060
C                                                                       QSF 1070
C     NDIM IS EQUAL TO 3                                                QSF 1080
   11 SUM1=HT*(1.25*Y(1)+Y(2)+Y(2)-.25*Y(3))                            QSF 1090
      SUM2=Y(2)+Y(2)                                                    QSF 1100
      SUM2=SUM2+SUM2                                                    QSF 1110
      Z(3)=HT*(Y(1)+SUM2+Y(3))                                          QSF 1120
      Z(1)=0.                                                           QSF 1130
      Z(2)=SUM1                                                         QSF 1140
   12 RETURN                                                            QSF 1150
      END                                                               QSF 1160