System.out.println("Testing Fred2");
final Gfunc gfun = new Gfunc();
final Kernel ker = new Kernel();
Fred2 fred = new Fred2(a,b,N){
@Override
public double g(double x) {
return gfun.funk(x);
}
@Override
public double ak(double x, double t) {
return ker.funk(x, t);
}
};
double[] x=fred.t;
double[] f=fred.f;
double[] weight=fred.w;
for (i=0;i<N;i++) {
fexp[i]=sqrt(x[i]);
// System.out.printf(setprecision(6) << x[i] << " " <<weight[i] << " %f\n", f[i] << " %f\n", fexp[i]);
}
sbeps = 5.0e-6;
for (i=0;i<N;i++)
frac[i]=(x[i]-xexp[i])/xexp[i];
System.out.println(maxel(frac));
localflag = maxel(frac) > sbeps;
globalflag = globalflag || localflag;
if (localflag) {
fail("*** Fred2: Unexpected or imprecise abscissas");
}
sbeps = 5.0e-6;
for (i=0;i<N;i++)
frac[i]=(weight[i]-wexp[i])/wexp[i];
System.out.println(maxel(frac));
localflag = maxel(frac) > sbeps;
globalflag = globalflag || localflag;
if (localflag) {
fail("*** Fred2: Unexpected or imprecise weights");
}
sbeps = 2.0e-6;
System.out.println(maxel(vecsub(f,fexp)));
localflag = maxel(vecsub(f,fexp)) > sbeps;
globalflag = globalflag || localflag;
if (localflag) {
fail("*** Fred2: Imprecise result from integral equation at Gaussian quadrature abscissas ");
}
// Test method fredin()
for (i=0;i<M;i++) {
z=(b-a)*i/(M-1);
ff[i]=fred.fredin(z);
ffexp[i]=sqrt(z);
}
sbeps = 2.0e-6;
System.out.println(maxel(vecsub(ff,ffexp)));
localflag = maxel(vecsub(ff,ffexp)) > sbeps;