5 * Revision 1.1.1.1 1996/04/01 15:03:25 mclareni
10 REAL FUNCTION QUAD(D,DEG,LOWER,UPPER,FUN)
12 REAL LOWER(D),UPPER(D),FUN
14 INTEGER D0,DP1,TWOD,PT,NPTS,TIMES,KMAX
15 REAL X(10,202),Y(10),Z(10),R
16 DOUBLE PRECISION SUM0,SUM1,SUM2,B0,B1,B2
18 DATA PI,TWOPI /3.14159E+0,6.28319E+0/
22 SQ23=SQRT(2.0E+0/3.0E+0)
23 SQ13I=1.0E+0/SQRT(3.0E+0)
30 X(2*K-1,J)=SQ23*COS(TWOPI*I*K/DP1)
31 X(2*K,J)=SQ23*SIN(TWOPI*I*K/DP1)
34 IF(MOD(D,2).NE.1) GOTO 40
40 X(2*K-1,I+DP1)=SQ23*COS((2*K-1)*I*PI/D)
41 X(2*K,I+DP1)=SQ23*SIN((2*K-1)*I*PI/D)
44 IF(MOD(D,2).NE.1) GOTO 80
46 X(D,I+DP1)=SQ13I*(-1)**I
51 100 IF((I).GT.(DP1+TWOD)) GOTO 120
53 X(J,I)=0.5E+0*(X(J,I)+1.0E+0)
56 120 R=0.5E+0*SQRT(3.0E+0/5.0E+0)
57 B0=(25.0E+0*D**2-115.0E+0*D+162.0E+0)/162.0E+0
58 B1=(70.0E+0-25.0E+0*D)/162.0E+0
60 130 IF(DEG.NE.2) GOTO 140
64 140 IF(DEG.NE.3) GOTO 150
68 150 IF(DEG.NE.5) GOTO 160
71 170 FORMAT(' ILLEGAL DEGREE =',G13.5)
76 Y(J)=(UPPER(J)-LOWER(J))*X(J,I+PT)+LOWER(J)
86 Y(J)=0.5E+0*(UPPER(J)+LOWER(J))
90 Z(J)=(UPPER(J)-LOWER(J))*R
106 Y(J)=Y(J)-2.0E+0*Z(J)
110 Y(I)=Y(I)-2.0E+0*Z(I)
112 Y(I)=Y(I)+3.0E+0*Z(I)
114 QUAD=B0*SUM0+B1*SUM1+B2*SUM2