void gauleg(const Doub x1, const Doub x2, VecDoub_O &x, VecDoub_O &w) { const Doub EPS=1.0e-14; Doub z1,z,xm,xl,pp,p3,p2,p1; Int n=x.size(); Int m=(n+1)/2; xm=0.5*(x2+x1); xl=0.5*(x2-x1); for (Int i=0;i EPS); x[i]=xm-xl*z; x[n-1-i]=xm+xl*z; w[i]=2.0*xl/((1.0-z*z)*pp*pp); w[n-1-i]=w[i]; } } void gaulag(VecDoub_O &x, VecDoub_O &w, const Doub alf) { const Int MAXIT=10; const Doub EPS=1.0e-14; Int i,its,j; Doub ai,p1,p2,p3,pp,z,z1; Int n=x.size(); for (i=0;i= MAXIT) throw("too many iterations in gaulag"); x[i]=z; w[i] = -exp(gammln(alf+n)-gammln(Doub(n)))/(pp*n*p2); } } void gauher(VecDoub_O &x, VecDoub_O &w) { const Doub EPS=1.0e-14,PIM4=0.7511255444649425; const Int MAXIT=10; Int i,its,j,m; Doub p1,p2,p3,pp,z,z1; Int n=x.size(); m=(n+1)/2; for (i=0;i= MAXIT) throw("too many iterations in gauher"); x[i]=z; x[n-1-i] = -z; w[i]=2.0/(pp*pp); w[n-1-i]=w[i]; } } void gaujac(VecDoub_O &x, VecDoub_O &w, const Doub alf, const Doub bet) { const Int MAXIT=10; const Doub EPS=1.0e-14; Int i,its,j; Doub alfbet,an,bn,r1,r2,r3; Doub a,b,c,p1,p2,p3,pp,temp,z,z1; Int n=x.size(); for (i=0;i MAXIT) throw("too many iterations in gaujac"); x[i]=z; w[i]=exp(gammln(alf+n)+gammln(bet+n)-gammln(n+1.0)- gammln(n+alfbet+1.0))*temp*pow(2.0,alfbet)/(pp*p2); } }