Google
 

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