89 void _scost_pas_prevu(Tbl * tb,
int& base) {
90 cout <<
"scost pas prevu..." << endl ;
91 cout <<
"Tbl: " << tb <<
" base: " << base << endl ;
100 void _scost_t_cos(Tbl* tb,
int & b)
104 if (tb->get_etat() == ETATZERO) {
105 int base_r = b &
MSQ_R ;
106 int base_p = b &
MSQ_P ;
115 b = base_r | base_p |
T_COS ;
122 assert(tb->get_etat() == ETATQCQ) ;
125 int nr = (tb->dim).dim[0] ;
126 int nt = (tb->dim).dim[1] ;
127 int np = (tb->dim).dim[2] ;
131 double* somP =
new double [nr] ;
132 double* somN =
new double [nr] ;
135 double* xo =
new double[(tb->dim).taille] ;
138 for (
int i=0; i<(tb->dim).taille; i++) {
155 for (
int i=0 ; i<nr ; i++) {
162 for (
int j=nt-2 ; j >= 0 ; j--) {
167 for (
int i=0 ; i<nr ; i++ ) {
170 somN[i] += 2*xci[i] ;
175 somP[i] += 2*xci[i] ;
181 for (
int i=0 ; i<nr ; i++) xco[i] *= .5 ;
192 for (
int k=2 ; k<np+1 ; k++) {
200 for (
int i=0 ; i<nr ; i++) {
207 for (
int j=nt-2 ; j >= 0 ; j--) {
212 for (
int i=0 ; i<nr ; i++ ) {
215 somN[i] += 2 * xci[i] ;
220 somP[i] += 2 * xci[i] ;
226 for (
int i=0 ; i<nr ; i++) xco[i] *= 0.5 ;
242 int base_r = b &
MSQ_R ;
243 int base_p = b &
MSQ_P ;
252 b = base_r | base_p |
T_COS ;
261 void _scost_t_sin(Tbl* tb,
int & b)
266 if (tb->get_etat() == ETATZERO) {
267 int base_r = b &
MSQ_R ;
268 int base_p = b &
MSQ_P ;
277 b = base_r | base_p |
T_SIN ;
284 assert(tb->get_etat() == ETATQCQ) ;
287 int nr = (tb->dim).dim[0] ;
288 int nt = (tb->dim).dim[1] ;
289 int np = (tb->dim).dim[2] ;
293 double* somP =
new double [nr] ;
294 double* somN =
new double [nr] ;
297 double* xo =
new double[(tb->dim).taille] ;
300 for (
int i=0; i<(tb->dim).taille; i++) {
317 for (
int i=0 ; i<nr ; i++) {
324 for (
int j=nt-2 ; j >= 0 ; j--) {
329 for (
int i=0 ; i<nr ; i++ ) {
332 somN[i] += 2*xci[i] ;
337 somP[i] += 2*xci[i] ;
343 for (
int i=0 ; i<nr ; i++) xco[i] = 0. ;
354 for (
int k=2 ; k<np+1 ; k++) {
362 for (
int i=0 ; i<nr ; i++) {
369 for (
int j=nt-2 ; j >= 0 ; j--) {
374 for (
int i=0 ; i<nr ; i++ ) {
377 somN[i] += 2*xci[i] ;
382 somP[i] += 2*xci[i] ;
388 for (
int i=0 ; i<nr ; i++) xco[i] = 0. ;
405 int base_r = b &
MSQ_R ;
406 int base_p = b &
MSQ_P ;
415 b = base_r | base_p |
T_SIN ;
423 void _scost_t_cos_p(Tbl* tb,
int & b)
427 if (tb->get_etat() == ETATZERO) {
428 int base_r = b &
MSQ_R ;
429 int base_p = b &
MSQ_P ;
430 b = base_r | base_p |
T_COS_I ;
435 assert(tb->get_etat() == ETATQCQ) ;
438 int nr = (tb->dim).dim[0] ;
439 int nt = (tb->dim).dim[1] ;
440 int np = (tb->dim).dim[2] ;
444 double* som =
new double [nr] ;
447 double* xo =
new double[(tb->dim).taille] ;
450 for (
int i=0; i<(tb->dim).taille; i++) {
467 for (
int i=0 ; i<nr ; i++) {
473 for (
int j=nt-2 ; j >= 0 ; j--) {
478 for (
int i=0 ; i<nr ; i++ ) {
494 for (
int k=2 ; k<np+1 ; k++) {
502 for (
int i=0 ; i<nr ; i++) {
508 for (
int j=nt-2 ; j >= 0 ; j--) {
513 for (
int i=0 ; i<nr ; i++ ) {
533 int base_r = b &
MSQ_R ;
534 int base_p = b &
MSQ_P ;
535 b = base_r | base_p |
T_COS_I ;
542 void _scost_t_sin_p(Tbl* tb,
int & b)
547 if (tb->get_etat() == ETATZERO) {
548 int base_r = b &
MSQ_R ;
549 int base_p = b &
MSQ_P ;
550 b = base_r | base_p |
T_SIN_I ;
555 assert(tb->get_etat() == ETATQCQ) ;
558 int nr = (tb->dim).dim[0] ;
559 int nt = (tb->dim).dim[1] ;
560 int np = (tb->dim).dim[2] ;
564 double* som =
new double [nr] ;
567 double* xo =
new double[(tb->dim).taille] ;
570 for (
int i=0; i<(tb->dim).taille; i++) {
587 for (
int i=0 ; i<nr ; i++) {
593 for (
int j=nt-2 ; j >= 0 ; j--) {
598 for (
int i=0 ; i<nr ; i++ ) {
614 for (
int k=2 ; k<np+1 ; k++) {
622 for (
int i=0 ; i<nr ; i++) {
628 for (
int j=nt-2 ; j >= 0 ; j--) {
633 for (
int i=0 ; i<nr ; i++ ) {
653 int base_r = b &
MSQ_R ;
654 int base_p = b &
MSQ_P ;
655 b = base_r | base_p |
T_SIN_I ;
662 void _scost_t_sin_i(Tbl* tb,
int & b)
667 if (tb->get_etat() == ETATZERO) {
668 int base_r = b &
MSQ_R ;
669 int base_p = b &
MSQ_P ;
670 b = base_r | base_p |
T_SIN_P ;
675 assert(tb->get_etat() == ETATQCQ) ;
678 int nr = (tb->dim).dim[0] ;
679 int nt = (tb->dim).dim[1] ;
680 int np = (tb->dim).dim[2] ;
684 double* som =
new double [nr] ;
687 double* xo =
new double[(tb->dim).taille] ;
690 for (
int i=0; i<(tb->dim).taille; i++) {
708 for (
int i=0 ; i<nr ; i++) {
714 for (
int j=nt-2 ; j >= 1 ; j--) {
719 for (
int i=0 ; i<nr ; i++ ) {
729 for (
int i=0 ; i<nr ; i++ ) {
742 for (
int k=2 ; k<np+1 ; k++) {
750 for (
int i=0 ; i<nr ; i++) {
756 for (
int j=nt-2 ; j >= 1 ; j--) {
761 for (
int i=0 ; i<nr ; i++ ) {
770 for (
int i=0 ; i<nr ; i++ ) {
787 int base_r = b &
MSQ_R ;
788 int base_p = b &
MSQ_P ;
789 b = base_r | base_p |
T_SIN_P ;
795 void _scost_t_cos_i(Tbl* tb,
int & b)
799 if (tb->get_etat() == ETATZERO) {
800 int base_r = b &
MSQ_R ;
801 int base_p = b &
MSQ_P ;
802 b = base_r | base_p |
T_COS_P ;
807 assert(tb->get_etat() == ETATQCQ) ;
810 int nr = (tb->dim).dim[0] ;
811 int nt = (tb->dim).dim[1] ;
812 int np = (tb->dim).dim[2] ;
816 double* som =
new double [nr] ;
819 double* xo =
new double[(tb->dim).taille] ;
822 for (
int i=0; i<(tb->dim).taille; i++) {
839 for (
int i=0 ; i<nr ; i++) {
845 for (
int j=nt-2 ; j >= 0 ; j--) {
850 for (
int i=0 ; i<nr ; i++ ) {
857 for (
int i=0 ; i<nr ; i++) {
869 for (
int k=2 ; k<np+1 ; k++) {
877 for (
int i=0 ; i<nr ; i++) {
883 for (
int j=nt-2 ; j >= 0 ; j--) {
888 for (
int i=0 ; i<nr ; i++ ) {
895 for (
int i=0 ; i<nr ; i++) {
911 int base_r = b &
MSQ_R ;
912 int base_p = b &
MSQ_P ;
913 b = base_r | base_p |
T_COS_P ;
919 void _scost_t_cossin_cp(Tbl* tb,
int & b)
923 if (tb->get_etat() == ETATZERO) {
924 int base_r = b &
MSQ_R ;
925 int base_p = b &
MSQ_P ;
931 assert(tb->get_etat() == ETATQCQ) ;
934 int nr = (tb->dim).dim[0] ;
935 int nt = (tb->dim).dim[1] ;
936 int np = (tb->dim).dim[2] ;
940 double* som =
new double [nr] ;
943 double* xo =
new double[(tb->dim).taille] ;
946 for (
int i=0; i<(tb->dim).taille; i++) {
964 for (
int i=0 ; i<nr ; i++) {
970 for (
int j=nt-2 ; j >= 0 ; j--) {
975 for (
int i=0 ; i<nr ; i++ ) {
991 for (
int k=2 ; k<np+1 ; k++) {
1002 for (
int i=0 ; i<nr ; i++) {
1008 for (
int j=nt-2 ; j >= 0 ; j--) {
1013 for (
int i=0 ; i<nr ; i++ ) {
1014 som[i] += 2*xci[i] ;
1028 xci += nr * (nt-1) ;
1029 xco += nr * (nt-1) ;
1032 for (
int i=0 ; i<nr ; i++) {
1038 for (
int j=nt-2 ; j >= 1 ; j--) {
1043 for (
int i=0 ; i<nr ; i++ ) {
1044 som[i] += 2*xci[i] ;
1052 for (
int i=0 ; i<nr ; i++ ) {
1070 int base_r = b &
MSQ_R ;
1071 int base_p = b &
MSQ_P ;
1078 void _scost_t_cossin_ci(Tbl* tb,
int & b)
1081 if (tb->get_etat() == ETATZERO) {
1082 int base_r = b &
MSQ_R ;
1083 int base_p = b &
MSQ_P ;
1089 assert(tb->get_etat() == ETATQCQ) ;
1092 int nr = (tb->dim).dim[0] ;
1093 int nt = (tb->dim).dim[1] ;
1094 int np = (tb->dim).dim[2] ;
1098 double* som =
new double [nr] ;
1101 double* xo =
new double[(tb->dim).taille] ;
1104 for (
int i=0; i<(tb->dim).taille; i++) {
1109 double* xi = tb->t ;
1119 xci += nr * (nt-1) ;
1120 xco += nr * (nt-1) ;
1123 for (
int i=0 ; i<nr ; i++) {
1129 for (
int j=nt-2 ; j >= 0 ; j--) {
1134 for (
int i=0 ; i<nr ; i++ ) {
1135 som[i] += 2*xci[i] ;
1141 for (
int i=0 ; i<nr ; i++) {
1153 for (
int k=2 ; k<np+1 ; k++) {
1160 xci += nr * (nt-1) ;
1161 xco += nr * (nt-1) ;
1164 for (
int i=0 ; i<nr ; i++) {
1170 for (
int j=nt-2 ; j >= 0 ; j--) {
1175 for (
int i=0 ; i<nr ; i++ ) {
1176 som[i] += 2*xci[i] ;
1182 for (
int i=0 ; i<nr ; i++) {
1195 xco += nr * (nt-1) ;
1198 for (
int i=0 ; i<nr ; i++) {
1204 for (
int j=nt-2 ; j >= 0 ; j--) {
1209 for (
int i=0 ; i<nr ; i++ ) {
1210 som[i] += 2*xci[i] ;
1231 int base_r = b &
MSQ_R ;
1232 int base_p = b &
MSQ_P ;
1239 void _scost_t_cossin_si(Tbl* tb,
int & b)
1242 if (tb->get_etat() == ETATZERO) {
1243 int base_r = b &
MSQ_R ;
1244 int base_p = b &
MSQ_P ;
1250 assert(tb->get_etat() == ETATQCQ) ;
1253 int nr = (tb->dim).dim[0] ;
1254 int nt = (tb->dim).dim[1] ;
1255 int np = (tb->dim).dim[2] ;
1259 double* som =
new double [nr] ;
1262 double* xo =
new double[(tb->dim).taille] ;
1265 for (
int i=0; i<(tb->dim).taille; i++) {
1270 double* xi = tb->t ;
1279 xci += nr * (nt-1) ;
1280 xco += nr * (nt-1) ;
1283 for (
int i=0 ; i<nr ; i++) {
1289 for (
int j=nt-2 ; j >= 1 ; j--) {
1294 for (
int i=0 ; i<nr ; i++ ) {
1295 som[i] += 2*xci[i] ;
1303 for (
int i=0 ; i<nr ; i++ ) {
1315 for (
int k=2 ; k<np+1 ; k++) {
1322 xci += nr * (nt-1) ;
1323 xco += nr * (nt-1) ;
1326 for (
int i=0 ; i<nr ; i++) {
1332 for (
int j=nt-2 ; j >= 1 ; j--) {
1337 for (
int i=0 ; i<nr ; i++ ) {
1338 som[i] += 2*xci[i] ;
1346 for (
int i=0 ; i<nr ; i++ ) {
1358 xco += nr * (nt-1) ;
1361 for (
int i=0 ; i<nr ; i++) {
1367 for (
int j=nt-2 ; j >= 0 ; j--) {
1372 for (
int i=0 ; i<nr ; i++ ) {
1373 som[i] += 2*xci[i] ;
1395 int base_r = b &
MSQ_R ;
1396 int base_p = b &
MSQ_P ;
1404 void _scost_t_cossin_sp(Tbl* tb,
int & b)
1407 if (tb->get_etat() == ETATZERO) {
1408 int base_r = b &
MSQ_R ;
1409 int base_p = b &
MSQ_P ;
1415 assert(tb->get_etat() == ETATQCQ) ;
1418 int nr = (tb->dim).dim[0] ;
1419 int nt = (tb->dim).dim[1] ;
1420 int np = (tb->dim).dim[2] ;
1424 double* som =
new double [nr] ;
1427 double* xo =
new double[(tb->dim).taille] ;
1430 for (
int i=0; i<(tb->dim).taille; i++) {
1435 double* xi = tb->t ;
1445 xco += nr * (nt-1) ;
1448 for (
int i=0 ; i<nr ; i++) {
1454 for (
int j=nt-2 ; j >= 0 ; j--) {
1459 for (
int i=0 ; i<nr ; i++ ) {
1460 som[i] += 2*xci[i] ;
1474 for (
int k=2 ; k<np+1 ; k++) {
1481 xci += nr * (nt-1) ;
1482 xco += nr * (nt-1) ;
1485 for (
int i=0 ; i<nr ; i++) {
1491 for (
int j=nt-2 ; j >= 0 ; j--) {
1496 for (
int i=0 ; i<nr ; i++ ) {
1497 som[i] += 2*xci[i] ;
1503 for (
int i=0 ; i<nr ; i++) {
1515 xco += nr * (nt-1) ;
1518 for (
int i=0 ; i<nr ; i++) {
1524 for (
int j=nt-2 ; j >= 0 ; j--) {
1529 for (
int i=0 ; i<nr ; i++ ) {
1530 som[i] += 2*xci[i] ;
1551 int base_r = b &
MSQ_R ;
1552 int base_p = b &
MSQ_P ;
1560 void _scost_t_cossin_c(Tbl* tb,
int & b) {
1563 if (tb->get_etat() == ETATZERO) {
1564 int base_r = b &
MSQ_R ;
1565 int base_p = b &
MSQ_P ;
1581 assert(tb->get_etat() == ETATQCQ) ;
1584 int nr = (tb->dim).dim[0] ;
1585 int nt = (tb->dim).dim[1] ;
1586 int np = (tb->dim).dim[2] ;
1590 double* somP =
new double [nr] ;
1591 double* somN =
new double [nr] ;
1594 double* xo =
new double[(tb->dim).taille] ;
1597 for (
int i=0; i<(tb->dim).taille; i++) xo[i] = 0 ;
1600 double* xi = tb->t ;
1608 xci += nr * (nt-1) ;
1609 xco += nr * (nt-1) ;
1612 for (
int i=0 ; i<nr ; i++) {
1619 for (
int j=nt-2 ; j >= 0 ; j--) {
1624 for (
int i=0 ; i<nr ; i++ ) {
1626 somN[i] = -somN[i] ;
1627 somN[i] += 2*xci[i] ;
1631 somP[i] = -somP[i] ;
1632 somP[i] += 2*xci[i] ;
1638 for (
int i=0 ; i<nr ; i++) xco[i] *= .5 ;
1649 for (
int k=2 ; k<np+1 ; k++) {
1653 xco += nr * (nt-1) ;
1654 xci += nr * (nt-1) ;
1657 for (
int i=0 ; i<nr ; i++) {
1664 for (
int j=nt-2 ; j >= 0 ; j--) {
1669 for (
int i=0 ; i<nr ; i++ ) {
1672 somN[i] += 2 * xci[i] ;
1677 somP[i] += 2 * xci[i] ;
1682 double fac_m = ( (k/2)%2 == 1 ? 0. : 0.5) ;
1684 for (
int i=0 ; i<nr ; i++) xco[i] *= fac_m ;
1700 int base_r = b &
MSQ_R ;
1701 int base_p = b &
MSQ_P ;
1718 void _scost_t_cossin_s(Tbl* tb,
int & b) {
1721 if (tb->get_etat() == ETATZERO) {
1722 int base_r = b &
MSQ_R ;
1723 int base_p = b &
MSQ_P ;
1739 assert(tb->get_etat() == ETATQCQ) ;
1742 int nr = (tb->dim).dim[0] ;
1743 int nt = (tb->dim).dim[1] ;
1744 int np = (tb->dim).dim[2] ;
1748 double* somP =
new double [nr] ;
1749 double* somN =
new double [nr] ;
1752 double* xo =
new double[(tb->dim).taille] ;
1755 for (
int i=0; i<(tb->dim).taille; i++) xo[i] = 0 ;
1758 double* xi = tb->t ;
1766 xci += nr * (nt-1) ;
1767 xco += nr * (nt-1) ;
1770 for (
int i=0 ; i<nr ; i++) {
1777 for (
int j=nt-2 ; j >= 0 ; j--) {
1782 for (
int i=0 ; i<nr ; i++ ) {
1784 somN[i] = -somN[i] ;
1785 somN[i] += 2*xci[i] ;
1789 somP[i] = -somP[i] ;
1790 somP[i] += 2*xci[i] ;
1796 for (
int i=0 ; i<nr ; i++) xco[i] = 0. ;
1807 for (
int k=2 ; k<np+1 ; k++) {
1811 xco += nr * (nt-1) ;
1812 xci += nr * (nt-1) ;
1815 for (
int i=0 ; i<nr ; i++) {
1822 for (
int j=nt-2 ; j >= 0 ; j--) {
1827 for (
int i=0 ; i<nr ; i++ ) {
1829 somN[i] = -somN[i] ;
1830 somN[i] += 2*xci[i] ;
1834 somP[i] = -somP[i] ;
1835 somP[i] += 2*xci[i] ;
1841 double fac_m = ( (k/2)%2 == 0 ? 0. : 0.5) ;
1843 for (
int i=0 ; i<nr ; i++) xco[i] *= fac_m ;
1860 int base_r = b &
MSQ_R ;
1861 int base_p = b &
MSQ_P ;
#define R_CHEBPI_I
Cheb. pair-impair suivant l impair pour l=0.
#define MSQ_P
Extraction de l'info sur Phi.
#define T_COS
dev. cos seulement
#define T_COSSIN_SP
sin pair-cos impair alternes, sin pour m=0
#define T_SIN
dev. sin seulement
#define T_COS_I
dev. cos seulement, harmoniques impaires
#define T_COS_P
dev. cos seulement, harmoniques paires
#define T_COSSIN_C
dev. cos-sin alternes, cos pour m=0
#define MSQ_R
Extraction de l'info sur R.
#define T_SIN_P
dev. sin seulement, harmoniques paires
#define T_COSSIN_SI
sin impair-cos pair alternes, sin 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 T_COSSIN_CP
cos pair-sin impair alternes, cos pour m=0
#define T_SIN_I
dev. sin seulement, harmoniques impaires
#define T_COSSIN_S
dev. cos-sin alternes, sin pour m=0