118 double *z,*w,*
p,sum=0,alpha,beta,*d,*dt;
129 printf(
"Begin checking Gauss integration\n");
136 zwgj(z,w,np,alpha,beta);
137 for(n = 2; n < 2*np-1; ++n){
139 sum =
ddot(np,w,1,
p,1);
141 printf(
"alpha = %lf, beta = %lf, np = %d, n = %d integal was %lg\n"
142 ,alpha,beta,np,n,sum);
148 printf(
"finished checking all beta values for alpha = %lf\n",alpha);
151 printf(
"Finished checking Gauss Integration\n");
156 printf(
"Begin checking Gauss Radau Integration\n");
162 zwgrjm(z,w,np,alpha,beta);
163 for(n = 2; n < 2*np-2; ++n){
165 sum =
ddot(np,w,1,
p,1);
167 printf(
"alpha = %lf, beta = %lf, np = %d, n = %d integal was %lg\n"
168 ,alpha,beta,np,n,sum);
174 printf(
"finished checking all beta values for alpha = %lf\n",alpha);
177 printf(
"Finished checking Gauss Radau (z=-1) Integration\n");
183 printf(
"Begin checking Gauss Radau Integration\n");
189 zwgrjp(z,w,np,alpha,beta);
190 for(n = 2; n < 2*np-2; ++n){
192 sum =
ddot(np,w,1,
p,1);
194 printf(
"alpha = %lf, beta = %lf, np = %d, n = %d integal was %lg\n"
195 ,alpha,beta,np,n,sum);
201 printf(
"finished checking all beta values for alpha = %lf\n",alpha);
204 printf(
"Finished checking Gauss Radau (z=1) Integration\n");
207 #if GAUSS_LOBATTO_INT
209 printf(
"Begin checking Gauss Lobatto integration\n");
216 zwglj(z,w,np,alpha,beta);
217 for(n = 2; n < 2*np-3; ++n){
219 sum =
ddot(np,w,1,
p,1);
221 printf(
"alpha = %lf, beta = %lf, np = %d, n = %d integal was %lg\n"
222 ,alpha,beta,np,n,sum);
228 printf(
"finished checking all beta values for alpha = %lf\n",alpha);
231 printf(
"Finished checking Gauss Lobatto Integration\n");
235 printf(
"Begin checking differentiation through Gauss points\n");
242 zwgj(z,w,np,alpha,beta);
243 for(n = 2; n < np-1; ++n){
244 Dgj(d,z,np,alpha,beta);
246 for(i = 0; i < np; ++i)
p[i] = pow(z[i],n);
248 for(i = 0; i < np; ++i)
249 sum += fabs(
ddot(np,d+i*np,1,
p,1) - n*pow(z[i],n-1));
252 printf(
"alpha = %lf, beta = %lf, np = %d, n = %d difference %lg\n"
253 ,alpha,beta,np,n,sum);
258 printf(
"finished checking all beta values for alpha = %lf\n",alpha);
261 printf(
"Finished checking Gauss Jacobi differentiation\n");
264 #if GAUSS_RADAUM_DIFF
265 printf(
"Begin checking differentiation through Gauss Radau points\n");
272 zwgrjm(z,w,np,alpha,beta);
273 for(n = 2; n < np-1; ++n){
274 Dgrjm(d,z,np,alpha,beta);
275 for(i = 0; i < np; ++i)
p[i] = pow(z[i],n);
277 for(i = 0; i < np; ++i)
278 sum += fabs(
ddot(np,d+i*np,1,
p,1) - n*pow(z[i],n-1));
281 printf(
"alpha = %lf, beta = %lf, np = %d, n = %d difference %lg\n"
282 ,alpha,beta,np,n,sum);
287 printf(
"finished checking all beta values for alpha = %lf\n",alpha);
290 printf(
"Finished checking Gauss Radau (z=-1) differentiation\n");
293 #if GAUSS_RADAUP_DIFF
294 printf(
"Begin checking differentiation through Gauss Radau (z=1) points\n");
301 zwgrjp(z,w,np,alpha,beta);
302 for(n = 2; n < np-1; ++n){
303 Dgrjp(d,z,np,alpha,beta);
304 for(i = 0; i < np; ++i)
p[i] = pow(z[i],n);
306 for(i = 0; i < np; ++i)
307 sum += fabs(
ddot(np,d+i*np,1,
p,1) - n*pow(z[i],n-1));
310 printf(
"alpha = %lf, beta = %lf, np = %d, n = %d difference %lg\n"
311 ,alpha,beta,np,n,sum);
316 printf(
"finished checking all beta values for alpha = %lf\n",alpha);
319 printf(
"Finished checking Gauss Radau (z=1) differentiation\n");
322 #if GAUSS_LOBATTO_DIFF
323 printf(
"Begin checking differentiation through Gauss Lobatto points\n");
330 zwglj(z,w,np,alpha,beta);
331 for(n = 2; n < np-1; ++n){
332 Dglj(d,z,np,alpha,beta);
333 for(i = 0; i < np; ++i)
p[i] = pow(z[i],n);
335 for(i = 0; i < np; ++i)
336 sum += fabs(
ddot(np,d+i*np,1,
p,1) - n*pow(z[i],n-1));
339 printf(
"alpha = %lf, beta = %lf, np = %d, n = %d difference %lg\n"
340 ,alpha,beta,np,n,sum);
345 printf(
"finished checking all beta values for alpha = %lf\n",alpha);
348 printf(
"Finished checking Gauss Lobatto differentiation\n");
353 printf(
"Begin checking interpolation through Gauss points\n");
360 zwgj(z,w,np,alpha,beta);
361 for(n = 2; n < np-1; ++n){
362 for(i = 0; i < np; ++i) {
363 w[i] = 2.0*i/(double)(np-1)-1.0;
366 Imgj(d,z,w,np,np,alpha,beta);
368 for(i = 0; i < np; ++i)
369 sum += fabs(
ddot(np,d+i*np,1,
p,1) - pow(w[i],n));
372 printf(
"alpha = %lf, beta = %lf, np = %d, n = %d difference %lg\n"
373 ,alpha,beta,np,n,sum);
378 printf(
"finished checking all beta values for alpha = %lf\n",alpha);
381 printf(
"Finished checking Gauss Jacobi interpolation\n");
384 #if GAUSS_RADAUM_INTERP
385 printf(
"Begin checking Interpolation through Gauss Radau (z=-1) points\n");
392 zwgrjm(z,w,np,alpha,beta);
393 for(n = 2; n < np-1; ++n){
394 for(i = 0; i < np; ++i) {
395 w[i] = 2.0*i/(double)(np-1)-1.0;
398 Imgrjm(d,z,w,np,np,alpha,beta);
400 for(i = 0; i < np; ++i)
401 sum += fabs(
ddot(np,d+i*np,1,
p,1) - pow(w[i],n));
404 printf(
"alpha = %lf, beta = %lf, np = %d, n = %d difference %lg\n"
405 ,alpha,beta,np,n,sum);
410 printf(
"finished checking all beta values for alpha = %lf\n",alpha);
413 printf(
"Finished checking Gauss Radua Jacobi (z=-1) interpolation\n");
415 #if GAUSS_RADAUP_INTERP
416 printf(
"Begin checking Interpolation through Gauss Radau (z=1) points\n");
423 zwgrjp(z,w,np,alpha,beta);
424 for(n = 2; n < np-1; ++n){
425 for(i = 0; i < np; ++i) {
426 w[i] = 2.0*i/(double)(np-1)-1.0;
429 Imgrjp(d,z,w,np,np,alpha,beta);
431 for(i = 0; i < np; ++i)
432 sum += fabs(
ddot(np,d+i*np,1,
p,1) - pow(w[i],n));
435 printf(
"alpha = %lf, beta = %lf, np = %d, n = %d difference %lg\n"
436 ,alpha,beta,np,n,sum);
441 printf(
"finished checking all beta values for alpha = %lf\n",alpha);
444 printf(
"Finished checking Gauss Radau (z=1) interpolation\n");
447 #if GAUSS_LOBATTO_INTERP
448 printf(
"Begin checking Interpolation through Gauss Lobatto points\n");
455 zwglj(z,w,np,alpha,beta);
456 for(n = 2; n < np-1; ++n){
457 for(i = 0; i < np; ++i) {
458 w[i] = 2.0*i/(double)(np-1)-1.0;
461 Imglj(d,z,w,np,np,alpha,beta);
463 for(i = 0; i < np; ++i)
464 sum += fabs(
ddot(np,d+i*np,1,
p,1) - pow(w[i],n));
467 printf(
"alpha = %lf, beta = %lf, np = %d, n = %d difference %lg\n"
468 ,alpha,beta,np,n,sum);
473 printf(
"finished checking all beta values for alpha = %lf\n",alpha);
476 printf(
"Finished checking Gauss Lobatto interploation\n");
481 free(z); free(w); free(
p); free(d); free(dt);
double * dvector(int, int)
int test_gamma_fraction()
double ddot(int, double *, int, double *, int)
void Dgj(double *D, const double *z, const int np, const double alpha, const double beta)
Compute the Derivative Matrix and its transpose associated with the Gauss-Jacobi zeros.
void zwgrjm(double *z, double *w, const int np, const double alpha, const double beta)
Gauss-Radau-Jacobi zeros and weights with end point at z=-1.
void zwgrjp(double *z, double *w, const int np, const double alpha, const double beta)
Gauss-Radau-Jacobi zeros and weights with end point at z=1.
void Dglj(double *D, const double *z, const int np, const double alpha, const double beta)
Compute the Derivative Matrix associated with the Gauss-Lobatto-Jacobi zeros.
void Imgrjp(double *im, const double *zgrj, const double *zm, const int nz, const int mz, const double alpha, const double beta)
Interpolation Operator from Gauss-Radau-Jacobi points (including z=1) to an arbitrary distrubtion at ...
void zwglj(double *z, double *w, const int np, const double alpha, const double beta)
Gauss-Lobatto-Jacobi zeros and weights with end point at z=-1,1.
void zwgj(double *z, double *w, const int np, const double alpha, const double beta)
Gauss-Jacobi zeros and weights.
void Imgj(double *im, const double *zgj, const double *zm, const int nz, const int mz, const double alpha, const double beta)
Interpolation Operator from Gauss-Jacobi points to an arbitrary distribution at points zm.
void Imgrjm(double *im, const double *zgrj, const double *zm, const int nz, const int mz, const double alpha, const double beta)
Interpolation Operator from Gauss-Radau-Jacobi points (including z=-1) to an arbitrary distrubtion at...
void Dgrjm(double *D, const double *z, const int np, const double alpha, const double beta)
Compute the Derivative Matrix and its transpose associated with the Gauss-Radau-Jacobi zeros with a z...
void Dgrjp(double *D, const double *z, const int np, const double alpha, const double beta)
Compute the Derivative Matrix associated with the Gauss-Radau-Jacobi zeros with a zero at z=1.
void Imglj(double *im, const double *zglj, const double *zm, const int nz, const int mz, const double alpha, const double beta)
Interpolation Operator from Gauss-Lobatto-Jacobi points to an arbitrary distrubtion at points zm.
void jacobfd(const int np, const double *z, double *poly_in, double *polyd, const int n, const double alpha, const double beta)
Routine to calculate Jacobi polynomials, , and their first derivative, .