Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-02 - decus/20-0026/dtlep.ssp
There are 2 other files named dtlep.ssp in the archive. Click here to see a list.
C                                                                       DTLE  10
C     ..................................................................DTLE  20
C                                                                       DTLE  30
C        SUBROUTINE DTLEP                                               DTLE  40
C                                                                       DTLE  50
C        PURPOSE                                                        DTLE  60
C           A SERIES EXPANSION IN LEGENDRE POLYNOMIALS WITH INDEPENDENT DTLE  70
C           VARIABLE X IS TRANSFORMED TO A POLYNOMIAL WITH INDEPENDENT  DTLE  80
C           VARIABLE Z, WHERE X=A*Z+B                                   DTLE  90
C                                                                       DTLE 100
C        USAGE                                                          DTLE 110
C           CALL DTLEP(A,B,POL,N,C,WORK)                                DTLE 120
C                                                                       DTLE 130
C        DESCRIPTION OF PARAMETERS                                      DTLE 140
C           A     - FACTOR OF LINEAR TERM IN GIVEN LINEAR TRANSFORMATIONDTLE 150
C                   DOUBLE PRECISION VARIABLE                           DTLE 160
C           B     - CONSTANT TERM IN GIVEN LINEAR TRANSFORMATION        DTLE 170
C                   DOUBLE PRECISION VARIABLE                           DTLE 180
C           POL   - COEFFICIENT VECTOR OF POLYNOMIAL (RESULTANT VALUE)  DTLE 190
C                   COEFFICIENTS ARE ORDERED FROM LOW TO HIGH           DTLE 200
C                   DOUBLE PRECISION VECTOR                             DTLE 210
C           N     - DIMENSION OF COEFFICIENT VECTORS POL AND C          DTLE 220
C           C     - GIVEN COEFFICIENT VECTOR OF EXPANSION               DTLE 230
C                   COEFFICIENTS ARE ORDERED FROM LOW TO HIGH           DTLE 240
C                   POL AND C MAY BE IDENTICALLY LOCATED                DTLE 250
C                   DOUBLE PRECISION VECTOR                             DTLE 260
C           WORK  - WORKING STORAGE OF DIMENSION 2*N                    DTLE 270
C                   DOUBLE PRECISION ARRAY                              DTLE 280
C                                                                       DTLE 290
C        REMARKS                                                        DTLE 300
C           COEFFICIENT VECTOR C REMAINS UNCHANGED IF NOT COINCIDING    DTLE 310
C           WITH COEFFICIENT VECTOR POL.                                DTLE 320
C           OPERATION IS BYPASSED IN CASE N LESS THAN 1.                DTLE 330
C           THE LINEAR TRANSFORMATION X=A*Z+B OR Z=(1/A)(X-B) TRANSFORMSDTLE 340
C           THE RANGE (-1,+1) IN X TO THE RANGE (ZL,ZR) IN Z, WHERE     DTLE 350
C           ZL=-(1+B)/A AND ZR=(1-B)/A.                                 DTLE 360
C           FOR GIVEN ZL, ZR WE HAVE A=2/(ZR-ZL) AND B=-(ZR+ZL)/(ZR-ZL) DTLE 370
C                                                                       DTLE 380
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED                  DTLE 390
C           NONE                                                        DTLE 400
C                                                                       DTLE 410
C        METHOD                                                         DTLE 420
C           THE TRANSFORMATION IS BASED ON THE RECURRENCE EQUATION      DTLE 430
C           FOR LEGENDRE POLYNOMIALS P(N,X)                             DTLE 440
C           P(N+1,X)=2*X*P(N,X)-P(N-1,X)-(X*P(N,X)-P(N-1,X))/(N+1),     DTLE 450
C           WHERE THE FIRST TERM IN BRACKETS IS THE INDEX,              DTLE 460
C           THE SECOND IS THE ARGUMENT.                                 DTLE 470
C           STARTING VALUES ARE P(0,X)=1, P(1,X)=X.                     DTLE 480
C           THE TRANSFORMATION IS IMPLICITLY DEFINED BY MEANS OF        DTLE 490
C           X=A*Z+B TOGETHER WITH                                       DTLE 500
C           SUM(POL(I)*Z**(I-1), SUMMED OVER I FROM 1 TO N)             DTLE 510
C           =SUM(C(I)*P(I-1,X), SUMMED OVER I FROM 1 TO N).             DTLE 520
C                                                                       DTLE 530
C     ..................................................................DTLE 540
C                                                                       DTLE 550
      SUBROUTINE DTLEP(A,B,POL,N,C,WORK)                                DTLE 560
C                                                                       DTLE 570
      DIMENSION POL(1),C(1),WORK(1)                                     DTLE 580
      DOUBLE PRECISION A,B,POL,C,WORK,H,P,Q,Q1,FI                       DTLE 590
C                                                                       DTLE 600
C        TEST OF DIMENSION                                              DTLE 610
      IF(N-1)2,1,3                                                      DTLE 620
C                                                                       DTLE 630
C        DIMENSION LESS THAN 2                                          DTLE 640
    1 POL(1)=C(1)                                                       DTLE 650
    2 RETURN                                                            DTLE 660
C                                                                       DTLE 670
    3 POL(1)=C(1)+B*C(2)                                                DTLE 680
      POL(2)=A*C(2)                                                     DTLE 690
      IF(N-2)2,2,4                                                      DTLE 700
C                                                                       DTLE 710
C        INITIALIZATION                                                 DTLE 720
    4 WORK(1)=1.D0                                                      DTLE 730
      WORK(2)=B                                                         DTLE 740
      WORK(3)=0.D0                                                      DTLE 750
      WORK(4)=A                                                         DTLE 760
      FI=1.D0                                                           DTLE 770
C                                                                       DTLE 780
C        CALCULATE COEFFICIENT VECTOR OF NEXT LEGENDRE POLYNOMIAL       DTLE 790
C        AND ADD MULTIPLE OF THIS VECTOR TO POLYNOMIAL POL              DTLE 800
      DO 6 J=3,N                                                        DTLE 810
      FI=FI+1.D0                                                        DTLE 820
      Q=1.D0/FI-1.D0                                                    DTLE 830
      Q1=1.D0-Q                                                         DTLE 840
      P=0.D0                                                            DTLE 850
C                                                                       DTLE 860
      DO 5 K=2,J                                                        DTLE 870
      H=(A*P+B*WORK(2*K-2))*Q1+Q*WORK(2*K-3)                            DTLE 880
      P=WORK(2*K-2)                                                     DTLE 890
      WORK(2*K-2)=H                                                     DTLE 900
      WORK(2*K-3)=P                                                     DTLE 910
    5 POL(K-1)=POL(K-1)+H*C(J)                                          DTLE 920
      WORK(2*J-1)=0.D0                                                  DTLE 930
      WORK(2*J)=A*P*Q1                                                  DTLE 940
    6 POL(J)=C(J)*WORK(2*J)                                             DTLE 950
      RETURN                                                            DTLE 960
      END                                                               DTLE 970