84 void _sx_1d_r_legp(
int,
double* ,
double *) ;
85 void _sx_1d_r_legi(
int,
double* ,
double *) ;
92 void _sx2_pas_prevu(Tbl * tb,
int& base) {
93 cout <<
"sx pas prevu..." << endl ;
94 cout <<
"Tbl: " << tb <<
" base: " << base << endl ;
103 void _sx2_identite(Tbl* ,
int& ) {
110 void _sx2_r_chebp(Tbl* tb,
int&)
113 if (tb->get_etat() == ETATZERO) {
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->get_taille()];
127 for (
int i=0; i<tb->get_taille(); i++) {
136 for (
int k=0 ; k<np+1 ; k++)
143 for (
int j=0 ; j<nt ; j++) {
149 somp = 4 * sgn * (nr-1) * xci[nr-1] ;
150 somn = 2 * sgn * xci[nr-1] ;
151 xco[nr-2] = somp - 2*(nr-2)*somn ;
152 for (
int i = nr-3 ; i >= 0 ; i-- ) {
154 somp += 4 * (i+1) * sgn * xci[i+1] ;
155 somn += 2 * sgn * xci[i+1] ;
156 xco[i] = somp - 2*i * somn ;
158 for (
int i=0 ; i<nr ; i+=2) {
180 void _sx2_r_chebi(Tbl* tb,
int&)
184 if (tb->get_etat() == ETATZERO) {
189 int nr = (tb->dim).dim[0] ;
190 int nt = (tb->dim).dim[1] ;
191 int np = (tb->dim).dim[2] ;
195 double* xo =
new double [tb->get_taille()];
198 for (
int i=0; i<tb->get_taille(); i++) {
207 for (
int k=0 ; k<np+1 ; k++)
213 for (
int j=0 ; j<nt ; j++) {
219 somp = 2 * sgn * (2*(nr-1)+1) * xci[nr-1] ;
220 somn = 2 * sgn * xci[nr-1] ;
221 xco[nr-2] = somp - (2*(nr-2)+1)*somn ;
222 for (
int i = nr-3 ; i >= 0 ; i-- ) {
224 somp += 2 * (2*(i+1)+1) * sgn * xci[i+1] ;
225 somn += 2 * sgn * xci[i+1] ;
226 xco[i] = somp - (2*i+1) * somn ;
228 for (
int i=0 ; i<nr ; i+=2) {
249 void _sx2_r_chebpim_p(Tbl* tb,
int&)
253 if (tb->get_etat() == ETATZERO) {
258 int nr = (tb->dim).dim[0] ;
259 int nt = (tb->dim).dim[1] ;
260 int np = (tb->dim).dim[2] ;
264 double* xo =
new double [tb->get_taille()];
267 for (
int i=0; i<tb->get_taille(); i++) {
280 for (
int k=0 ; k<np+1 ; k += 4) {
281 auxiliaire = (k==np) ? 1 : 2 ;
282 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
285 if ((k==0) && (kmod==1)) {
291 for (
int j=0 ; j<nt ; j++) {
297 somp = 4 * sgn * (nr-1) * xci[nr-1] ;
298 somn = 2 * sgn * xci[nr-1] ;
299 xco[nr-2] = somp - 2*(nr-2)*somn ;
300 for (
int i = nr-3 ; i >= 0 ; i-- ) {
302 somp += 4 * (i+1) * sgn * xci[i+1] ;
303 somn += 2 * sgn * xci[i+1] ;
304 xco[i] = somp - 2*i * somn ;
306 for (
int i=0 ; i<nr ; i+=2) {
322 for (
int k=2 ; k<np+1 ; k += 4) {
324 auxiliaire = (k==np) ? 1 : 2 ;
325 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
326 for (
int j=0 ; j<nt ; j++) {
332 somp = 2 * sgn * (2*(nr-1)+1) * xci[nr-1] ;
333 somn = 2 * sgn * xci[nr-1] ;
334 xco[nr-2] = somp - (2*(nr-2)+1)*somn ;
335 for (
int i = nr-3 ; i >= 0 ; i-- ) {
337 somp += 2 * (2*(i+1)+1) * sgn * xci[i+1] ;
338 somn += 2 * sgn * xci[i+1] ;
339 xco[i] = somp - (2*i+1) * somn ;
341 for (
int i=0 ; i<nr ; i+=2) {
366 void _sx2_r_chebpim_i(Tbl* tb,
int&)
370 if (tb->get_etat() == ETATZERO) {
375 int nr = (tb->dim).dim[0] ;
376 int nt = (tb->dim).dim[1] ;
377 int np = (tb->dim).dim[2] ;
381 double* xo =
new double [tb->get_taille()];
384 for (
int i=0; i<tb->get_taille(); i++) {
397 for (
int k=0 ; k<np+1 ; k += 4) {
399 auxiliaire = (k==np) ? 1 : 2 ;
400 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
405 if ((k==0) && (kmod == 1)) {
411 for (
int j=0 ; j<nt ; j++) {
417 somp = 2 * sgn * (2*(nr-1)+1) * xci[nr-1] ;
418 somn = 2 * sgn * xci[nr-1] ;
419 xco[nr-2] = somp - (2*(nr-2)+1)*somn ;
420 for (
int i = nr-3 ; i >= 0 ; i-- ) {
422 somp += 2 * (2*(i+1)+1) * sgn * xci[i+1] ;
423 somn += 2 * sgn * xci[i+1] ;
424 xco[i] = somp - (2*i+1) * somn ;
426 for (
int i=0 ; i<nr ; i+=2) {
441 for (
int k=2 ; k<np+1 ; k += 4) {
443 auxiliaire = (k==np) ? 1 : 2 ;
444 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
445 for (
int j=0 ; j<nt ; j++) {
451 somp = 4 * sgn * (nr-1) * xci[nr-1] ;
452 somn = 2 * sgn * xci[nr-1] ;
453 xco[nr-2] = somp - 2*(nr-2)*somn ;
454 for (
int i = nr-3 ; i >= 0 ; i-- ) {
456 somp += 4 * (i+1) * sgn * xci[i+1] ;
457 somn += 2 * sgn * xci[i+1] ;
458 xco[i] = somp - 2*i * somn ;
460 for (
int i=0 ; i<nr ; i+=2) {
485 void _sx2_r_chebu(Tbl* tb,
int&)
488 if (tb->get_etat() == ETATZERO) {
493 int nr = (tb->dim).dim[0] ;
494 int nt = (tb->dim).dim[1] ;
495 int np = (tb->dim).dim[2] ;
500 for (
int k=0 ; k<np+1 ; k++) {
502 for (
int j=0 ; j<nt ; j++) {
504 double* cf = tb->t + k*ntnr + j*nr ;
505 sxm1_1d_cheb(nr, cf) ;
506 sxm1_1d_cheb(nr, cf) ;
518 void _sx2_r_chebpi_p(Tbl* tb,
int&)
521 if (tb->get_etat() == ETATZERO) {
526 int nr = (tb->dim).dim[0] ;
527 int nt = (tb->dim).dim[1] ;
528 int np = (tb->dim).dim[2] ;
532 double* xo =
new double [tb->get_taille()];
535 for (
int i=0; i<tb->get_taille(); i++) {
544 for (
int k=0 ; k<np+1 ; k++)
551 for (
int j=0 ; j<nt ; j++) {
558 somp = 4 * sgn * (nr-1) * xci[nr-1] ;
559 somn = 2 * sgn * xci[nr-1] ;
560 xco[nr-2] = somp - 2*(nr-2)*somn ;
561 for (
int i = nr-3 ; i >= 0 ; i-- ) {
563 somp += 4 * (i+1) * sgn * xci[i+1] ;
564 somn += 2 * sgn * xci[i+1] ;
565 xco[i] = somp - 2*i * somn ;
567 for (
int i=0 ; i<nr ; i+=2) {
576 somp = 2 * sgn * (2*(nr-1)+1) * xci[nr-1] ;
577 somn = 2 * sgn * xci[nr-1] ;
578 xco[nr-2] = somp - (2*(nr-2)+1)*somn ;
579 for (
int i = nr-3 ; i >= 0 ; i-- ) {
581 somp += 2 * (2*(i+1)+1) * sgn * xci[i+1] ;
582 somn += 2 * sgn * xci[i+1] ;
583 xco[i] = somp - (2*i+1) * somn ;
585 for (
int i=0 ; i<nr ; i+=2) {
606 void _sx2_r_chebpi_i(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 for (
int k=0 ; k<np+1 ; k++)
639 for (
int j=0 ; j<nt ; j++) {
646 somp = 4 * sgn * (nr-1) * xci[nr-1] ;
647 somn = 2 * sgn * xci[nr-1] ;
648 xco[nr-2] = somp - 2*(nr-2)*somn ;
649 for (
int i = nr-3 ; i >= 0 ; i-- ) {
651 somp += 4 * (i+1) * sgn * xci[i+1] ;
652 somn += 2 * sgn * xci[i+1] ;
653 xco[i] = somp - 2*i * somn ;
655 for (
int i=0 ; i<nr ; i+=2) {
664 somp = 2 * sgn * (2*(nr-1)+1) * xci[nr-1] ;
665 somn = 2 * sgn * xci[nr-1] ;
666 xco[nr-2] = somp - (2*(nr-2)+1)*somn ;
667 for (
int i = nr-3 ; i >= 0 ; i-- ) {
669 somp += 2 * (2*(i+1)+1) * sgn * xci[i+1] ;
670 somn += 2 * sgn * xci[i+1] ;
671 xco[i] = somp - (2*i+1) * somn ;
673 for (
int i=0 ; i<nr ; i+=2) {
693 void _sx2_r_legp(Tbl* tb,
int&)
696 if (tb->get_etat() == ETATZERO) {
701 int nr = (tb->dim).dim[0] ;
702 int nt = (tb->dim).dim[1] ;
703 int np = (tb->dim).dim[2] ;
707 double* xo =
new double [tb->get_taille()];
710 double* interm =
new double[nr] ;
713 for (
int i=0; i<tb->get_taille(); i++) {
722 for (
int k=0 ; k<np+1 ; k++)
729 for (
int j=0 ; j<nt ; j++) {
730 _sx_1d_r_legp(nr, xci, interm) ;
731 _sx_1d_r_legi(nr, interm, xco) ;
751 void _sx2_r_legi(Tbl* tb,
int&)
755 if (tb->get_etat() == ETATZERO) {
760 int nr = (tb->dim).dim[0] ;
761 int nt = (tb->dim).dim[1] ;
762 int np = (tb->dim).dim[2] ;
766 double* xo =
new double [tb->get_taille()];
769 double* interm =
new double[nr] ;
772 for (
int i=0; i<tb->get_taille(); i++) {
781 for (
int k=0 ; k<np+1 ; k++)
787 for (
int j=0 ; j<nt ; j++) {
788 _sx_1d_r_legi(nr, xci, interm) ;
789 _sx_1d_r_legp(nr, interm, xco) ;