#include <math.h>
#include "nrutil.h"
#define PI 3.141592653589793

void chebft(a,b,c,n,func)
float (*func)(),a,b,c[];
int n;
{
	int k,j;
	float fac,bpa,bma,*f;

	f=vector(0,n-1);
	bma=0.5*(b-a);
	bpa=0.5*(b+a);
	for (k=0;k<n;k++) {
		float y=cos(PI*(k+0.5)/n);
		f[k]=(*func)(y*bma+bpa);
	}
	fac=2.0/n;
	for (j=0;j<n;j++) {
		double sum=0.0;
		for (k=0;k<n;k++)
			sum += f[k]*cos(PI*j*(k+0.5)/n);
		c[j]=fac*sum;
	}
	free_vector(f,0,n-1);
}
#undef PI