98 void _dsdx_pas_prevu(Tbl* ,
int & b) {
99 cout <<
"dsdx pas prevu..." << endl ;
100 cout <<
" base: " << b << endl ;
106 void _dsdx_r_cheb(Tbl *tb,
int & )
110 if (tb->get_etat() == ETATZERO) {
115 assert(tb->get_etat() == ETATQCQ) ;
118 int nr = (tb->dim).dim[0] ;
119 int nt = (tb->dim).dim[1] ;
120 int np = (tb->dim).dim[2] ;
124 double* xo =
new double[(tb->dim).taille] ;
127 for (
int i=0; i<(tb->dim).taille; i++) {
136 int borne_phi = np + 1 ;
137 if (np == 1) borne_phi = 1 ;
139 for (
int k=0 ; k< borne_phi ; k++)
146 for (
int j=0 ; j<nt ; j++) {
151 som = 2*(nr-1) * xci[nr-1] ;
153 for (
int i = nr-4 ; i >= 0 ; i -= 2 ) {
154 som += 2*(i+1) * xci[i+1] ;
157 som = 2*(nr-2) * xci[nr-2] ;
159 for (
int i = nr-5 ; i >= 0 ; i -= 2 ) {
160 som += 2*(i+1) * xci[i+1] ;
180 void _dsdx_r_chebu(Tbl *tb,
int & )
184 if (tb->get_etat() == ETATZERO) {
189 assert(tb->get_etat() == ETATQCQ) ;
192 int nr = (tb->dim).dim[0] ;
193 int nt = (tb->dim).dim[1] ;
194 int np = (tb->dim).dim[2] ;
198 double* xo =
new double[(tb->dim).taille] ;
201 for (
int i=0; i<(tb->dim).taille; i++) {
210 int borne_phi = np + 1 ;
211 if (np == 1) borne_phi = 1 ;
213 for (
int k=0 ; k< borne_phi ; k++)
222 for (
int j=0 ; j<nt ; j++) {
227 som = 2*(nr-1) * xci[nr-1] ;
229 for (
int i = nr-4 ; i >= 0 ; i -= 2 ) {
230 som += 2*(i+1) * xci[i+1] ;
233 som = 2*(nr-2) * xci[nr-2] ;
235 for (
int i = nr-5 ; i >= 0 ; i -= 2 ) {
236 som += 2*(i+1) * xci[i+1] ;
256 void _dsdx_r_chebp(Tbl *tb,
int & b)
260 if (tb->get_etat() == ETATZERO) {
261 int base_t = b &
MSQ_T ;
262 int base_p = b &
MSQ_P ;
263 b = base_p | base_t |
R_CHEBI ;
268 assert(tb->get_etat() == ETATQCQ) ;
271 int nr = (tb->dim).dim[0] ;
272 int nt = (tb->dim).dim[1] ;
273 int np = (tb->dim).dim[2] ;
277 double* xo =
new double[(tb->dim).taille] ;
280 for (
int i=0; i<(tb->dim).taille; i++) {
289 int borne_phi = np + 1 ;
290 if (np == 1) borne_phi = 1 ;
292 for (
int k=0 ; k< borne_phi ; k++)
303 for (
int j=0 ; j<nt ; j++) {
308 som = 4*(nr-1) * xci[nr-1] ;
310 for (
int i = nr-3 ; i >= 0 ; i-- ) {
311 som += 4*(i+1) * xci[i+1] ;
326 int base_t = b &
MSQ_T ;
327 int base_p = b &
MSQ_P ;
328 b = base_p | base_t |
R_CHEBI ;
333 void _dsdx_r_chebi(Tbl *tb,
int & b)
337 if (tb->get_etat() == ETATZERO) {
338 int base_t = b &
MSQ_T ;
339 int base_p = b &
MSQ_P ;
340 b = base_p | base_t |
R_CHEBP ;
345 assert(tb->get_etat() == ETATQCQ) ;
348 int nr = (tb->dim).dim[0] ;
349 int nt = (tb->dim).dim[1] ;
350 int np = (tb->dim).dim[2] ;
354 double* xo =
new double[(tb->dim).taille] ;
357 for (
int i=0; i<(tb->dim).taille; i++) {
366 int borne_phi = np + 1 ;
367 if (np == 1) borne_phi = 1 ;
369 for (
int k=0 ; k< borne_phi ; k++)
377 for (
int j=0 ; j<nt ; j++) {
382 som = 2*(2*nr-3) * xci[nr-2] ;
384 for (
int i = nr-3 ; i >= 0 ; i-- ) {
385 som += 2*(2*i+1) * xci[i] ;
401 int base_t = b &
MSQ_T ;
402 int base_p = b &
MSQ_P ;
403 b = base_p | base_t |
R_CHEBP ;
408 void _dsdx_r_chebpim_p(Tbl *tb,
int & b)
412 if (tb->get_etat() == ETATZERO) {
413 int base_t = b &
MSQ_T ;
414 int base_p = b &
MSQ_P ;
420 int nr = (tb->dim).dim[0] ;
421 int nt = (tb->dim).dim[1] ;
422 int np = (tb->dim).dim[2] ;
426 double* xo =
new double[(tb->dim).taille] ;
429 for (
int i=0; i<(tb->dim).taille; i++) {
442 for (
int k=0 ; k<np+1 ; k += 4) {
443 auxiliaire = (k==np) ? 1 : 2 ;
444 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
449 if ((k==0) && (kmod == 1)) {
456 for (
int j=0 ; j<nt ; j++) {
461 som = 4*(nr-1) * xci[nr-1] ;
463 for (
int i = nr-3 ; i >= 0 ; i-- ) {
464 som += 4*(i+1) * xci[i+1] ;
479 for (
int k=2 ; k<np+1 ; k += 4) {
480 auxiliaire = (k==np) ? 1 : 2 ;
481 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
482 for (
int j=0 ; j<nt ; j++) {
487 som = 2*(2*nr-3) * xci[nr-2] ;
489 for (
int i = nr-3 ; i >= 0 ; i-- ) {
490 som += 2*(2*i+1) * xci[i] ;
509 int base_t = b &
MSQ_T ;
510 int base_p = b &
MSQ_P ;
516 void _dsdx_r_chebpim_i(Tbl *tb,
int & b)
520 if (tb->get_etat() == ETATZERO) {
521 int base_t = b &
MSQ_T ;
522 int base_p = b &
MSQ_P ;
528 assert(tb->get_etat() == ETATQCQ) ;
532 int nr = (tb->dim).dim[0] ;
533 int nt = (tb->dim).dim[1] ;
534 int np = (tb->dim).dim[2] ;
538 double* xo =
new double[(tb->dim).taille] ;
541 for (
int i=0; i<(tb->dim).taille; i++) {
554 for (
int k=0 ; k<np+1 ; k += 4) {
555 auxiliaire = (k==np) ? 1 : 2 ;
556 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
561 if ((k==0) && (kmod == 1)) {
568 for (
int j=0 ; j<nt ; j++) {
573 som = 2*(2*nr-3) * xci[nr-2] ;
575 for (
int i = nr-3 ; i >= 0 ; i-- ) {
576 som += 2*(2*i+1) * xci[i] ;
592 for (
int k=2 ; k<np+1 ; k += 4) {
593 auxiliaire = (k==np) ? 1 : 2 ;
594 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
595 for (
int j=0 ; j<nt ; j++) {
600 som = 4*(nr-1) * xci[nr-1] ;
602 for (
int i = nr-3 ; i >= 0 ; i-- ) {
603 som += 4*(i+1) * xci[i+1] ;
621 int base_t = b &
MSQ_T ;
622 int base_p = b &
MSQ_P ;
628 void _dsdx_r_chebpi_p(Tbl *tb,
int & b)
632 if (tb->get_etat() == ETATZERO) {
633 int base_t = b &
MSQ_T ;
634 int base_p = b &
MSQ_P ;
640 assert(tb->get_etat() == ETATQCQ) ;
643 int nr = (tb->dim).dim[0] ;
644 int nt = (tb->dim).dim[1] ;
645 int np = (tb->dim).dim[2] ;
649 double* xo =
new double[(tb->dim).taille] ;
652 for (
int i=0; i<(tb->dim).taille; i++) {
661 int borne_phi = np + 1 ;
662 if (np == 1) borne_phi = 1 ;
664 for (
int k=0 ; k< borne_phi ; k++)
675 for (
int j=0 ; j<nt ; j++) {
681 som = 4*(nr-1) * xci[nr-1] ;
683 for (
int i = nr-3 ; i >= 0 ; i-- ) {
684 som += 4*(i+1) * xci[i+1] ;
689 som = 2*(2*nr-3) * xci[nr-2] ;
691 for (
int i = nr-3 ; i >= 0 ; i-- ) {
692 som += 2*(2*i+1) * xci[i] ;
708 int base_t = b &
MSQ_T ;
709 int base_p = b &
MSQ_P ;
715 void _dsdx_r_chebpi_i(Tbl *tb,
int & b)
719 if (tb->get_etat() == ETATZERO) {
720 int base_t = b &
MSQ_T ;
721 int base_p = b &
MSQ_P ;
727 assert(tb->get_etat() == ETATQCQ) ;
730 int nr = (tb->dim).dim[0] ;
731 int nt = (tb->dim).dim[1] ;
732 int np = (tb->dim).dim[2] ;
736 double* xo =
new double[(tb->dim).taille] ;
739 for (
int i=0; i<(tb->dim).taille; i++) {
748 int borne_phi = np + 1 ;
749 if (np == 1) borne_phi = 1 ;
751 for (
int k=0 ; k< borne_phi ; k++)
759 for (
int j=0 ; j<nt ; j++) {
765 som = 4*(nr-1) * xci[nr-1] ;
767 for (
int i = nr-3 ; i >= 0 ; i-- ) {
768 som += 4*(i+1) * xci[i+1] ;
773 som = 2*(2*nr-3) * xci[nr-2] ;
775 for (
int i = nr-3 ; i >= 0 ; i-- ) {
776 som += 2*(2*i+1) * xci[i] ;
792 int base_t = b &
MSQ_T ;
793 int base_p = b &
MSQ_P ;
800 void _dsdx_r_leg(Tbl *tb,
int & )
804 if (tb->get_etat() == ETATZERO) {
809 assert(tb->get_etat() == ETATQCQ) ;
812 int nr = (tb->dim).dim[0] ;
813 int nt = (tb->dim).dim[1] ;
814 int np = (tb->dim).dim[2] ;
818 double* xo =
new double[(tb->dim).taille] ;
821 for (
int i=0; i<(tb->dim).taille; i++) {
830 int borne_phi = np + 1 ;
831 if (np == 1) borne_phi = 1 ;
833 for (
int k=0 ; k< borne_phi ; k++)
840 for (
int j=0 ; j<nt ; j++) {
846 xco[nr-2] = double(2*nr-3)*som ;
847 for (
int i = nr-4 ; i >= 0 ; i -= 2 ) {
849 xco[i] = double(2*i+1)*som ;
852 if (nr > 2) xco[nr-3] = double(2*nr-5)*som ;
853 for (
int i = nr-5 ; i >= 0 ; i -= 2 ) {
855 xco[i] = double(2*i+1) * som ;
873 void _dsdx_r_legp(Tbl *tb,
int & b)
877 if (tb->get_etat() == ETATZERO) {
878 int base_t = b &
MSQ_T ;
879 int base_p = b &
MSQ_P ;
880 b = base_p | base_t |
R_LEGI ;
885 assert(tb->get_etat() == ETATQCQ) ;
888 int nr = (tb->dim).dim[0] ;
889 int nt = (tb->dim).dim[1] ;
890 int np = (tb->dim).dim[2] ;
894 double* xo =
new double[(tb->dim).taille] ;
897 for (
int i=0; i<(tb->dim).taille; i++) {
906 int borne_phi = np + 1 ;
907 if (np == 1) borne_phi = 1 ;
909 for (
int k=0 ; k< borne_phi ; k++)
920 for (
int j=0 ; j<nt ; j++) {
926 if (nr > 1) xco[nr-2] = double(4*nr-5) * som ;
927 for (
int i = nr-3 ; i >= 0 ; i-- ) {
929 xco[i] = double(4*i+3) * som ;
943 int base_t = b &
MSQ_T ;
944 int base_p = b &
MSQ_P ;
945 b = base_p | base_t |
R_LEGI ;
950 void _dsdx_r_legi(Tbl *tb,
int & b)
954 if (tb->get_etat() == ETATZERO) {
955 int base_t = b &
MSQ_T ;
956 int base_p = b &
MSQ_P ;
957 b = base_p | base_t |
R_LEGP ;
962 assert(tb->get_etat() == ETATQCQ) ;
965 int nr = (tb->dim).dim[0] ;
966 int nt = (tb->dim).dim[1] ;
967 int np = (tb->dim).dim[2] ;
971 double* xo =
new double[(tb->dim).taille] ;
974 for (
int i=0; i<(tb->dim).taille; i++) {
983 int borne_phi = np + 1 ;
984 if (np == 1) borne_phi = 1 ;
986 for (
int k=0 ; k< borne_phi ; k++)
994 for (
int j=0 ; j<nt ; j++) {
1000 if (nr > 1) xco[nr-2] = double(4*nr - 7) * som ;
1001 for (
int i = nr-3 ; i >= 0 ; i-- ) {
1003 xco[i] = double(4*i+1) * som ;
1017 int base_t = b &
MSQ_T ;
1018 int base_p = b &
MSQ_P ;
1019 b = base_p | base_t |
R_LEGP ;
1024 void _dsdx_r_jaco02(Tbl *tb,
int & )
1028 if (tb->get_etat() == ETATZERO) {
1033 assert(tb->get_etat() == ETATQCQ) ;
1036 int nr = (tb->dim).dim[0] ;
1037 int nt = (tb->dim).dim[1] ;
1038 int np = (tb->dim).dim[2] ;
1042 double* xo =
new double[(tb->dim).taille] ;
1045 for (
int i=0; i<(tb->dim).taille; i++) {
1050 double* xi = tb->t ;
1054 int borne_phi = np + 1 ;
1055 if (np == 1) borne_phi = 1 ;
1057 for (
int k=0 ; k< borne_phi ; k++)
1064 for (
int j=0 ; j<nt ; j++) {
1069 for (
int i = 0 ; i < nr-1 ; i++ ) {
1072 for (
int m = i+1 ; m < nr ; m++ ) {
1073 int signe = ((m-i)%2 == 0 ? 1 : -1) ;
1074 som += (1-signe*(i+1)*(i+2)/double((m+1)*(m+2)))* xci[m] ;
1076 xco[i] = (i+1.5)*som ;
#define R_CHEBPI_I
Cheb. pair-impair suivant l impair pour l=0.
#define MSQ_P
Extraction de l'info sur Phi.
#define R_LEGP
base de Legendre paire (rare) seulement
#define R_LEGI
base de Legendre impaire (rare) seulement
#define R_CHEBI
base de Cheb. impaire (rare) seulement
#define R_CHEBP
base de Cheb. paire (rare) seulement
#define MSQ_T
Extraction de l'info sur Theta.
#define R_CHEBPIM_I
Cheb. pair-impair suivant m, impair pour m=0.
#define R_CHEBPIM_P
Cheb. pair-impair suivant m, pair pour m=0.
#define R_CHEBPI_P
Cheb. pair-impair suivant l pair pour l=0.