23char op_scost_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Non_class_members/Operators/op_scost.C,v 1.7 2014/10/13 08:53:26 j_novak Exp $" ;
86void _scost_pas_prevu(Tbl * tb,
int& base) {
87 cout <<
"scost pas prevu..." << endl ;
88 cout <<
"Tbl: " << tb <<
" base: " << base << endl ;
97void _scost_t_cos(Tbl* tb,
int & b)
101 if (tb->get_etat() == ETATZERO) {
102 int base_r = b &
MSQ_R ;
103 int base_p = b &
MSQ_P ;
112 b = base_r | base_p |
T_COS ;
119 assert(tb->get_etat() == ETATQCQ) ;
122 int nr = (tb->dim).dim[0] ;
123 int nt = (tb->dim).dim[1] ;
124 int np = (tb->dim).dim[2] ;
128 double* somP =
new double [nr] ;
129 double* somN =
new double [nr] ;
132 double* xo =
new double[(tb->dim).taille] ;
135 for (
int i=0; i<(tb->dim).taille; i++) {
152 for (
int i=0 ; i<nr ; i++) {
159 for (
int j=nt-2 ; j >= 0 ; j--) {
164 for (
int i=0 ; i<nr ; i++ ) {
167 somN[i] += 2*xci[i] ;
172 somP[i] += 2*xci[i] ;
178 for (
int i=0 ; i<nr ; i++) xco[i] *= .5 ;
189 for (
int k=2 ; k<np+1 ; k++) {
197 for (
int i=0 ; i<nr ; i++) {
204 for (
int j=nt-2 ; j >= 0 ; j--) {
209 for (
int i=0 ; i<nr ; i++ ) {
212 somN[i] += 2 * xci[i] ;
217 somP[i] += 2 * xci[i] ;
223 for (
int i=0 ; i<nr ; i++) xco[i] *= 0.5 ;
239 int base_r = b &
MSQ_R ;
240 int base_p = b &
MSQ_P ;
249 b = base_r | base_p |
T_COS ;
258void _scost_t_sin(Tbl* tb,
int & b)
263 if (tb->get_etat() == ETATZERO) {
264 int base_r = b &
MSQ_R ;
265 int base_p = b &
MSQ_P ;
274 b = base_r | base_p |
T_SIN ;
281 assert(tb->get_etat() == ETATQCQ) ;
284 int nr = (tb->dim).dim[0] ;
285 int nt = (tb->dim).dim[1] ;
286 int np = (tb->dim).dim[2] ;
290 double* somP =
new double [nr] ;
291 double* somN =
new double [nr] ;
294 double* xo =
new double[(tb->dim).taille] ;
297 for (
int i=0; i<(tb->dim).taille; i++) {
314 for (
int i=0 ; i<nr ; i++) {
321 for (
int j=nt-2 ; j >= 0 ; j--) {
326 for (
int i=0 ; i<nr ; i++ ) {
329 somN[i] += 2*xci[i] ;
334 somP[i] += 2*xci[i] ;
340 for (
int i=0 ; i<nr ; i++) xco[i] = 0. ;
351 for (
int k=2 ; k<np+1 ; k++) {
359 for (
int i=0 ; i<nr ; i++) {
366 for (
int j=nt-2 ; j >= 0 ; j--) {
371 for (
int i=0 ; i<nr ; i++ ) {
374 somN[i] += 2*xci[i] ;
379 somP[i] += 2*xci[i] ;
385 for (
int i=0 ; i<nr ; i++) xco[i] = 0. ;
402 int base_r = b &
MSQ_R ;
403 int base_p = b &
MSQ_P ;
412 b = base_r | base_p |
T_SIN ;
420void _scost_t_cos_p(Tbl* tb,
int & b)
424 if (tb->get_etat() == ETATZERO) {
425 int base_r = b &
MSQ_R ;
426 int base_p = b &
MSQ_P ;
427 b = base_r | base_p |
T_COS_I ;
432 assert(tb->get_etat() == ETATQCQ) ;
435 int nr = (tb->dim).dim[0] ;
436 int nt = (tb->dim).dim[1] ;
437 int np = (tb->dim).dim[2] ;
441 double* som =
new double [nr] ;
444 double* xo =
new double[(tb->dim).taille] ;
447 for (
int i=0; i<(tb->dim).taille; i++) {
464 for (
int i=0 ; i<nr ; i++) {
470 for (
int j=nt-2 ; j >= 0 ; j--) {
475 for (
int i=0 ; i<nr ; i++ ) {
491 for (
int k=2 ; k<np+1 ; k++) {
499 for (
int i=0 ; i<nr ; i++) {
505 for (
int j=nt-2 ; j >= 0 ; j--) {
510 for (
int i=0 ; i<nr ; i++ ) {
530 int base_r = b &
MSQ_R ;
531 int base_p = b &
MSQ_P ;
532 b = base_r | base_p |
T_COS_I ;
539void _scost_t_sin_p(Tbl* tb,
int & b)
544 if (tb->get_etat() == ETATZERO) {
545 int base_r = b &
MSQ_R ;
546 int base_p = b &
MSQ_P ;
547 b = base_r | base_p |
T_SIN_I ;
552 assert(tb->get_etat() == ETATQCQ) ;
555 int nr = (tb->dim).dim[0] ;
556 int nt = (tb->dim).dim[1] ;
557 int np = (tb->dim).dim[2] ;
561 double* som =
new double [nr] ;
564 double* xo =
new double[(tb->dim).taille] ;
567 for (
int i=0; i<(tb->dim).taille; i++) {
584 for (
int i=0 ; i<nr ; i++) {
590 for (
int j=nt-2 ; j >= 0 ; j--) {
595 for (
int i=0 ; i<nr ; i++ ) {
611 for (
int k=2 ; k<np+1 ; k++) {
619 for (
int i=0 ; i<nr ; i++) {
625 for (
int j=nt-2 ; j >= 0 ; j--) {
630 for (
int i=0 ; i<nr ; i++ ) {
650 int base_r = b &
MSQ_R ;
651 int base_p = b &
MSQ_P ;
652 b = base_r | base_p |
T_SIN_I ;
659void _scost_t_sin_i(Tbl* tb,
int & b)
664 if (tb->get_etat() == ETATZERO) {
665 int base_r = b &
MSQ_R ;
666 int base_p = b &
MSQ_P ;
667 b = base_r | base_p |
T_SIN_P ;
672 assert(tb->get_etat() == ETATQCQ) ;
675 int nr = (tb->dim).dim[0] ;
676 int nt = (tb->dim).dim[1] ;
677 int np = (tb->dim).dim[2] ;
681 double* som =
new double [nr] ;
684 double* xo =
new double[(tb->dim).taille] ;
687 for (
int i=0; i<(tb->dim).taille; i++) {
705 for (
int i=0 ; i<nr ; i++) {
711 for (
int j=nt-2 ; j >= 1 ; j--) {
716 for (
int i=0 ; i<nr ; i++ ) {
726 for (
int i=0 ; i<nr ; i++ ) {
739 for (
int k=2 ; k<np+1 ; k++) {
747 for (
int i=0 ; i<nr ; i++) {
753 for (
int j=nt-2 ; j >= 1 ; j--) {
758 for (
int i=0 ; i<nr ; i++ ) {
767 for (
int i=0 ; i<nr ; i++ ) {
784 int base_r = b &
MSQ_R ;
785 int base_p = b &
MSQ_P ;
786 b = base_r | base_p |
T_SIN_P ;
792void _scost_t_cos_i(Tbl* tb,
int & b)
796 if (tb->get_etat() == ETATZERO) {
797 int base_r = b &
MSQ_R ;
798 int base_p = b &
MSQ_P ;
799 b = base_r | base_p |
T_COS_P ;
804 assert(tb->get_etat() == ETATQCQ) ;
807 int nr = (tb->dim).dim[0] ;
808 int nt = (tb->dim).dim[1] ;
809 int np = (tb->dim).dim[2] ;
813 double* som =
new double [nr] ;
816 double* xo =
new double[(tb->dim).taille] ;
819 for (
int i=0; i<(tb->dim).taille; i++) {
836 for (
int i=0 ; i<nr ; i++) {
842 for (
int j=nt-2 ; j >= 0 ; j--) {
847 for (
int i=0 ; i<nr ; i++ ) {
854 for (
int i=0 ; i<nr ; i++) {
866 for (
int k=2 ; k<np+1 ; k++) {
874 for (
int i=0 ; i<nr ; i++) {
880 for (
int j=nt-2 ; j >= 0 ; j--) {
885 for (
int i=0 ; i<nr ; i++ ) {
892 for (
int i=0 ; i<nr ; i++) {
908 int base_r = b &
MSQ_R ;
909 int base_p = b &
MSQ_P ;
910 b = base_r | base_p |
T_COS_P ;
916void _scost_t_cossin_cp(Tbl* tb,
int & b)
920 if (tb->get_etat() == ETATZERO) {
921 int base_r = b &
MSQ_R ;
922 int base_p = b &
MSQ_P ;
928 assert(tb->get_etat() == ETATQCQ) ;
931 int nr = (tb->dim).dim[0] ;
932 int nt = (tb->dim).dim[1] ;
933 int np = (tb->dim).dim[2] ;
937 double* som =
new double [nr] ;
940 double* xo =
new double[(tb->dim).taille] ;
943 for (
int i=0; i<(tb->dim).taille; i++) {
961 for (
int i=0 ; i<nr ; i++) {
967 for (
int j=nt-2 ; j >= 0 ; j--) {
972 for (
int i=0 ; i<nr ; i++ ) {
988 for (
int k=2 ; k<np+1 ; k++) {
999 for (
int i=0 ; i<nr ; i++) {
1005 for (
int j=nt-2 ; j >= 0 ; j--) {
1010 for (
int i=0 ; i<nr ; i++ ) {
1011 som[i] += 2*xci[i] ;
1025 xci += nr * (nt-1) ;
1026 xco += nr * (nt-1) ;
1029 for (
int i=0 ; i<nr ; i++) {
1035 for (
int j=nt-2 ; j >= 1 ; j--) {
1040 for (
int i=0 ; i<nr ; i++ ) {
1041 som[i] += 2*xci[i] ;
1049 for (
int i=0 ; i<nr ; i++ ) {
1067 int base_r = b &
MSQ_R ;
1068 int base_p = b &
MSQ_P ;
1075void _scost_t_cossin_ci(Tbl* tb,
int & b)
1078 if (tb->get_etat() == ETATZERO) {
1079 int base_r = b &
MSQ_R ;
1080 int base_p = b &
MSQ_P ;
1086 assert(tb->get_etat() == ETATQCQ) ;
1089 int nr = (tb->dim).dim[0] ;
1090 int nt = (tb->dim).dim[1] ;
1091 int np = (tb->dim).dim[2] ;
1095 double* som =
new double [nr] ;
1098 double* xo =
new double[(tb->dim).taille] ;
1101 for (
int i=0; i<(tb->dim).taille; i++) {
1106 double* xi = tb->t ;
1116 xci += nr * (nt-1) ;
1117 xco += nr * (nt-1) ;
1120 for (
int i=0 ; i<nr ; i++) {
1126 for (
int j=nt-2 ; j >= 0 ; j--) {
1131 for (
int i=0 ; i<nr ; i++ ) {
1132 som[i] += 2*xci[i] ;
1138 for (
int i=0 ; i<nr ; i++) {
1150 for (
int k=2 ; k<np+1 ; k++) {
1157 xci += nr * (nt-1) ;
1158 xco += nr * (nt-1) ;
1161 for (
int i=0 ; i<nr ; i++) {
1167 for (
int j=nt-2 ; j >= 0 ; j--) {
1172 for (
int i=0 ; i<nr ; i++ ) {
1173 som[i] += 2*xci[i] ;
1179 for (
int i=0 ; i<nr ; i++) {
1192 xco += nr * (nt-1) ;
1195 for (
int i=0 ; i<nr ; i++) {
1201 for (
int j=nt-2 ; j >= 0 ; j--) {
1206 for (
int i=0 ; i<nr ; i++ ) {
1207 som[i] += 2*xci[i] ;
1228 int base_r = b &
MSQ_R ;
1229 int base_p = b &
MSQ_P ;
1236void _scost_t_cossin_si(Tbl* tb,
int & b)
1239 if (tb->get_etat() == ETATZERO) {
1240 int base_r = b &
MSQ_R ;
1241 int base_p = b &
MSQ_P ;
1247 assert(tb->get_etat() == ETATQCQ) ;
1250 int nr = (tb->dim).dim[0] ;
1251 int nt = (tb->dim).dim[1] ;
1252 int np = (tb->dim).dim[2] ;
1256 double* som =
new double [nr] ;
1259 double* xo =
new double[(tb->dim).taille] ;
1262 for (
int i=0; i<(tb->dim).taille; i++) {
1267 double* xi = tb->t ;
1276 xci += nr * (nt-1) ;
1277 xco += nr * (nt-1) ;
1280 for (
int i=0 ; i<nr ; i++) {
1286 for (
int j=nt-2 ; j >= 1 ; j--) {
1291 for (
int i=0 ; i<nr ; i++ ) {
1292 som[i] += 2*xci[i] ;
1300 for (
int i=0 ; i<nr ; i++ ) {
1312 for (
int k=2 ; k<np+1 ; k++) {
1319 xci += nr * (nt-1) ;
1320 xco += nr * (nt-1) ;
1323 for (
int i=0 ; i<nr ; i++) {
1329 for (
int j=nt-2 ; j >= 1 ; j--) {
1334 for (
int i=0 ; i<nr ; i++ ) {
1335 som[i] += 2*xci[i] ;
1343 for (
int i=0 ; i<nr ; i++ ) {
1355 xco += nr * (nt-1) ;
1358 for (
int i=0 ; i<nr ; i++) {
1364 for (
int j=nt-2 ; j >= 0 ; j--) {
1369 for (
int i=0 ; i<nr ; i++ ) {
1370 som[i] += 2*xci[i] ;
1392 int base_r = b &
MSQ_R ;
1393 int base_p = b &
MSQ_P ;
1401void _scost_t_cossin_sp(Tbl* tb,
int & b)
1404 if (tb->get_etat() == ETATZERO) {
1405 int base_r = b &
MSQ_R ;
1406 int base_p = b &
MSQ_P ;
1412 assert(tb->get_etat() == ETATQCQ) ;
1415 int nr = (tb->dim).dim[0] ;
1416 int nt = (tb->dim).dim[1] ;
1417 int np = (tb->dim).dim[2] ;
1421 double* som =
new double [nr] ;
1424 double* xo =
new double[(tb->dim).taille] ;
1427 for (
int i=0; i<(tb->dim).taille; i++) {
1432 double* xi = tb->t ;
1442 xco += nr * (nt-1) ;
1445 for (
int i=0 ; i<nr ; i++) {
1451 for (
int j=nt-2 ; j >= 0 ; j--) {
1456 for (
int i=0 ; i<nr ; i++ ) {
1457 som[i] += 2*xci[i] ;
1471 for (
int k=2 ; k<np+1 ; k++) {
1478 xci += nr * (nt-1) ;
1479 xco += nr * (nt-1) ;
1482 for (
int i=0 ; i<nr ; i++) {
1488 for (
int j=nt-2 ; j >= 0 ; j--) {
1493 for (
int i=0 ; i<nr ; i++ ) {
1494 som[i] += 2*xci[i] ;
1500 for (
int i=0 ; i<nr ; i++) {
1512 xco += nr * (nt-1) ;
1515 for (
int i=0 ; i<nr ; i++) {
1521 for (
int j=nt-2 ; j >= 0 ; j--) {
1526 for (
int i=0 ; i<nr ; i++ ) {
1527 som[i] += 2*xci[i] ;
1548 int base_r = b &
MSQ_R ;
1549 int base_p = b &
MSQ_P ;
1557void _scost_t_cossin_c(Tbl* tb,
int & b) {
1560 if (tb->get_etat() == ETATZERO) {
1561 int base_r = b &
MSQ_R ;
1562 int base_p = b &
MSQ_P ;
1578 assert(tb->get_etat() == ETATQCQ) ;
1581 int nr = (tb->dim).dim[0] ;
1582 int nt = (tb->dim).dim[1] ;
1583 int np = (tb->dim).dim[2] ;
1587 double* somP =
new double [nr] ;
1588 double* somN =
new double [nr] ;
1591 double* xo =
new double[(tb->dim).taille] ;
1594 for (
int i=0; i<(tb->dim).taille; i++) xo[i] = 0 ;
1597 double* xi = tb->t ;
1605 xci += nr * (nt-1) ;
1606 xco += nr * (nt-1) ;
1609 for (
int i=0 ; i<nr ; i++) {
1616 for (
int j=nt-2 ; j >= 0 ; j--) {
1621 for (
int i=0 ; i<nr ; i++ ) {
1623 somN[i] = -somN[i] ;
1624 somN[i] += 2*xci[i] ;
1628 somP[i] = -somP[i] ;
1629 somP[i] += 2*xci[i] ;
1635 for (
int i=0 ; i<nr ; i++) xco[i] *= .5 ;
1646 for (
int k=2 ; k<np+1 ; k++) {
1650 xco += nr * (nt-1) ;
1651 xci += nr * (nt-1) ;
1654 for (
int i=0 ; i<nr ; i++) {
1661 for (
int j=nt-2 ; j >= 0 ; j--) {
1666 for (
int i=0 ; i<nr ; i++ ) {
1669 somN[i] += 2 * xci[i] ;
1674 somP[i] += 2 * xci[i] ;
1679 double fac_m = ( (k/2)%2 == 1 ? 0. : 0.5) ;
1681 for (
int i=0 ; i<nr ; i++) xco[i] *= fac_m ;
1697 int base_r = b &
MSQ_R ;
1698 int base_p = b &
MSQ_P ;
1715void _scost_t_cossin_s(Tbl* tb,
int & b) {
1718 if (tb->get_etat() == ETATZERO) {
1719 int base_r = b &
MSQ_R ;
1720 int base_p = b &
MSQ_P ;
1736 assert(tb->get_etat() == ETATQCQ) ;
1739 int nr = (tb->dim).dim[0] ;
1740 int nt = (tb->dim).dim[1] ;
1741 int np = (tb->dim).dim[2] ;
1745 double* somP =
new double [nr] ;
1746 double* somN =
new double [nr] ;
1749 double* xo =
new double[(tb->dim).taille] ;
1752 for (
int i=0; i<(tb->dim).taille; i++) xo[i] = 0 ;
1755 double* xi = tb->t ;
1763 xci += nr * (nt-1) ;
1764 xco += nr * (nt-1) ;
1767 for (
int i=0 ; i<nr ; i++) {
1774 for (
int j=nt-2 ; j >= 0 ; j--) {
1779 for (
int i=0 ; i<nr ; i++ ) {
1781 somN[i] = -somN[i] ;
1782 somN[i] += 2*xci[i] ;
1786 somP[i] = -somP[i] ;
1787 somP[i] += 2*xci[i] ;
1793 for (
int i=0 ; i<nr ; i++) xco[i] = 0. ;
1804 for (
int k=2 ; k<np+1 ; k++) {
1808 xco += nr * (nt-1) ;
1809 xci += nr * (nt-1) ;
1812 for (
int i=0 ; i<nr ; i++) {
1819 for (
int j=nt-2 ; j >= 0 ; j--) {
1824 for (
int i=0 ; i<nr ; i++ ) {
1826 somN[i] = -somN[i] ;
1827 somN[i] += 2*xci[i] ;
1831 somP[i] = -somP[i] ;
1832 somP[i] += 2*xci[i] ;
1838 double fac_m = ( (k/2)%2 == 0 ? 0. : 0.5) ;
1840 for (
int i=0 ; i<nr ; i++) xco[i] *= fac_m ;
1857 int base_r = b &
MSQ_R ;
1858 int base_p = b &
MSQ_P ;
#define T_COSSIN_SP
sin pair-cos impair alternes, sin pour m=0
#define T_SIN_P
dev. sin seulement, harmoniques paires
#define MSQ_R
Extraction de l'info sur R.
#define T_COSSIN_S
dev. cos-sin alternes, sin pour m=0
#define T_COSSIN_SI
sin impair-cos pair alternes, sin pour m=0
#define R_CHEBPI_I
Cheb. pair-impair suivant l impair pour l=0.
#define T_COS_P
dev. cos seulement, harmoniques paires
#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_COS
dev. cos seulement
#define MSQ_P
Extraction de l'info sur Phi.
#define T_SIN
dev. sin seulement
#define T_COS_I
dev. cos seulement, harmoniques impaires
#define T_COSSIN_C
dev. cos-sin alternes, cos pour m=0
#define R_CHEBPI_P
Cheb. pair-impair suivant l pair pour l=0.