SUBROUTINE chebft(a,b,c,n,func) INTEGER n,NMAX REAL a,b,c(n),func,PI EXTERNAL func PARAMETER (NMAX=50, PI=3.141592653589793d0) INTEGER j,k REAL bma,bpa,fac,y,f(NMAX) DOUBLE PRECISION sum bma=0.5*(b-a) bpa=0.5*(b+a) do 11 k=1,n y=cos(PI*(k-0.5)/n) f(k)=func(y*bma+bpa) 11 continue fac=2./n do 13 j=1,n sum=0.d0 do 12 k=1,n sum=sum+f(k)*cos((PI*(j-1))*((k-0.5d0)/n)) 12 continue c(j)=fac*sum 13 continue return END C (C) Copr. 1986-92 Numerical Recipes Software D041&0(9p#3. SUBROUTINE chder(a,b,c,cder,n) INTEGER n REAL a,b,c(n),cder(n) INTEGER j REAL con cder(n)=0. cder(n-1)=2*(n-1)*c(n) if(n.ge.3)then do 11 j=n-2,1,-1 cder(j)=cder(j+2)+2*j*c(j+1) 11 continue endif con=2./(b-a) do 12 j=1,n cder(j)=cder(j)*con 12 continue return END C (C) Copr. 1986-92 Numerical Recipes Software D041&0(9p#3. FUNCTION chebev(a,b,c,m,x) INTEGER m REAL chebev,a,b,x,c(m) INTEGER j REAL d,dd,sv,y,y2 if ((x-a)*(x-b).gt.0.) then write(*,*) a,b,x pause 'x not in range in chebev' endif d=0. dd=0. y=(2.*x-a-b)/(b-a) y2=2.*y do 11 j=m,2,-1 sv=d d=y2*d-dd+c(j) dd=sv 11 continue chebev=y*d-dd+0.5*c(1) return END C (C) Copr. 1986-92 Numerical Recipes Software D041&0(9p#3.