20 #include "base_spectral.hpp"
21 #include "headcpp.hpp"
22 #include "matrice.hpp"
25 int div_xp1_1d_pasprevu (Array<double>&) {
26 cout <<
"div_xp1_1d not implemented." << endl ;
31 int div_xp1_1d_cheb (Array<double>& so) {
32 assert (so.get_ndim()==1) ;
33 int nr = so.get_size(0) ;
34 Array<double> res (nr) ;
36 res.set(nr-2) = 2*so(nr-1) ;
37 for (
int i=nr-3 ; i>0 ; i--)
38 res.set(i) = 2*so(i+1) - 2*res(i+1) - res(i+2) ;
41 for (
int i=0 ; i<nr ; i++)
42 somme += (i%2==0) ? so(i) : -so(i) ;
44 res.set(0) = so(0) - res(1)/2. - somme ;
50 int div_xp1_1d (
int base, Array<double>& so) {
51 static int (*div_xp1_1d[NBR_MAX_BASE])(Array<double>&) ;
52 static bool premier_appel = true ;
56 premier_appel = false ;
58 for (
int i=0; i<NBR_MAX_BASE; i++)
59 div_xp1_1d[i] = div_xp1_1d_pasprevu ;
61 div_xp1_1d[CHEB] = div_xp1_1d_cheb ;
64 return div_xp1_1d[base](so) ;