45 double s3 = sqrt(3.0/5.0);
47 z[0] = -s3; w[0] = 5.0/9.0;
48 z[1] = 0.0; w[1] = 8.0/9.0;
49 z[2] = s3; w[2] = 5.0/9.0;
50 }
else if (order == 5){
55 z[0] = -1.0/3.0*sqrt(5.0 - 2.0*s1); w[0] = (322.0 + 13.0*s7)/900.0;
56 z[1] = -z[0]; w[1] = w[0];
58 z[2] = -1.0/3.0*sqrt(5.0 + 2.0*s1); w[2] = (322.0 - 13.0*s7)/900.0;
59 z[3] = -z[2]; w[3] = w[2];
61 z[4] = 0.0; w[4] = 128.0/225.0;
63 print (
"! GaussQuadrature: order must be either 3 or 5\n");
68 print (
"! GaussQuadrature: nstep must be > 0\n");
73 dx = (xe - xb)/(
double)nstep;
75 for (i = 0; i < nstep; i++){
80 for (n = 0; n < order; n++){
81 x = 0.5*(xe - xb)*z[n] + (xe + xb)*0.5;
84 Isub *= 0.5*(xe - xb);
double GaussQuadrature(double(*func)(double), double xb, double xe, int nstep, int order)
void print(const char *fmt,...)
#define QUIT_PLUTO(e_code)