87 void _mult_x_pas_prevu(Tbl * tb,
int& base) {
88 cout <<
"mult_x pas prevu..." << endl ;
89 cout <<
"Tbl: " << tb <<
" base: " << base << endl ;
98 void _mult_x_identite(Tbl* ,
int& ) {
106 void _mult_x_r_chebp(Tbl* tb,
int& base)
109 if (tb->get_etat() == ETATZERO) {
110 int base_t = base &
MSQ_T ;
111 int base_p = base &
MSQ_P ;
112 base = base_p | base_t |
R_CHEBI ;
117 int nr = (tb->dim).dim[0] ;
118 int nt = (tb->dim).dim[1] ;
119 int np = (tb->dim).dim[2] ;
123 double* xo =
new double [tb->get_taille()];
126 for (
int i=0; i<tb->get_taille(); i++) {
135 int borne_phi = np + 1 ;
140 for (
int k=0 ; k< borne_phi ; k++)
146 for (
int j=0 ; j<nt ; j++) {
148 xco[0] = xci[0] + 0.5*xci[1] ;
149 for (
int i = 1 ; i < nr-1 ; i++ ) {
150 xco[i] = 0.5*(xci[i]+xci[i+1]) ;
165 int base_t = base &
MSQ_T ;
166 int base_p = base &
MSQ_P ;
167 base = base_p | base_t |
R_CHEBI ;
175 void _mult_x_r_chebi(Tbl* tb,
int& base)
179 if (tb->get_etat() == ETATZERO) {
180 int base_t = base &
MSQ_T ;
181 int base_p = base &
MSQ_P ;
182 base = base_p | base_t |
R_CHEBP ;
187 int nr = (tb->dim).dim[0] ;
188 int nt = (tb->dim).dim[1] ;
189 int np = (tb->dim).dim[2] ;
193 double* xo =
new double [tb->get_taille()];
196 for (
int i=0; i<tb->get_taille(); i++) {
205 int borne_phi = np + 1 ;
210 for (
int k=0 ; k< borne_phi ; k++)
216 for (
int j=0 ; j<nt ; j++) {
218 xco[0] = 0.5*xci[0] ;
219 for (
int i = 1 ; i < nr-1 ; i++ ) {
220 xco[i] = (xci[i]+xci[i-1])*0.5 ;
222 xco[nr-1] = 0.5*xci[nr-2] ;
235 int base_t = base &
MSQ_T ;
236 int base_p = base &
MSQ_P ;
237 base = base_p | base_t |
R_CHEBP ;
244 void _mult_x_r_chebpim_p(Tbl* tb,
int& base)
248 if (tb->get_etat() == ETATZERO) {
249 int base_t = base &
MSQ_T ;
250 int base_p = base &
MSQ_P ;
256 int nr = (tb->dim).dim[0] ;
257 int nt = (tb->dim).dim[1] ;
258 int np = (tb->dim).dim[2] ;
262 double* xo =
new double [tb->get_taille()];
265 for (
int i=0; i<tb->get_taille(); i++) {
282 for (
int k=0 ; k<np+1 ; k += 4) {
284 auxiliaire = (k==np) ? 1 : 2 ;
285 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
290 if ((k==0) && (kmod == 1)) {
296 for (
int j=0 ; j<nt ; j++) {
298 xco[0] = xci[0] + 0.5*xci[1] ;
299 for (
int i = 1 ; i < nr-1 ; i++ ) {
300 xco[i] = 0.5*(xci[i]+xci[i+1]) ;
315 for (
int k=2 ; k<np+1 ; k += 4) {
317 auxiliaire = (k==np) ? 1 : 2 ;
318 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
319 for (
int j=0 ; j<nt ; j++) {
321 xco[0] = 0.5*xci[0] ;
322 for (
int i = 1 ; i < nr-1 ; i++ ) {
323 xco[i] = (xci[i]+xci[i-1])*0.5 ;
325 xco[nr-1] = 0.5*xci[nr-2] ;
341 int base_t = base &
MSQ_T ;
342 int base_p = base &
MSQ_P ;
350 void _mult_x_r_chebpim_i(Tbl* tb,
int& base)
354 if (tb->get_etat() == ETATZERO) {
355 int base_t = base &
MSQ_T ;
356 int base_p = base &
MSQ_P ;
362 int nr = (tb->dim).dim[0] ;
363 int nt = (tb->dim).dim[1] ;
364 int np = (tb->dim).dim[2] ;
368 double* xo =
new double [tb->get_taille()];
371 for (
int i=0; i<tb->get_taille(); i++) {
387 for (
int k=0 ; k<np+1 ; k += 4) {
389 auxiliaire = (k==np) ? 1 : 2 ;
390 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
395 if ((k==0) && (kmod == 1)) {
401 for (
int j=0 ; j<nt ; j++) {
403 xco[0] = 0.5*xci[0] ;
404 for (
int i = 1 ; i < nr-1 ; i++ ) {
405 xco[i] = (xci[i]+xci[i-1])*0.5 ;
407 xco[nr-1] = 0.5*xci[nr-2] ;
420 for (
int k=2 ; k<np+1 ; k += 4) {
422 auxiliaire = (k==np) ? 1 : 2 ;
423 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
424 for (
int j=0 ; j<nt ; j++) {
426 xco[0] = xci[0] + 0.5*xci[1] ;
427 for (
int i = 1 ; i < nr-1 ; i++ ) {
428 xco[i] = 0.5*(xci[i]+xci[i+1]) ;
446 int base_t = base &
MSQ_T ;
447 int base_p = base &
MSQ_P ;
455 void _mult_x_r_chebpi_p(Tbl* tb,
int& base)
458 if (tb->get_etat() == ETATZERO) {
459 int base_t = base &
MSQ_T ;
460 int base_p = base &
MSQ_P ;
466 int nr = (tb->dim).dim[0] ;
467 int nt = (tb->dim).dim[1] ;
468 int np = (tb->dim).dim[2] ;
472 double* xo =
new double [tb->get_taille()];
475 for (
int i=0; i<tb->get_taille(); i++) {
484 int borne_phi = np + 1 ;
489 for (
int k=0 ; k< borne_phi ; k++)
495 for (
int j=0 ; j<nt ; j++) {
498 xco[0] = xci[0] + 0.5*xci[1] ;
499 for (
int i = 1 ; i < nr-1 ; i++ ) {
500 xco[i] = 0.5*(xci[i]+xci[i+1]) ;
504 xco[0] = 0.5*xci[0] ;
505 for (
int i = 1 ; i < nr-1 ; i++ ) {
506 xco[i] = (xci[i]+xci[i-1])*0.5 ;
508 xco[nr-1] = 0.5*xci[nr-2] ;
521 int base_t = base &
MSQ_T ;
522 int base_p = base &
MSQ_P ;
531 void _mult_x_r_chebpi_i(Tbl* tb,
int& base)
535 if (tb->get_etat() == ETATZERO) {
536 int base_t = base &
MSQ_T ;
537 int base_p = base &
MSQ_P ;
543 int nr = (tb->dim).dim[0] ;
544 int nt = (tb->dim).dim[1] ;
545 int np = (tb->dim).dim[2] ;
549 double* xo =
new double [tb->get_taille()];
552 for (
int i=0; i<tb->get_taille(); i++) {
561 int borne_phi = np + 1 ;
566 for (
int k=0 ; k< borne_phi ; k++)
572 for (
int j=0 ; j<nt ; j++) {
575 xco[0] = xci[0] + 0.5*xci[1] ;
576 for (
int i = 1 ; i < nr-1 ; i++ ) {
577 xco[i] = 0.5*(xci[i]+xci[i+1]) ;
581 xco[0] = 0.5*xci[0] ;
582 for (
int i = 1 ; i < nr-1 ; i++ ) {
583 xco[i] = (xci[i]+xci[i-1])*0.5 ;
585 xco[nr-1] = 0.5*xci[nr-2] ;
598 int base_t = base &
MSQ_T ;
599 int base_p = base &
MSQ_P ;
607 void _mult_x_r_jaco02(Tbl* tb,
int&)
610 if (tb->get_etat() == ETATZERO) {
615 int nr = (tb->dim).dim[0] ;
616 int nt = (tb->dim).dim[1] ;
617 int np = (tb->dim).dim[2] ;
621 double* xo =
new double [tb->get_taille()];
624 for (
int i=0; i<tb->get_taille(); i++) {
633 int borne_phi = np + 1 ;
638 for (
int k=0 ; k< borne_phi ; k++)
644 for (
int j=0 ; j<nt ; j++) {
646 xco[0] = 1.5*xci[0] + 0.3*xci[1] ;
647 for (
int i = 1 ; i < nr-1 ; i++) {
648 xco[i] = i*(i+2)/
double((i+1)*(2*i+1))*xci[i-1] + (i*i+3*i+3)/
double((i+1)*(i+2))*xci[i] + (i+1)*(i+3)/double((i+2)*(2*i+5))*xci[i+1] ;
650 xco[nr-1] = (nr*nr-1)/
double((nr)*(2*nr-1))*xci[nr-2] + (1+1/double((nr)*(nr+1)))*xci[nr-1] ;
670 void _mult_x_r_legp(Tbl* tb,
int& base)
673 if (tb->get_etat() == ETATZERO) {
674 int base_t = base &
MSQ_T ;
675 int base_p = base &
MSQ_P ;
676 base = base_p | base_t |
R_LEGI ;
681 int nr = (tb->dim).dim[0] ;
682 int nt = (tb->dim).dim[1] ;
683 int np = (tb->dim).dim[2] ;
687 double* xo =
new double [tb->get_taille()];
690 for (
int i=0; i<tb->get_taille(); i++) {
699 int borne_phi = np + 1 ;
704 for (
int k=0 ; k< borne_phi ; k++)
710 for (
int j=0 ; j<nt ; j++) {
712 xco[0] = xci[0] + 0.4*xci[1] ;
713 for (
int i = 1 ; i < nr-1 ; i++ ) {
714 xco[i] = double(2*i+1)*xci[i]/double(4*i+1)
715 + double(2*i+2)*xci[i+1]/double(4*i+5) ;
730 int base_t = base &
MSQ_T ;
731 int base_p = base &
MSQ_P ;
732 base = base_p | base_t |
R_LEGI ;
740 void _mult_x_r_legi(Tbl* tb,
int& base)
744 if (tb->get_etat() == ETATZERO) {
745 int base_t = base &
MSQ_T ;
746 int base_p = base &
MSQ_P ;
747 base = base_p | base_t |
R_LEGP ;
752 int nr = (tb->dim).dim[0] ;
753 int nt = (tb->dim).dim[1] ;
754 int np = (tb->dim).dim[2] ;
758 double* xo =
new double [tb->get_taille()];
761 for (
int i=0; i<tb->get_taille(); i++) {
770 int borne_phi = np + 1 ;
775 for (
int k=0 ; k< borne_phi ; k++)
781 for (
int j=0 ; j<nt ; j++) {
784 for (
int i = 1 ; i < nr-1 ; i++ ) {
785 xco[i] = double(2*i+1)*xci[i]/double(4*i+3)
786 + double(2*i)*xci[i-1]/double(4*i-1) ;
788 xco[nr-1] = double(2*nr-2)*xci[nr-2]/double(4*nr-5) ;
801 int base_t = base &
MSQ_T ;
802 int base_p = base &
MSQ_P ;
803 base = base_p | base_t |
R_LEGP ;
810 void _mult_x_r_cheb(Tbl* tb,
int& base)
813 if (tb->get_etat() == ETATZERO) {
814 int base_t = base &
MSQ_T ;
815 int base_p = base &
MSQ_P ;
816 base = base_p | base_t |
R_CHEB ;
821 int nr = (tb->dim).dim[0] ;
822 int nt = (tb->dim).dim[1] ;
823 int np = (tb->dim).dim[2] ;
827 double* xo =
new double [tb->get_taille()];
830 for (
int i=0; i<tb->get_taille(); i++) {
839 int borne_phi = np + 1 ;
844 for (
int k=0 ; k< borne_phi ; k++)
850 for (
int j=0 ; j<nt ; j++) {
853 xco[1] = xci[0] + 0.5*xci[2] ;
854 for (
int i = 2 ; i < nr-1 ; i++ ) {
855 xco[i] = 0.5*(xci[i-1]+xci[i+1]) ;
857 xco[nr-1] = .5*xci[nr-2] ;
870 int base_t = base &
MSQ_T ;
871 int base_p = base &
MSQ_P ;
872 base = base_p | base_t |
R_CHEB ;
#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.
#define R_CHEB
base de Chebychev ordinaire (fin)