25char op_sx_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Non_class_members/Operators/op_sx.C,v 1.4 2015/03/05 08:49:32 j_novak Exp $" ;
86void _sx_pas_prevu(Tbl * tb,
int& base) {
87 cout <<
"sx pas prevu..." << endl ;
88 cout <<
"Tbl: " << tb <<
" base: " << base << endl ;
97void _sx_identite(Tbl* ,
int& ) {
105void _sx_r_chebp(Tbl* tb,
int& base)
108 if (tb->get_etat() == ETATZERO) {
109 int base_t = base &
MSQ_T ;
110 int base_p = base &
MSQ_P ;
111 base = base_p | base_t |
R_CHEBI ;
116 int nr = (tb->dim).dim[0] ;
117 int nt = (tb->dim).dim[1] ;
118 int np = (tb->dim).dim[2] ;
122 double* xo =
new double [tb->get_taille()];
125 for (
int i=0; i<tb->get_taille(); i++) {
134 int borne_phi = np + 1 ;
139 for (
int k=0 ; k< borne_phi ; k++)
145 for (
int j=0 ; j<nt ; j++) {
151 som = 2 * sgn * xci[nr-1] ;
153 for (
int i = nr-3 ; i >= 0 ; i-- ) {
155 som += 2 * sgn * xci[i+1] ;
158 for (
int i=0 ; i<nr ; i+=2) {
173 int base_t = base &
MSQ_T ;
174 int base_p = base &
MSQ_P ;
175 base = base_p | base_t |
R_CHEBI ;
183void _sx_r_chebi(Tbl* tb,
int& base)
187 if (tb->get_etat() == ETATZERO) {
188 int base_t = base &
MSQ_T ;
189 int base_p = base &
MSQ_P ;
190 base = base_p | base_t |
R_CHEBP ;
195 int nr = (tb->dim).dim[0] ;
196 int nt = (tb->dim).dim[1] ;
197 int np = (tb->dim).dim[2] ;
201 double* xo =
new double [tb->get_taille()];
204 for (
int i=0; i<tb->get_taille(); i++) {
213 int borne_phi = np + 1 ;
218 for (
int k=0 ; k< borne_phi ; k++)
224 for (
int j=0 ; j<nt ; j++) {
229 som = 2 * sgn * xci[nr-2] ;
231 for (
int i = nr-3 ; i >= 0 ; i-- ) {
233 som += 2 * sgn * xci[i] ;
236 for (
int i=0 ; i<nr ; i+=2) {
252 int base_t = base &
MSQ_T ;
253 int base_p = base &
MSQ_P ;
254 base = base_p | base_t |
R_CHEBP ;
261void _sx_r_chebpim_p(Tbl* tb,
int& base)
265 if (tb->get_etat() == ETATZERO) {
266 int base_t = base &
MSQ_T ;
267 int base_p = base &
MSQ_P ;
273 int nr = (tb->dim).dim[0] ;
274 int nt = (tb->dim).dim[1] ;
275 int np = (tb->dim).dim[2] ;
279 double* xo =
new double [tb->get_taille()];
282 for (
int i=0; i<tb->get_taille(); i++) {
298 for (
int k=0 ; k<np+1 ; k += 4) {
300 auxiliaire = (k==np) ? 1 : 2 ;
301 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
306 if ((k==0) && (kmod == 1)) {
312 for (
int j=0 ; j<nt ; j++) {
318 som = 2 * sgn * xci[nr-1] ;
320 for (
int i = nr-3 ; i >= 0 ; i-- ) {
322 som += 2 * sgn * xci[i+1] ;
325 for (
int i=0 ; i<nr ; i+=2) {
340 for (
int k=2 ; k<np+1 ; k += 4) {
342 auxiliaire = (k==np) ? 1 : 2 ;
343 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
344 for (
int j=0 ; j<nt ; j++) {
350 som = 2 * sgn * xci[nr-2] ;
352 for (
int i = nr-3 ; i >= 0 ; i-- ) {
354 som += 2 * sgn * xci[i] ;
357 for (
int i=0 ; i<nr ; i+=2) {
376 int base_t = base &
MSQ_T ;
377 int base_p = base &
MSQ_P ;
385void _sx_r_chebpim_i(Tbl* tb,
int& base)
389 if (tb->get_etat() == ETATZERO) {
390 int base_t = base &
MSQ_T ;
391 int base_p = base &
MSQ_P ;
397 int nr = (tb->dim).dim[0] ;
398 int nt = (tb->dim).dim[1] ;
399 int np = (tb->dim).dim[2] ;
403 double* xo =
new double [tb->get_taille()];
406 for (
int i=0; i<tb->get_taille(); i++) {
422 for (
int k=0 ; k<np+1 ; k += 4) {
424 auxiliaire = (k==np) ? 1 : 2 ;
425 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
430 if ((k==0) && (kmod == 1)) {
436 for (
int j=0 ; j<nt ; j++) {
442 som = 2 * sgn * xci[nr-2] ;
444 for (
int i = nr-3 ; i >= 0 ; i-- ) {
446 som += 2 * sgn * xci[i] ;
449 for (
int i=0 ; i<nr ; i+=2) {
465 for (
int k=2 ; k<np+1 ; k += 4) {
467 auxiliaire = (k==np) ? 1 : 2 ;
468 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
469 for (
int j=0 ; j<nt ; j++) {
476 som = 2 * sgn * xci[nr-1] ;
478 for (i = nr-3 ; i >= 0 ; i-- ) {
480 som += 2 * sgn * xci[i+1] ;
483 for (i=0 ; i<nr ; i+=2) {
501 int base_t = base &
MSQ_T ;
502 int base_p = base &
MSQ_P ;
510void _sx_r_chebpi_p(Tbl* tb,
int& base)
513 if (tb->get_etat() == ETATZERO) {
514 int base_t = base &
MSQ_T ;
515 int base_p = base &
MSQ_P ;
521 int nr = (tb->dim).dim[0] ;
522 int nt = (tb->dim).dim[1] ;
523 int np = (tb->dim).dim[2] ;
527 double* xo =
new double [tb->get_taille()];
530 for (
int i=0; i<tb->get_taille(); i++) {
539 int borne_phi = np + 1 ;
544 for (
int k=0 ; k< borne_phi ; k++)
550 for (
int j=0 ; j<nt ; j++) {
557 som = 2 * sgn * xci[nr-1] ;
559 for (
int i = nr-3 ; i >= 0 ; i-- ) {
561 som += 2 * sgn * xci[i+1] ;
564 for (
int i=0 ; i<nr ; i+=2) {
572 som = 2 * sgn * xci[nr-2] ;
574 for (
int i = nr-3 ; i >= 0 ; i-- ) {
576 som += 2 * sgn * xci[i] ;
579 for (
int i=0 ; i<nr ; i+=2) {
595 int base_t = base &
MSQ_T ;
596 int base_p = base &
MSQ_P ;
605void _sx_r_chebpi_i(Tbl* tb,
int& base)
609 if (tb->get_etat() == ETATZERO) {
610 int base_t = base &
MSQ_T ;
611 int base_p = base &
MSQ_P ;
617 int nr = (tb->dim).dim[0] ;
618 int nt = (tb->dim).dim[1] ;
619 int np = (tb->dim).dim[2] ;
623 double* xo =
new double [tb->get_taille()];
626 for (
int i=0; i<tb->get_taille(); i++) {
635 int borne_phi = np + 1 ;
640 for (
int k=0 ; k< borne_phi ; k++)
646 for (
int j=0 ; j<nt ; j++) {
653 som = 2 * sgn * xci[nr-1] ;
655 for (
int i = nr-3 ; i >= 0 ; i-- ) {
657 som += 2 * sgn * xci[i+1] ;
660 for (
int i=0 ; i<nr ; i+=2) {
668 som = 2 * sgn * xci[nr-2] ;
670 for (
int i = nr-3 ; i >= 0 ; i-- ) {
672 som += 2 * sgn * xci[i] ;
675 for (
int i=0 ; i<nr ; i+=2) {
691 int base_t = base &
MSQ_T ;
692 int base_p = base &
MSQ_P ;
700void _sx_r_legp(Tbl* tb,
int& base)
704 if (tb->get_etat() == ETATZERO) {
705 int base_t = base &
MSQ_T ;
706 int base_p = base &
MSQ_P ;
707 base = base_p | base_t |
R_LEGI ;
712 int nr = (tb->dim).dim[0] ;
713 int nt = (tb->dim).dim[1] ;
714 int np = (tb->dim).dim[2] ;
718 double* xo =
new double [tb->get_taille()];
721 for (
int i=0; i<tb->get_taille(); i++) {
730 int borne_phi = np + 1 ;
735 for (
int k=0 ; k< borne_phi ; k++)
741 for (
int j=0 ; j<nt ; j++) {
746 for (
int i=nr - 2; i>=0; i--) {
748 xco[i] = double(4*i+3)/double(2*i+2)*som ;
749 som *= -double(2*i+1)/double(2*i+2) ;
763 int base_t = base &
MSQ_T ;
764 int base_p = base &
MSQ_P ;
765 base = base_p | base_t |
R_LEGI ;
773void _sx_r_legi(Tbl* tb,
int& base)
777 if (tb->get_etat() == ETATZERO) {
778 int base_t = base &
MSQ_T ;
779 int base_p = base &
MSQ_P ;
780 base = base_p | base_t |
R_LEGP ;
785 int nr = (tb->dim).dim[0] ;
786 int nt = (tb->dim).dim[1] ;
787 int np = (tb->dim).dim[2] ;
791 double* xo =
new double [tb->get_taille()];
794 for (
int i=0; i<tb->get_taille(); i++) {
803 int borne_phi = np + 1 ;
808 for (
int k=0 ; k< borne_phi ; k++)
814 for (
int j=0 ; j<nt ; j++) {
818 for (
int i = nr-2 ; i >= 0 ; i-- ) {
820 xco[i] = double(4*i+1)/double(2*i+1)*som ;
821 som *= -double(2*i)/double(2*i+1) ;
835 int base_t = base &
MSQ_T ;
836 int base_p = base &
MSQ_P ;
837 base = base_p | base_t |
R_LEGP ;
#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_CHEBPIM_I
Cheb. pair-impair suivant m, impair pour m=0.
#define R_CHEBPI_I
Cheb. pair-impair suivant l impair pour l=0.
#define R_CHEBPIM_P
Cheb. pair-impair suivant m, pair pour m=0.
#define MSQ_T
Extraction de l'info sur Theta.
#define R_CHEBP
base de Cheb. paire (rare) seulement
#define MSQ_P
Extraction de l'info sur Phi.
#define R_CHEBPI_P
Cheb. pair-impair suivant l pair pour l=0.