Web pdp-10.trailing-edge.com

Trailing-Edge - PDP-10 Archives - decuslib20-01 - decus/20-0025/tpoly.for
There is 1 other file named tpoly.for in the archive. Click here to see a list.
```C	TPOLY
DIMENSION PL(26,26),PROD(26)
9000	FORMAT(' GENERATE LEGENDRE POLYNOMIALS')
9001	FORMAT(//' WHAT IS MAXIMUM DEGREE? ',\$)
9002	FORMAT(I)
9003	FORMAT(/'  P(',I2,')')
9004	FORMAT(/' PRODUCT OF P(',I2,') BY P(',
1I2,') INTEGRATES TO ',F10.6)
9005	FORMAT('  THEORY SAYS INTEGRAL IS',F12.8)
C
TYPE 9000
1	TYPE 9001
ACCEPT 9002,L
IF(L) 9,9,3
3	M=L+1
CALL LEGEND(PL,L)
DO 2 I=1,M
K=I-1
TYPE 9003,K
CALL PRNT(PL(1,I),K)
NP=K+L
IF(NP-25)4,4,2
4	CALL MTALG(PL(1,I),K,PL(1,M),L,PROD)
AREA=PINT(PROD,NP,-1.,+1.)
TYPE 9004,K,L,AREA
IF(I-M)2,5,5
5	EL=L
THEORY=2./(1.+2.*EL)
TYPE 9005,THEORY
2	CONTINUE
GO TO 1
9	CALL EXIT
END
C
FUNCTION PINT(C,NC,XLOW,XHIGH)
DIMENSION C(26)
NPLUS=NC+1
J=NPLUS
DO 101 I=1,NPLUS
D=J
C(J+1)=C(J)/D
101	J=J-1
C(1)=0.
PINT=CLPLY(XHIGH,C,NPLUS)-CLPLY(XLOW,C,NPLUS)
RETURN
END
C
SUBROUTINE LEGEND(CL,LL)
C	COMPUTE THE COEFFICIENTS OF THE LEGENDRE
C	POLYNOMIALS BY RECURSION
DIMENSION CL(26,26),TA(26),TB(26),TC(26),TD(26)
CL(1,1)=1.
CL(1,2)=0.
CL(2,2)=1.
IF(LL-1) 207,207,201
201	L=0
ND=1
TD(1)=0.
NC=0
N=LL+1
DO 202 I=1,N
TA(I)=0.
202	TB(I)=0.
203	K=L
L=L+1
IF(L-LL) 204,207,207
204	M=L+1
N=L+2
EL=L
TD(2)=2.*EL+1.
TC(1)=EL
CALL MTALG(TC,NC,CL(1,L),K,TB)
CALL MTALG(TD,ND,CL(1,M),L,TA)
DO 205 I=1,N
205	CL(I,N)=(TA(I)-TB(I))/(EL+1.)
GO TO 203
207	RETURN
END
C
SUBROUTINE PRNT(A,NA)
DIMENSION A(26)
1300	FORMAT('  POLYNOMIAL IS')
1301	FORMAT(1X,F12.6,5H  X**,I3)
TYPE 1300
NPLUS=NA+1
J=NPLUS
K=NA
DO 303 I=1,NPLUS
IF(A(J)) 301,302,301
301	TYPE 1301,A(J),K
302	J=J-1
303	K=K-1
RETURN
END

```