//*----------------------------------------------------------------------* //* This program is free software: you can redistribute it and/or modify * //* it under the terms of the GNU General Public License as published by * //* the Free Software Foundation, either version 3 of the License, or * //* (at your option) any later version. * //* * //* This program is distributed in the hope that it will be useful, * //* but WITHOUT ANY WARRANTY; without even the implied warranty of * //* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * //* GNU General Public License for more details. * //* * //* You should have received a copy of the GNU General Public License * //* along with this program. If not, see . * //*----------------------------------------------------------------------* //*----------------------------------------------------------------------* //* Simple test function for Hermite polynomials, functions etc. * //* Warning: does not output warning or error if deviations occur! * //* Copyright 2013 Konrad Griessinger * //* (konradg(at)gmx.net) * //*----------------------------------------------------------------------* #include #include #include #include // #include #include #include int testherm(void) { const double aizero1 = -2.3381074104597670384891972524467; // first zero of the Airy function Ai double r; double x = cos(2*2*M_SQRT2); printf("x = %.18e\n", x); int j,m,n; printf("\n +++ gsl_sf_hermite_prob +++ \n"); //n = -2; //r = gsl_sf_hermite_prob(n,x); //printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, x, r); //printf("reference = ERROR / undefined \n"); n = 0; r = gsl_sf_hermite_prob(n,x); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, x, r); printf("reference = %.4e\n", 1.); n = 1; r = gsl_sf_hermite_prob(n,x); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, x, r); printf("reference = %.4e\n", x); n = 26; r = gsl_sf_hermite_prob(n,x); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, x, r); printf("reference = %.4e\n", 4.8421e12); n = 125; r = gsl_sf_hermite_prob(n,0.); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, 0., r); printf("reference = %.4e\n", 0.); n = 128; r = gsl_sf_hermite_prob(n,0.); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, 0., r); printf("reference = %.5e\n", 1.64749e107); n = 125; r = gsl_sf_hermite_prob(n,x); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, x, r); printf("reference = %.4e\n", 4.6866e103); n = 128; r = gsl_sf_hermite_prob(n,x); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", -1.88503e107); n = 10025; x = ((sqrt(2*n+1.)+aizero1/pow(8.*n,1/6.))/2)*M_SQRT2; r = gsl_sf_hermite_prob(n,x); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", -3.30905e18961); printf("reference = -3.30905e18961 (too large)\n"); n = 10028; x = ((sqrt(2*n+1.)+aizero1/pow(8.*n,1/6.))/2)*M_SQRT2; r = gsl_sf_hermite_prob(n,x); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", -7.51548e18967); printf("reference = -7.51548e18967 (too large)\n"); n = 10025; x = (sqrt(2*n+1.)-(aizero1/pow(8.*n,1/6.))/2)*M_SQRT2; r = gsl_sf_hermite_prob(n,x); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", -4.13693e22243); printf("reference = -4.13693e22243 (too large)\n"); n = 10028; x = (sqrt(2*n+1.)-(aizero1/pow(8.*n,1/6.))/2)*M_SQRT2; r = gsl_sf_hermite_prob(n,x); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", -8.36369e22250); printf("reference = -8.36369e22250 (too large)\n"); n = 10025; x = (sqrt(2*n+1.)-2*(aizero1/pow(8.*n,1/6.)))*M_SQRT2; r = gsl_sf_hermite_prob(n,x); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 7.398864e22273); printf("reference = 7.398864e22273 (too large)\n"); n = 10028; x = (sqrt(2*n+1.)-2*(aizero1/pow(8.*n,1/6.)))*M_SQRT2; r = gsl_sf_hermite_prob(n,x); printf("gsl_sf_hermite_prob(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 1.50713e22281); printf("reference = 1.50713e22281 (too large)\n"); printf("\n +++ gsl_sf_hermite_prob_der +++ \n"); x = cos(2*2*M_SQRT2); //m = -5; //n = 128; //r = gsl_sf_hermite_prob_der(m,n,x); //printf("gsl_sf_hermite_prob_der(%d,%d,%g) = %.18e\n", m, n, x, r); //printf("reference = ERROR / undefined \n"); //m = 5; //n = -128; //r = gsl_sf_hermite_prob_der(m,n,x); //printf("gsl_sf_hermite_prob_der(%d,%d,%g) = %.18e\n", m, n, x, r); //printf("reference = ERROR / undefined \n"); m = 225; n = 128; r = gsl_sf_hermite_prob_der(m,n,x); printf("gsl_sf_hermite_prob_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", 0.); m = 5; n = 128; r = gsl_sf_hermite_prob_der(m,n,x); printf("gsl_sf_hermite_prob_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", -1.43492e112); printf("\n +++ gsl_sf_hermite_phys +++ \n"); //n = -2; //r = gsl_sf_hermite_phys(n,x); //printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, x, r); //printf("reference = ERROR / undefined \n"); n = 0; r = gsl_sf_hermite_phys(n,x); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 1.); n = 1; r = gsl_sf_hermite_phys(n,x); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 2.*x); n = 26; r = gsl_sf_hermite_phys(n,x); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", -8.32015e16); n = 125; r = gsl_sf_hermite_phys(n,0.); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, 0., r); printf("reference = %.5e\n", 0.); n = 128; r = gsl_sf_hermite_phys(n,0.); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, 0., r); printf("reference = %.5e\n", 3.03909e126); n = 125; r = gsl_sf_hermite_phys(n,x); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 2.73606e122); n = 128; r = gsl_sf_hermite_phys(n,x); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, x, r); printf("reference = %.4e\n", 3.8616e126); n = 10025; x = (sqrt(2*n+1.)+aizero1/pow(8.*n,1/6.))/2; r = gsl_sf_hermite_phys(n,x); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", -2.70743e20470); printf("reference = -2.70743e20470 (too large)\n"); n = 10028; x = (sqrt(2*n+1.)+aizero1/pow(8.*n,1/6.))/2; r = gsl_sf_hermite_phys(n,x); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", -1.73922e20477); printf("reference = -1.73922e20477 (too large)\n"); n = 10025; x = (sqrt(2*n+1.)-(aizero1/pow(8.*n,1/6.))/2); r = gsl_sf_hermite_phys(n,x); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 3.38479e23752); printf("reference = 3.38479e23752 (too large)\n"); n = 10028; x = (sqrt(2*n+1.)-(aizero1/pow(8.*n,1/6.))/2); r = gsl_sf_hermite_phys(n,x); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 1.93551e23760); printf("reference = 1.93551e23760 (too large)\n"); n = 10025; x = (sqrt(2*n+1.)-2*(aizero1/pow(8.*n,1/6.))); r = gsl_sf_hermite_phys(n,x); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 6.05366e23782); printf("reference = 6.05366e23782 (too large)\n"); n = 10028; x = (sqrt(2*n+1.)-2*(aizero1/pow(8.*n,1/6.))); r = gsl_sf_hermite_phys(n,x); printf("gsl_sf_hermite_phys(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 3.48778e23790); printf("reference = 3.48778e23790 (too large)\n"); printf("\n +++ gsl_sf_hermite_phys_der +++ \n"); x = cos(2*2*M_SQRT2); //m = -5; //n = 128; //r = gsl_sf_hermite_phys_der(m,n,x); //printf("gsl_sf_hermite_phys_der(%d,%d,%g) = %.18e\n", m, n, x, r); //printf("reference = ERROR / undefined \n"); //m = 5; //n = -128; //r = gsl_sf_hermite_phys_der(m,n,x); //printf("gsl_sf_hermite_phys_der(%d,%d,%g) = %.18e\n", m, n, x, r); //printf("reference = ERROR / undefined \n"); m = 225; n = 128; r = gsl_sf_hermite_phys_der(m,n,x); printf("gsl_sf_hermite_phys_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", 0.); m = 5; n = 128; r = gsl_sf_hermite_phys_der(m,n,x); printf("gsl_sf_hermite_phys_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", -6.89377e131); printf("\n +++ gsl_sf_hermite_func +++ \n"); //n = -2; //r = gsl_sf_hermite_func(n,x); //printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, x, r); //printf("reference = ERROR / undefined \n"); n = 0; r = gsl_sf_hermite_func(n,x); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 0.54098); n = 1; r = gsl_sf_hermite_func(n,x); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 0.61984); n = 26; r = gsl_sf_hermite_func(n,x); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", -0.273596); n = 125; r = gsl_sf_hermite_func(n,0.); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, 0., r); printf("reference = %.5e\n", 0.); n = 128; r = gsl_sf_hermite_func(n,0.); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, 0., r); printf("reference = %.5e\n", 0.19928); n = 125; r = gsl_sf_hermite_func(n,x); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 0.05230); n = 128; r = gsl_sf_hermite_func(n,x); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 0.18237); n = 10025; x = (sqrt(2*n+1.)+aizero1/pow(8.*n,1/6.))/2; r = gsl_sf_hermite_func(n,x); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", -4.20129e-2); n = 10028; x = (sqrt(2*n+1.)+aizero1/pow(8.*n,1/6.))/2; r = gsl_sf_hermite_func(n,x); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", -4.49474e-2); n = 10025; x = (sqrt(2*n+1.)-(aizero1/pow(8.*n,1/6.))/2); r = gsl_sf_hermite_func(n,x); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 6.08490e-2); n = 10028; x = (sqrt(2*n+1.)-(aizero1/pow(8.*n,1/6.))/2); r = gsl_sf_hermite_func(n,x); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 6.08475e-2); n = 10025; x = (sqrt(2*n+1.)-2*(aizero1/pow(8.*n,1/6.))); r = gsl_sf_hermite_func(n,x); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 1.23112e-4); n = 10028; x = (sqrt(2*n+1.)-2*(aizero1/pow(8.*n,1/6.))); r = gsl_sf_hermite_func(n,x); printf("gsl_sf_hermite_func(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 1.23109e-4); printf("\n +++ gsl_sf_hermite_func_der +++ \n"); x = cos(2*2*M_SQRT2); //m = -5; //n = 128; //r = gsl_sf_hermite_func_der(m,n,x); //printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); //printf("reference = ERROR / undefined \n"); //m = 5; //n = -128; //r = gsl_sf_hermite_func_der(m,n,x); //printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); //printf("reference = ERROR / undefined \n"); m = 225; n = 128; r = gsl_sf_hermite_func_der(m,n,x); printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", 6.89461e277); m = 5; n = 128; r = gsl_sf_hermite_func_der(m,n,x); printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", -8.5143e4); x = cos(2*2*M_SQRT2); double res[10]; printf("\n +++ gsl_sf_hermite_prob_array +++ \n"); //n = -2; //gsl_sf_hermite_prob_array(n,x,res); //printf("gsl_sf_hermite_prob_array(%d,%g)[%d] = %.18e\n", n, x, 0, res[0]); //printf("reference = ERROR / undefined \n"); n = 0; gsl_sf_hermite_prob_array(n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_prob_array(%d,%g)[%d] = %.18e\n", n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob(j,x)); } printf("\n"); n = 1; gsl_sf_hermite_prob_array(n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_prob_array(%d,%g)[%d] = %.18e\n", n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob(j,x)); } printf("\n"); n = 3; gsl_sf_hermite_prob_array(n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_prob_array(%d,%g)[%d] = %.18e\n", n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob(j,x)); } printf("\n"); printf("\n +++ gsl_sf_hermite_prob_array_der +++ \n"); //n = -2; //gsl_sf_hermite_prob_array_der(n,x,res); //printf("gsl_sf_hermite_prob_array_der(%d,%g)[%d] = %.18e\n", n, x, 0, res[0]); //printf("reference = ERROR / undefined \n"); n = 2; m = 0; gsl_sf_hermite_prob_array_der(m,n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_prob_array_der(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob_der(m,j,x)); } printf("\n"); n = 1; m = 2; gsl_sf_hermite_prob_array_der(m,n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_prob_array_der(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob_der(m,j,x)); } printf("\n"); n = 2; m = 2; gsl_sf_hermite_prob_array_der(m,n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_prob_array_der(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob_der(m,j,x)); } printf("\n"); n = 3; m = 2; gsl_sf_hermite_prob_array_der(m,n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_prob_array_der(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob_der(m,j,x)); } printf("\n"); n = 5; m = 2; gsl_sf_hermite_prob_array_der(m,n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_prob_array_der(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob_der(m,j,x)); } printf("\n"); printf("\n +++ gsl_sf_hermite_prob_der_array +++ \n"); //n = -2; //m = 2; //gsl_sf_hermite_prob_der_array(m,n,x,res); //printf("gsl_sf_hermite_prob_der_array(%d,%d,%g)[%d] = %.18e\n", m, n, x, 0, res[0]); //printf("reference = ERROR / undefined \n"); n = 0; m = 2; gsl_sf_hermite_prob_der_array(m,n,x,res); for(j=0;j<=m;j++){ printf("gsl_sf_hermite_prob_der_array(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob_der(j,n,x)); } printf("\n"); n = 2; m = 0; gsl_sf_hermite_prob_der_array(m,n,x,res); for(j=0;j<=m;j++){ printf("gsl_sf_hermite_prob_der_array(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob_der(j,n,x)); } printf("\n"); n = 2; m = 1; gsl_sf_hermite_prob_der_array(m,n,x,res); for(j=0;j<=m;j++){ printf("gsl_sf_hermite_prob_der_array(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob_der(j,n,x)); } printf("\n"); n = 2; m = 3; gsl_sf_hermite_prob_der_array(m,n,x,res); for(j=0;j<=m;j++){ printf("gsl_sf_hermite_prob_der_array(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob_der(j,n,x)); } printf("\n"); n = 2; m = 5; gsl_sf_hermite_prob_der_array(m,n,x,res); for(j=0;j<=m;j++){ printf("gsl_sf_hermite_prob_der_array(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_prob_der(j,n,x)); } printf("\n"); printf("\n +++ gsl_sf_hermite_prob_series +++ \n"); n = 9; for(j=0;j<=n;j++){ res[j] = sqrt(j-aizero1); // recycling the array with arbitrary coefficients } //n = -2; //r = gsl_sf_hermite_prob_series(n,x,res); //printf("gsl_sf_hermite_prob_series(%d,%g) = %.18e\n", n, x, r); //printf("reference = ERROR / undefined \n"); n = 0; r = gsl_sf_hermite_prob_series(n,x,res); printf("gsl_sf_hermite_prob_series(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 1.5290871); n = 1; r = gsl_sf_hermite_prob_series(n,x,res); printf("gsl_sf_hermite_prob_series(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 3.00933); n = 7; r = gsl_sf_hermite_prob_series(n,x,res); printf("gsl_sf_hermite_prob_series(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", -7.07997e1); printf("\n +++ gsl_sf_hermite_phys_array +++ \n"); //n = -2; //gsl_sf_hermite_phys_array(n,x,res); //printf("gsl_sf_hermite_phys_array(%d,%g)[%d] = %.18e\n", n, x, 0, res[0]); //printf("reference = ERROR / undefined \n"); n = 0; gsl_sf_hermite_phys_array(n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_phys_array(%d,%g)[%d] = %.18e\n", n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys(j,x)); } printf("\n"); n = 1; gsl_sf_hermite_phys_array(n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_phys_array(%d,%g)[%d] = %.18e\n", n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys(j,x)); } printf("\n"); n = 3; gsl_sf_hermite_phys_array(n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_phys_array(%d,%g)[%d] = %.18e\n", n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys(j,x)); } printf("\n"); printf("\n +++ gsl_sf_hermite_phys_array_der +++ \n"); //n = -2; //gsl_sf_hermite_phys_array_der(n,x,res); //printf("gsl_sf_hermite_phys_array_der(%d,%g)[%d] = %.18e\n", n, x, 0, res[0]); //printf("reference = ERROR / undefined \n"); n = 2; m = 0; gsl_sf_hermite_phys_array_der(m,n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_phys_array_der(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys_der(m,j,x)); } printf("\n"); n = 1; m = 2; gsl_sf_hermite_phys_array_der(m,n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_phys_array_der(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys_der(m,j,x)); } printf("\n"); n = 2; m = 2; gsl_sf_hermite_phys_array_der(m,n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_phys_array_der(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys_der(m,j,x)); } printf("\n"); n = 3; m = 2; gsl_sf_hermite_phys_array_der(m,n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_phys_array_der(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys_der(m,j,x)); } printf("\n"); n = 5; m = 2; gsl_sf_hermite_phys_array_der(m,n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_phys_array_der(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys_der(m,j,x)); } printf("\n"); printf("\n +++ gsl_sf_hermite_phys_der_array +++ \n"); //n = -2; //m = 2; //gsl_sf_hermite_phys_der_array(m,n,x,res); //printf("gsl_sf_hermite_phys_der_array(%d,%d,%g)[%d] = %.18e\n", m, n, x, 0, res[0]); //printf("reference = ERROR / undefined \n"); n = 0; m = 2; gsl_sf_hermite_phys_der_array(m,n,x,res); for(j=0;j<=m;j++){ printf("gsl_sf_hermite_phys_der_array(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys_der(j,n,x)); } printf("\n"); n = 2; m = 0; gsl_sf_hermite_phys_der_array(m,n,x,res); for(j=0;j<=m;j++){ printf("gsl_sf_hermite_phys_der_array(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys_der(j,n,x)); } printf("\n"); n = 2; m = 1; gsl_sf_hermite_phys_der_array(m,n,x,res); for(j=0;j<=m;j++){ printf("gsl_sf_hermite_phys_der_array(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys_der(j,n,x)); } printf("\n"); n = 2; m = 3; gsl_sf_hermite_phys_der_array(m,n,x,res); for(j=0;j<=m;j++){ printf("gsl_sf_hermite_phys_der_array(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys_der(j,n,x)); } printf("\n"); n = 2; m = 5; gsl_sf_hermite_phys_der_array(m,n,x,res); for(j=0;j<=m;j++){ printf("gsl_sf_hermite_phys_der_array(%d,%d,%g)[%d] = %.18e\n", m, n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_phys_der(j,n,x)); } printf("\n"); printf("\n +++ gsl_sf_hermite_phys_series +++ \n"); n = 9; for(j=0;j<=n;j++){ res[j] = sqrt(j-aizero1); // recycling the array with arbitrary coefficients } //n = -2; //r = gsl_sf_hermite_phys_series(n,x,res); //printf("gsl_sf_hermite_phys_series(%d,%g) = %.18e\n", n, x, r); //printf("reference = ERROR / undefined \n"); n = 0; r = gsl_sf_hermite_phys_series(n,x,res); printf("gsl_sf_hermite_phys_series(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 1.5290871); n = 1; r = gsl_sf_hermite_phys_series(n,x,res); printf("gsl_sf_hermite_phys_series(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 4.48958); n = 7; r = gsl_sf_hermite_phys_series(n,x,res); printf("gsl_sf_hermite_phys_series(%d,%g) = %.18e\n", n, x, r); printf("reference = %.4e\n", 4.5477e2); printf("\n +++ gsl_sf_hermite_func_array +++ \n"); //n = -2; //gsl_sf_hermite_func_array(n,x,res); //printf("gsl_sf_hermite_func_array(%d,%g)[%d] = %.18e\n", n, x, 0, res[0]); //printf("reference = ERROR / undefined \n"); n = 0; gsl_sf_hermite_func_array(n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_func_array(%d,%g)[%d] = %.18e\n", n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_func(j,x)); } printf("\n"); n = 1; gsl_sf_hermite_func_array(n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_func_array(%d,%g)[%d] = %.18e\n", n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_func(j,x)); } printf("\n"); n = 3; gsl_sf_hermite_func_array(n,x,res); for(j=0;j<=n;j++){ printf("gsl_sf_hermite_func_array(%d,%g)[%d] = %.18e\n", n, x, j, res[j]); printf("reference = %.4e\n", gsl_sf_hermite_func(j,x)); } printf("\n"); printf("\n +++ gsl_sf_hermite_func_series +++ \n"); n = 9; for(j=0;j<=n;j++){ res[j] = sqrt(j-aizero1); // recycling the array with arbitrary coefficients } //n = -2; //r = gsl_sf_hermite_func_series(n,x,res); //printf("gsl_sf_hermite_func_series(%d,%g) = %.18e\n", n, x, r); //printf("reference = ERROR / undefined \n"); n = 0; r = gsl_sf_hermite_func_series(n,x,res); printf("gsl_sf_hermite_func_series(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 0.827199); n = 1; r = gsl_sf_hermite_func_series(n,x,res); printf("gsl_sf_hermite_func_series(%d,%g) = %.18e\n", n, x, r); printf("reference = %.5e\n", 1.95967); n = 7; r = gsl_sf_hermite_func_series(n,x,res); printf("gsl_sf_hermite_func_series(%d,%g) = %.18e\n", n, x, r); printf("reference = %.4e\n", 2.06062); printf("\n +++ gsl_sf_hermite_func_der +++ \n"); x = cos(2*2*M_SQRT2); //m = -5; //n = 128; //r = gsl_sf_hermite_func_der(m,n,x); //printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); //printf("reference = ERROR / undefined \n"); //m = 5; //n = -128; //r = gsl_sf_hermite_func_der(m,n,x); //printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); //printf("reference = ERROR / undefined \n"); m = 0; n = 127; r = gsl_sf_hermite_func_der(m,n,x); printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", -0.0714512); m = 1; n = 127; r = gsl_sf_hermite_func_der(m,n,x); printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", -2.97576); m = 2; n = 127; r = gsl_sf_hermite_func_der(m,n,x); printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", 18.1732); m = 225; n = 127; r = gsl_sf_hermite_func_der(m,n,x); printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", 1.50931e278); m = 0; n = 128; r = gsl_sf_hermite_func_der(m,n,x); printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", 0.182367); m = 1; n = 128; r = gsl_sf_hermite_func_der(m,n,x); printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", -1.29097); m = 2; n = 128; r = gsl_sf_hermite_func_der(m,n,x); printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", -46.7485); m = 225; n = 128; r = gsl_sf_hermite_func_der(m,n,x); printf("gsl_sf_hermite_func_der(%d,%d,%g) = %.18e\n", m, n, x, r); printf("reference = %.5e\n", 6.89461e277); return 0; }