87 void _mult_sp_pas_prevu(Tbl* ,
int& base) {
88 cout <<
"mult_sp() is not not implemented for the basis " << base <<
" !" 97 void _mult_sp_p_cossin(Tbl* tb,
int& base) {
99 assert(tb->get_etat() != ETATNONDEF) ;
105 int base_r = base &
MSQ_R ;
106 int base_t = base &
MSQ_T ;
107 const int base_p = base &
MSQ_P ;
142 cout <<
"_mult_cp_p_cossin : unknown basis in r !" << endl ;
143 cout <<
" base_r = " << hex << base_r << endl ;
181 cout <<
"_mult_cp_p_cossin : unknown basis in theta !" << endl ;
182 cout <<
" base_t = " << hex << base_t << endl ;
187 base = base_r | base_t | base_p ;
195 if (tb->get_etat() == ETATZERO) {
199 assert(tb->get_etat() == ETATQCQ) ;
202 int nr = tb->get_dim(0) ;
203 int nt = tb->get_dim(1) ;
204 int np = tb->get_dim(2) - 2 ;
211 tb->set_etat_zero() ;
220 double*
const cf = tb->t ;
221 double*
const resu =
new double[ tb->get_taille() ] ;
228 for (
int i=0; i<ntnr; i++) {
229 co[i] = 0.5 * cf[q + i] ;
236 for (
int i=0; i<ntnr; i++) {
246 for (
int i=0; i<ntnr; i++) {
255 for (
int i=0; i<ntnr; i++) {
256 co[i] = cf[i] - 0.5 * cf[q+i] ;
267 for (
int i=0; i<ntnr; i++) {
268 co[i] = 0.5 * cf[q+i] ;
276 for (
int i=0; i<ntnr; i++) {
277 co[i] = cf[i] - 0.5 * cf[q+i] ;
285 for (
int k=4; k<np-2; k+=2) {
289 int q1 = (k1-1)*ntnr ;
290 int q2 = (k1+3)*ntnr ;
291 for (
int i=0; i<ntnr; i++) {
292 co[i] = 0.5 * ( cf[q2+i] - cf[q1+i] ) ;
299 for (
int i=0; i<ntnr; i++) {
300 co[i] = 0.5 * ( cf[q1+i] - cf[q2+i] ) ;
309 for (
int i=0; i<ntnr; i++) {
310 co[i] = - 0.5 * cf[q + i] ;
317 int q1 = (np-4)*ntnr ;
319 for (
int i=0; i<ntnr; i++) {
320 co[i] = 0.5 * ( cf[q1+i] - cf[q2+i] ) ;
331 for (
int i=0; i<ntnr; i++) {
332 co[i] = - 0.5 * cf[q+i] ;
339 for (
int i=0; i<ntnr; i++) {
345 assert( co == resu + (np+2)*ntnr ) ;
360 void _mult_sp_p_cossin_p(Tbl* tb,
int& base) {
362 assert(tb->get_etat() != ETATNONDEF) ;
366 int base_r = base &
MSQ_R ;
367 int base_t = base &
MSQ_T ;
375 if (tb->get_etat() == ETATZERO) {
379 assert(tb->get_etat() == ETATQCQ) ;
382 int nr = tb->get_dim(0) ;
383 int nt = tb->get_dim(1) ;
384 int np = tb->get_dim(2) - 2 ;
390 tb->set_etat_zero() ;
398 double*
const cf = tb->t ;
399 double*
const resu =
new double[ tb->get_taille() ] ;
406 for (
int i=0; i<ntnr; i++) {
407 co[i] = 0.5 * cf[q + i] ;
414 for (
int i=0; i<ntnr; i++) {
423 for (
int i=0; i<ntnr; i++) {
424 co[i] = cf[i] - 0.5 * cf[q+i] ;
431 for (
int k=3; k<np-1; k+=2) {
436 int q2 = (k1+2)*ntnr ;
437 for (
int i=0; i<ntnr; i++) {
438 co[i] = 0.5 * ( cf[q2+i] - cf[q1+i] ) ;
445 for (
int i=0; i<ntnr; i++) {
446 co[i] = 0.5 * ( cf[q1+i] - cf[q2+i] ) ;
455 for (
int i=0; i<ntnr; i++) {
456 co[i] = - 0.5 * cf[q+i] ;
463 int q1 = (np-2)*ntnr ;
465 for (
int i=0; i<ntnr; i++) {
466 co[i] = 0.5 * ( cf[q1+i] - cf[q2+i] ) ;
473 for (
int i=0; i<ntnr; i++) {
479 assert( co == resu + (np+2)*ntnr ) ;
495 void _mult_sp_p_cossin_i(Tbl* tb,
int& base) {
497 assert(tb->get_etat() != ETATNONDEF) ;
501 int base_r = base &
MSQ_R ;
502 int base_t = base &
MSQ_T ;
510 if (tb->get_etat() == ETATZERO) {
514 assert(tb->get_etat() == ETATQCQ) ;
517 int nr = tb->get_dim(0) ;
518 int nt = tb->get_dim(1) ;
519 int np = tb->get_dim(2) - 2 ;
525 tb->set_etat_zero() ;
533 double*
const cf = tb->t ;
534 double*
const resu =
new double[ tb->get_taille() ] ;
541 for (
int i=0; i<ntnr; i++) {
542 co[i] = 0.5 * cf[q + i] ;
549 for (
int i=0; i<ntnr; i++) {
559 for (
int i=0; i<ntnr; i++) {
560 co[i] = 0.5 * ( cf[q2+i] - cf[q1+i] ) ;
568 for (
int i=0; i<ntnr; i++) {
569 co[i] = 0.5 * ( cf[i] - cf[q+i] ) ;
576 for (
int k=4; k<np; k+=2) {
582 for (
int i=0; i<ntnr; i++) {
583 co[i] = 0.5 * ( cf[q2+i] - cf[q1+i] ) ;
590 for (
int i=0; i<ntnr; i++) {
591 co[i] = 0.5 * ( cf[q1+i] - cf[q2+i] ) ;
600 for (
int i=0; i<ntnr; i++) {
601 co[i] = - 0.5 * cf[q+i] ;
608 for (
int i=0; i<ntnr; i++) {
614 assert( co == resu + (np+2)*ntnr ) ;
#define R_CHEBPI_I
Cheb. pair-impair suivant l impair pour l=0.
#define MSQ_P
Extraction de l'info sur Phi.
#define T_COSSIN_SP
sin pair-cos impair alternes, sin pour m=0
#define R_JACO02
base de Jacobi(0,2) ordinaire (finjac)
#define MSQ_T
Extraction de l'info sur Theta.
#define T_COSSIN_C
dev. cos-sin alternes, cos pour m=0
#define MSQ_R
Extraction de l'info sur R.
#define T_COSSIN_SI
sin impair-cos pair alternes, sin pour m=0
#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 T_COSSIN_CI
cos impair-sin pair alternes, cos pour m=0
#define P_COSSIN_I
dev. sur Phi = 2*phi, freq. impaires
#define R_CHEBU
base de Chebychev ordinaire (fin), dev. en 1/r
#define P_COSSIN_P
dev. sur Phi = 2*phi, freq. paires
#define T_COSSIN_CP
cos pair-sin impair alternes, cos pour m=0
#define T_COSSIN_S
dev. cos-sin alternes, sin pour m=0
#define R_CHEB
base de Chebychev ordinaire (fin)