/* calculate inner product matrix element $int_{-1}^1 Pm(x)Tn(x) dx$ * of Legendre polynomials Pm and Chebyshev polynomials Tn */ #define D double #define F float #include #include "../iolib/message.h" float PxT(m,n,ifnorm) int m,n; int ifnorm; /* ifnorm==0 -> P & T are not normalized (see ShuXueShouCe) ifnorm==1 -> P & T normalized: $int_{-1}^1 Pm*Pm =1$ $int_{-1}^1 Tn*Tn =1$ */ { float sum; int N,J,K,j,k,jmax,kmax,i,nmm; float fac,p,t; if(ifnorm!=0 && ifnorm!=1) STOP(PxT: illegal normalization); if(m<0||n<0) STOP(PxT: illegal argument); if((m+n)%2) return 0.0; jmax=n/2; kmax=m/2; sum=0.0; for(j=0;j<=jmax;j++) for(k=0;k<=kmax;k++) { fac=1.0; if((k+j)%2) fac=-1.0; for(i=0;inmm;i--) fac/=2.0; if(nmm>0) for(i=0;i