legendre_fit.c running fit f(x) = a_0 g0 P0(x) + a_1 g1 P1(x) + ... a_n gn Pn(x) where Pi(x) as P(i,x) is a Legendre polynomial the weight function is 1.0 the integral range is -1 to 1 a_i = integral -1 to 1 of f(x) Pi(x) dx gi = (2*i+1)/2 test on e^x = 1 + x + 1/2 x^2 + 1/6 x^3 + 1/24 x^4 + 1/120 x^5 using Phi(i,x) = sqrt((2i+1)/2 P(i,x) both places works also using P0 thru P4, trapezoidal nn=2048 a[0]= 2.35040, exp coefficient= 1.00000 a[1]= 0.73576, exp coefficient= 1.00000 a[2]= 0.14313, exp coefficient= 0.50000 a[3]= 0.02013, exp coefficient= 0.16667 a[4]= 0.00222, exp coefficient= 0.04167 P(i,x) with no correction does not work x=-1.00000, val= 1.73986, exp(x)= 0.36788, err= 1.37198 x=-0.77778, val= 1.83561, exp(x)= 0.45943, err= 1.37619 x=-0.55556, val= 1.94368, exp(x)= 0.57375, err= 1.36993 x=-0.33333, val= 2.06567, exp(x)= 0.71653, err= 1.34914 x=-0.11111, val= 2.20376, exp(x)= 0.89484, err= 1.30892 x= 0.11111, val= 2.36068, exp(x)= 1.11752, err= 1.24317 x= 0.33333, val= 2.53977, exp(x)= 1.39561, err= 1.14416 x= 0.55556, val= 2.74490, exp(x)= 1.74291, err= 1.00199 x= 0.77778, val= 2.98052, exp(x)= 2.17663, err= 0.80389 x= 1.00000, val= 3.25164, exp(x)= 2.71828, err= 0.53336 maxerr= 1.37619, rmserr= 1.18218 using evaluation factor (2i+1)/2 a_i P(i,x) works x=-1.00000, val= 0.36890, exp(x)= 0.36788, err= 0.00102 x=-0.77778, val= 0.45900, exp(x)= 0.45943, err=-0.00043 x=-0.55556, val= 0.57368, exp(x)= 0.57375, err=-0.00007 x=-0.33333, val= 0.71688, exp(x)= 0.71653, err= 0.00035 x=-0.11111, val= 0.89508, exp(x)= 0.89484, err= 0.00024 x= 0.11111, val= 1.11733, exp(x)= 1.11752, err=-0.00019 x= 0.33333, val= 1.39523, exp(x)= 1.39561, err=-0.00039 x= 0.55556, val= 1.74292, exp(x)= 1.74291, err= 0.00001 x= 0.77778, val= 2.17712, exp(x)= 2.17663, err= 0.00049 x= 1.00000, val= 2.71709, exp(x)= 2.71828, err=-0.00119 maxerr= 0.00119, rmserr= 0.00057 using Phi(i,x)=sqrt((2i+1)/2) P(i,x) for integration a[0]= 1.66199, exp coefficient= 1.00000 a[1]= 0.90112, exp coefficient= 1.00000 a[2]= 0.22630, exp coefficient= 0.50000 a[3]= 0.03766, exp coefficient= 0.16667 a[4]= 0.00470, exp coefficient= 0.04167 using Phi(i,x)=sqrt((2i+1)/2) P(i,x) for evaluation x=-1.00000, val= 0.36890, exp(x)= 0.36788, err= 0.00102 x=-0.77778, val= 0.45900, exp(x)= 0.45943, err=-0.00043 x=-0.55556, val= 0.57368, exp(x)= 0.57375, err=-0.00007 x=-0.33333, val= 0.71688, exp(x)= 0.71653, err= 0.00035 x=-0.11111, val= 0.89508, exp(x)= 0.89484, err= 0.00024 x= 0.11111, val= 1.11733, exp(x)= 1.11752, err=-0.00019 x= 0.33333, val= 1.39523, exp(x)= 1.39561, err=-0.00039 x= 0.55556, val= 1.74292, exp(x)= 1.74291, err= 0.00001 x= 0.77778, val= 2.17712, exp(x)= 2.17663, err= 0.00049 x= 1.00000, val= 2.71709, exp(x)= 2.71828, err=-0.00119 maxerr= 0.00119, rmserr= 0.00057 using P0 thru P6, trapezoidal nn=8192 using Phi(i,x)=sqrt((2i+1)/2) P(i,x) for integration a[0]= 2.350402, exp coefficient= 1.000000 a[1]= 0.735759, exp coefficient= 1.000000 a[2]= 0.143126, exp coefficient= 0.500000 a[3]= 0.020130, exp coefficient= 0.166667 a[4]= 0.002215, exp coefficient= 0.041667 a[5]= 0.000200, exp coefficient= 0.008333 a[6]= 0.000016, exp coefficient= 0.001389 using (2i+1)/2 P(i,x) for evaluation x=-1.000000, val= 0.367888, exp(x)= 0.367879, err=0.0000088 x=-0.777778, val= 0.459424, exp(x)= 0.459426, err=-0.0000017 x=-0.555556, val= 0.573756, exp(x)= 0.573753, err=0.0000027 x=-0.333333, val= 0.716530, exp(x)= 0.716531, err=-0.0000010 x=-0.111111, val= 0.894837, exp(x)= 0.894839, err=-0.0000022 x= 0.111111, val= 1.117520, exp(x)= 1.117519, err=0.0000014 x= 0.333333, val= 1.395614, exp(x)= 1.395612, err=0.0000020 x= 0.555556, val= 1.742907, exp(x)= 1.742909, err=-0.0000022 x= 0.777778, val= 2.176630, exp(x)= 2.176630, err=-0.0000002 x= 1.000000, val= 2.718278, exp(x)= 2.718282, err=-0.0000037 maxerr= 0.0000088, rmserr= 0.0000034 legendre_fit.c finished