89 void _primr_pas_prevu(
const Tbl&,
int bin,
const Tbl&, Tbl&,
int&, Tbl& ) {
91 cout <<
"Unexpected basis in primr : basis = " << hex << bin << endl ;
98 void _primr_r_cheb(
const Tbl& tin,
int bin,
const Tbl& valm1, Tbl& tout,
99 int& bout, Tbl& valp1) {
101 assert(tin.dim == tout.dim) ;
107 int nr = tin.get_dim(0) ;
108 int nt = tin.get_dim(1) ;
109 int np = tin.get_dim(2) - 2 ;
110 int borne_phi = np + 1 ;
111 if (np == 1) borne_phi = 1 ;
115 if ((tin.get_etat() == ETATZERO)||(nr == 1)) {
116 if (valm1.get_etat() == ETATZERO) {
117 tout.set_etat_zero() ;
118 valp1.set_etat_zero() ;
122 assert(valm1.get_etat() == ETATQCQ) ;
123 tout.set_etat_qcq() ;
124 valp1.set_etat_qcq() ;
125 double* xco = tout.t ;
126 for (
int k=0 ; k< borne_phi ; k++) {
131 for (
int j=0 ; j<nt ; j++) {
132 xco[0] = valm1(k,j) ;
133 for (
int i=1; i<nr; i++) xco[i] = 0 ;
134 valp1.set(k,j) = xco[0] ;
146 assert(tin.get_etat() == ETATQCQ ) ;
148 valp1.annule_hard() ;
150 const double* xci = tin.t ;
151 double* xco = tout.t ;
153 for (
int k=0 ; k< borne_phi ; k++) {
159 for (
int j=0 ; j<nt ; j++) {
161 xco[1] = xci[0] - 0.5 * xci[2] ;
163 for (
int i=2; i<nr-2; i++) {
164 xco[i] = (xci[i-1] - xci[i+1]) /
double(2*i) ;
167 xco[nr-2] = xci[nr-3] / double(2*nr - 4) ;
168 xco[nr-1] = xci[nr-2] / double(2*nr - 2) ;
172 double som = - xco[1] ;
173 for (
int i=2; i<nr; i+=2) som += xco[i] ;
174 for (
int i=3; i<nr; i+=2) som -= xco[i] ;
175 xco[0] = valm1(k,j) - som ;
179 for (
int i=1; i<nr; i++) som += xco[i] ;
180 valp1.set(k,j) = som ;
194 void _primr_r_chebp(
const Tbl& tin,
int bin,
const Tbl&, Tbl& tout,
195 int& bout, Tbl& valp1) {
197 assert(tin.dim == tout.dim) ;
200 int base_t = bin &
MSQ_T ;
201 int base_p = bin &
MSQ_P ;
202 bout = base_p | base_t |
R_CHEBI ;
205 int nr = tin.get_dim(0) ;
206 int nt = tin.get_dim(1) ;
207 int np = tin.get_dim(2) - 2 ;
208 int borne_phi = np + 1 ;
209 if (np == 1) borne_phi = 1 ;
213 if (tin.get_etat() == ETATZERO) {
214 tout.set_etat_zero() ;
215 valp1.set_etat_zero() ;
222 assert(tin.get_etat() == ETATQCQ ) ;
224 valp1.annule_hard() ;
226 const double* xci = tin.t ;
227 double* xco = tout.t ;
229 for (
int k=0 ; k< borne_phi ; k++) {
235 for (
int j=0 ; j<nt ; j++) {
237 xco[0] = xci[0] - 0.5*xci[1] ;
239 for (
int i=1; i<nr-2; i++) {
240 xco[i] = (xci[i] - xci[i+1]) /
double(4*i+2) ;
243 xco[nr-2] = xci[nr-2] / double(4*nr - 6) ;
247 double som = xco[0] ;
248 for (
int i=1; i<nr; i++) som += xco[i] ;
249 valp1.set(k,j) = som ;
262 void _primr_r_chebi(
const Tbl& tin,
int bin,
const Tbl& val0, Tbl& tout,
263 int& bout, Tbl& valp1) {
265 assert(tin.dim == tout.dim) ;
268 int base_t = bin &
MSQ_T ;
269 int base_p = bin &
MSQ_P ;
270 bout = base_p | base_t |
R_CHEBP ;
273 int nr = tin.get_dim(0) ;
274 int nt = tin.get_dim(1) ;
275 int np = tin.get_dim(2) - 2 ;
276 int borne_phi = np + 1 ;
277 if (np == 1) borne_phi = 1 ;
282 if (tin.get_etat() == ETATZERO) {
283 if (val0.get_etat() == ETATZERO) {
284 tout.set_etat_zero() ;
285 valp1.set_etat_zero() ;
289 assert(val0.get_etat() == ETATQCQ) ;
291 valp1.annule_hard() ;
292 double* xco = tout.t ;
293 for (
int k=0 ; k< borne_phi ; k++) {
298 for (
int j=0 ; j<nt ; j++) {
300 for (
int i=1; i<nr; i++) xco[i] = 0 ;
301 valp1.set(k,j) = xco[0] ;
313 assert(tin.get_etat() == ETATQCQ ) ;
315 valp1.annule_hard() ;
317 const double* xci = tin.t ;
318 double* xco = tout.t ;
320 for (
int k=0 ; k< borne_phi ; k++) {
326 for (
int j=0 ; j<nt ; j++) {
328 for (
int i=1; i<nr-1; i++) {
329 xco[i] = (xci[i-1] - xci[i]) /
double(4*i) ;
332 xco[nr-1] = xci[nr-2] / double(4*nr - 4) ;
336 double som = - xco[1] ;
337 for (
int i=2; i<nr; i+=2) som += xco[i] ;
338 for (
int i=3; i<nr; i+=2) som -= xco[i] ;
339 xco[0] = val0(k,j) - som ;
343 for (
int i=1; i<nr; i++) som += xco[i] ;
344 valp1.set(k,j) = som ;
358 void _primr_r_chebpim_p(
const Tbl& tin,
int bin,
const Tbl& val0, Tbl& tout,
359 int& bout, Tbl& valp1) {
361 assert(tin.dim == tout.dim) ;
364 int base_t = bin &
MSQ_T ;
365 int base_p = bin &
MSQ_P ;
369 int nr = tin.get_dim(0) ;
370 int nt = tin.get_dim(1) ;
371 int np = tin.get_dim(2) - 2 ;
372 int borne_phi = np + 1 ;
373 if (np == 1) borne_phi = 1 ;
378 if (tin.get_etat() == ETATZERO) {
379 if (val0.get_etat() == ETATZERO) {
380 tout.set_etat_zero() ;
381 valp1.set_etat_zero() ;
385 assert(val0.get_etat() == ETATQCQ) ;
387 valp1.annule_hard() ;
388 double* xco = tout.t ;
391 for (
int k=0 ; k<borne_phi ; k += 4) {
392 int auxiliaire = (k==np) ? 1 : 2 ;
393 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
394 if ((k==0) && (kmod == 1)) {
398 for (
int j=0 ; j<nt ; j++) {
399 assert( val0(k+kmod,j) ==
double(0) ) ;
400 for (
int i=0; i<nr; i++) xco[i] = 0 ;
401 valp1.set(k+kmod,j) = 0. ;
410 xco = tout.t + 2*nr*nt ;
411 for (
int k=2 ; k<borne_phi ; k += 4) {
412 int auxiliaire = (k==np) ? 1 : 2 ;
413 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
414 for (
int j=0 ; j<nt ; j++) {
415 xco[0] = val0(k+kmod,j) ;
416 for (
int i=1; i<nr; i++) xco[i] = 0 ;
417 valp1.set(k+kmod,j) = xco[0] ;
430 assert(tin.get_etat() == ETATQCQ ) ;
432 valp1.annule_hard() ;
434 const double* xci = tin.t ;
435 double* xco = tout.t ;
439 for (
int k=0 ; k<borne_phi ; k += 4) {
440 int auxiliaire = (k==np) ? 1 : 2 ;
441 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
442 if ((k==0) && (kmod == 1)) {
447 for (
int j=0 ; j<nt ; j++) {
448 xco[0] = xci[0] - 0.5*xci[1] ;
450 for (
int i=1; i<nr-2; i++) {
451 xco[i] = (xci[i] - xci[i+1]) /
double(4*i+2) ;
454 xco[nr-2] = xci[nr-2] / double(4*nr - 6) ;
458 double som = xco[0] ;
459 for (
int i=1; i<nr; i++) som += xco[i] ;
460 valp1.set(k+kmod,j) = som ;
474 xci = tin.t + 2*nr*nt ;
475 xco = tout.t + 2*nr*nt ;
476 for (
int k=2 ; k<borne_phi ; k += 4) {
477 int auxiliaire = (k==np) ? 1 : 2 ;
478 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
479 for (
int j=0 ; j<nt ; j++) {
481 for (
int i=1; i<nr-1; i++) {
482 xco[i] = (xci[i-1] - xci[i]) /
double(4*i) ;
485 xco[nr-1] = xci[nr-2] / double(4*nr - 4) ;
489 double som = - xco[1] ;
490 for (
int i=2; i<nr; i+=2) som += xco[i] ;
491 for (
int i=3; i<nr; i+=2) som -= xco[i] ;
492 xco[0] = val0(k+kmod,j) - som ;
496 for (
int i=1; i<nr; i++) som += xco[i] ;
497 valp1.set(k+kmod,j) = som ;
514 void _primr_r_chebpim_i(
const Tbl& tin,
int bin,
const Tbl& val0, Tbl& tout,
515 int& bout, Tbl& valp1) {
517 assert(tin.dim == tout.dim) ;
520 int base_t = bin &
MSQ_T ;
521 int base_p = bin &
MSQ_P ;
525 int nr = tin.get_dim(0) ;
526 int nt = tin.get_dim(1) ;
527 int np = tin.get_dim(2) - 2 ;
528 int borne_phi = np + 1 ;
529 if (np == 1) borne_phi = 1 ;
533 if (tin.get_etat() == ETATZERO) {
534 if (val0.get_etat() == ETATZERO) {
535 tout.set_etat_zero() ;
536 valp1.set_etat_zero() ;
540 assert(val0.get_etat() == ETATQCQ) ;
542 valp1.annule_hard() ;
543 double* xco = tout.t ;
546 for (
int k=0 ; k<borne_phi ; k += 4) {
547 int auxiliaire = (k==np) ? 1 : 2 ;
548 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
549 if ((k==0) && (kmod == 1)) {
553 for (
int j=0 ; j<nt ; j++) {
554 xco[0] = val0(k+kmod,j) ;
555 for (
int i=1; i<nr; i++) xco[i] = 0 ;
556 valp1.set(k+kmod,j) = xco[0] ;
565 xco = tout.t + 2*nr*nt ;
566 for (
int k=2 ; k<borne_phi ; k += 4) {
567 int auxiliaire = (k==np) ? 1 : 2 ;
568 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
569 for (
int j=0 ; j<nt ; j++) {
570 assert( val0(k+kmod,j) ==
double(0) ) ;
571 for (
int i=0; i<nr; i++) xco[i] = 0 ;
572 valp1.set(k+kmod,j) = 0. ;
585 assert(tin.get_etat() == ETATQCQ ) ;
587 valp1.annule_hard() ;
589 const double* xci = tin.t ;
590 double* xco = tout.t ;
594 for (
int k=0 ; k<borne_phi ; k += 4) {
595 int auxiliaire = (k==np) ? 1 : 2 ;
596 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
597 if ((k==0) && (kmod == 1)) {
602 for (
int j=0 ; j<nt ; j++) {
604 for (
int i=1; i<nr-1; i++) {
605 xco[i] = (xci[i-1] - xci[i]) /
double(4*i) ;
608 xco[nr-1] = xci[nr-2] / double(4*nr - 4) ;
612 double som = - xco[1] ;
613 for (
int i=2; i<nr; i+=2) som += xco[i] ;
614 for (
int i=3; i<nr; i+=2) som -= xco[i] ;
615 xco[0] = val0(k+kmod,j) - som ;
619 for (
int i=1; i<nr; i++) som += xco[i] ;
620 valp1.set(k+kmod,j) = som ;
633 xci = tin.t + 2*nr*nt ;
634 xco = tout.t + 2*nr*nt ;
635 for (
int k=2 ; k<borne_phi ; k += 4) {
636 int auxiliaire = (k==np) ? 1 : 2 ;
637 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
639 for (
int j=0 ; j<nt ; j++) {
640 xco[0] = xci[0] - 0.5*xci[1] ;
642 for (
int i=1; i<nr-2; i++) {
643 xco[i] = (xci[i] - xci[i+1]) /
double(4*i+2) ;
646 xco[nr-2] = xci[nr-2] / double(4*nr - 6) ;
650 double som = xco[0] ;
651 for (
int i=1; i<nr; i++) som += xco[i] ;
652 valp1.set(k+kmod,j) = som ;
668 void _primr_r_chebpi_p(
const Tbl& tin,
int bin,
const Tbl& val0, Tbl& tout,
669 int& bout, Tbl& valp1) {
671 assert(tin.dim == tout.dim) ;
674 int base_t = bin &
MSQ_T ;
675 int base_p = bin &
MSQ_P ;
679 int nr = tin.get_dim(0) ;
680 int nt = tin.get_dim(1) ;
681 int np = tin.get_dim(2) - 2 ;
682 int borne_phi = np + 1 ;
683 if (np == 1) borne_phi = 1 ;
688 if (tin.get_etat() == ETATZERO) {
689 if (val0.get_etat() == ETATZERO) {
690 tout.set_etat_zero() ;
691 valp1.set_etat_zero() ;
695 assert(val0.get_etat() == ETATQCQ) ;
697 valp1.annule_hard() ;
698 double* xco = tout.t ;
699 for (
int k=0 ; k< borne_phi ; k++) {
704 for (
int j=0 ; j<nt ; j++) {
707 for (
int i=0; i<nr; i++) xco[i] = 0 ;
708 valp1.set(k,j) = 0. ;
711 for (
int i=1; i<nr; i++) xco[i] = 0 ;
712 valp1.set(k,j) = xco[0] ;
725 assert(tin.get_etat() == ETATQCQ ) ;
727 valp1.annule_hard() ;
729 const double* xci = tin.t ;
730 double* xco = tout.t ;
732 for (
int k=0 ; k< borne_phi ; k++) {
738 for (
int j=0 ; j<nt ; j++) {
742 xco[0] = xci[0] - 0.5*xci[1] ;
744 for (
int i=1; i<nr-2; i++) {
745 xco[i] = (xci[i] - xci[i+1]) /
double(4*i+2) ;
748 xco[nr-2] = xci[nr-2] / double(4*nr - 6) ;
752 double som = xco[0] ;
753 for (
int i=1; i<nr; i++) som += xco[i] ;
754 valp1.set(k,j) = som ;
756 for (
int i=1; i<nr-1; i++) {
757 xco[i] = (xci[i-1] - xci[i]) /
double(4*i) ;
760 xco[nr-1] = xci[nr-2] / double(4*nr - 4) ;
764 double som = - xco[1] ;
765 for (
int i=2; i<nr; i+=2) som += xco[i] ;
766 for (
int i=3; i<nr; i+=2) som -= xco[i] ;
767 xco[0] = val0(k,j) - som ;
771 for (
int i=1; i<nr; i++) som += xco[i] ;
772 valp1.set(k,j) = som ;
783 void _primr_r_chebpi_i(
const Tbl& tin,
int bin,
const Tbl& val0, Tbl& tout,
784 int& bout, Tbl& valp1) {
786 assert(tin.dim == tout.dim) ;
789 int base_t = bin &
MSQ_T ;
790 int base_p = bin &
MSQ_P ;
794 int nr = tin.get_dim(0) ;
795 int nt = tin.get_dim(1) ;
796 int np = tin.get_dim(2) - 2 ;
797 int borne_phi = np + 1 ;
798 if (np == 1) borne_phi = 1 ;
803 if (tin.get_etat() == ETATZERO) {
804 if (val0.get_etat() == ETATZERO) {
805 tout.set_etat_zero() ;
806 valp1.set_etat_zero() ;
810 assert(val0.get_etat() == ETATQCQ) ;
812 valp1.annule_hard() ;
813 double* xco = tout.t ;
814 for (
int k=0 ; k< borne_phi ; k++) {
819 for (
int j=0 ; j<nt ; j++) {
822 for (
int i=0; i<nr; i++) xco[i] = 0 ;
823 valp1.set(k,j) = 0. ;
826 for (
int i=1; i<nr; i++) xco[i] = 0 ;
827 valp1.set(k,j) = xco[0] ;
840 assert(tin.get_etat() == ETATQCQ ) ;
842 valp1.annule_hard() ;
844 const double* xci = tin.t ;
845 double* xco = tout.t ;
847 for (
int k=0 ; k< borne_phi ; k++) {
853 for (
int j=0 ; j<nt ; j++) {
857 xco[0] = xci[0] - 0.5*xci[1] ;
859 for (
int i=1; i<nr-2; i++) {
860 xco[i] = (xci[i] - xci[i+1]) /
double(4*i+2) ;
863 xco[nr-2] = xci[nr-2] / double(4*nr - 6) ;
867 double som = xco[0] ;
868 for (
int i=1; i<nr; i++) som += xco[i] ;
869 valp1.set(k,j) = som ;
871 for (
int i=1; i<nr-1; i++) {
872 xco[i] = (xci[i-1] - xci[i]) /
double(4*i) ;
875 xco[nr-1] = xci[nr-2] / double(4*nr - 4) ;
879 double som = - xco[1] ;
880 for (
int i=2; i<nr; i+=2) som += xco[i] ;
881 for (
int i=3; i<nr; i+=2) som -= xco[i] ;
882 xco[0] = val0(k,j) - som ;
886 for (
int i=1; i<nr; i++) som += xco[i] ;
887 valp1.set(k,j) = som ;
900 void _primr_r_jaco02(
const Tbl& tin,
int bin,
const Tbl& valm1, Tbl& tout,
901 int& bout, Tbl& valp1) {
903 assert(tin.dim == tout.dim) ;
909 int nr = tin.get_dim(0) ;
910 int nt = tin.get_dim(1) ;
911 int np = tin.get_dim(2) - 2 ;
912 int borne_phi = np + 1 ;
913 if (np == 1) borne_phi = 1 ;
917 if ((tin.get_etat() == ETATZERO)||(nr == 1)) {
918 if (valm1.get_etat() == ETATZERO) {
919 tout.set_etat_zero() ;
920 valp1.set_etat_zero() ;
924 assert(valm1.get_etat() == ETATQCQ) ;
925 tout.set_etat_qcq() ;
926 valp1.set_etat_qcq() ;
927 double* xco = tout.t ;
928 for (
int k=0 ; k< borne_phi ; k++) {
933 for (
int j=0 ; j<nt ; j++) {
934 xco[0] = valm1(k,j) ;
935 for (
int i=1; i<nr; i++) xco[i] = 0 ;
936 valp1.set(k,j) = xco[0] ;
948 assert(tin.get_etat() == ETATQCQ ) ;
950 valp1.annule_hard() ;
952 const double* xci = tin.t ;
953 double* xco = tout.t ;
955 for (
int k=0 ; k< borne_phi ; k++) {
961 for (
int j=0 ; j<nt ; j++) {
963 for (
int i=1; i<nr-1; i++) {
964 xco[i] = (i+2)/
double((i+1)*(2*i+1))*xci[i-1] - xci[i]/double((i+1)*(i+2)) - (i+1)/
double((i+2)*(2*i+5))*xci[i+1] ;
966 xco[nr-1] = (nr+1)/
double((nr)*(2*nr-1))*xci[nr-2] - xci[nr-1]/double((nr)*(nr+1));
971 double som = -3*xco[1] ;
972 for (
int i=2; i<nr; i++) {
973 int signe = (i%2 == 0 ? 1 : -1) ;
974 som += xco[i]*signe*(i+1)*(i+2)/double(2) ;
976 xco[0] = valm1(k,j) - som ;
980 for (
int i=1; i<nr; i++) som += xco[i] ;
981 valp1.set(k,j) = som ;
994 void _primr_r_leg(
const Tbl& tin,
int bin,
const Tbl& valm1, Tbl& tout,
995 int& bout, Tbl& valp1) {
997 assert(tin.dim == tout.dim) ;
1003 int nr = tin.get_dim(0) ;
1004 int nt = tin.get_dim(1) ;
1005 int np = tin.get_dim(2) - 2 ;
1006 int borne_phi = np + 1 ;
1007 if (np == 1) borne_phi = 1 ;
1011 if ((tin.get_etat() == ETATZERO)||(nr == 1)) {
1012 if (valm1.get_etat() == ETATZERO) {
1013 tout.set_etat_zero() ;
1014 valp1.set_etat_zero() ;
1018 assert(valm1.get_etat() == ETATQCQ) ;
1019 tout.set_etat_qcq() ;
1020 valp1.set_etat_qcq() ;
1021 double* xco = tout.t ;
1022 for (
int k=0 ; k< borne_phi ; k++) {
1027 for (
int j=0 ; j<nt ; j++) {
1028 xco[0] = valm1(k,j) ;
1029 for (
int i=1; i<nr; i++) xco[i] = 0 ;
1030 valp1.set(k,j) = xco[0] ;
1042 assert(tin.get_etat() == ETATQCQ ) ;
1043 tout.annule_hard() ;
1044 valp1.annule_hard() ;
1046 const double* xci = tin.t ;
1047 double* xco = tout.t ;
1049 for (
int k=0 ; k< borne_phi ; k++) {
1055 for (
int j=0 ; j<nt ; j++) {
1057 for (
int i=1; i<nr-2; i++) {
1058 xco[i] = xci[i-1] / double(2*i-1) - xci[i+1] / double(2*i+3) ;
1061 xco[nr-2] = xci[nr-3] / double(2*nr - 5) ;
1062 xco[nr-1] = xci[nr-2] / double(2*nr - 3) ;
1066 double som = - xco[1] ;
1067 for (
int i=2; i<nr; i+=2) som += xco[i] ;
1068 for (
int i=3; i<nr; i+=2) som -= xco[i] ;
1069 xco[0] = valm1(k,j) - som ;
1073 for (
int i=1; i<nr; i++) som += xco[i] ;
1074 valp1.set(k,j) = som ;
1088 void _primr_r_legp(
const Tbl& tin,
int bin,
const Tbl&, Tbl& tout,
1089 int& bout, Tbl& valp1) {
1091 assert(tin.dim == tout.dim) ;
1094 int base_t = bin &
MSQ_T ;
1095 int base_p = bin &
MSQ_P ;
1096 bout = base_p | base_t |
R_LEGI ;
1099 int nr = tin.get_dim(0) ;
1100 int nt = tin.get_dim(1) ;
1101 int np = tin.get_dim(2) - 2 ;
1102 int borne_phi = np + 1 ;
1103 if (np == 1) borne_phi = 1 ;
1107 if ( (tin.get_etat() == ETATZERO) || (nr == 1) ){
1108 tout.set_etat_zero() ;
1109 valp1.set_etat_zero() ;
1116 assert(tin.get_etat() == ETATQCQ ) ;
1117 tout.annule_hard() ;
1118 valp1.annule_hard() ;
1120 const double* xci = tin.t ;
1121 double* xco = tout.t ;
1123 for (
int k=0 ; k< borne_phi ; k++) {
1129 for (
int j=0 ; j<nt ; j++) {
1131 for (
int i=0; i<nr-2; i++) {
1132 xco[i] = xci[i]/ double(4*i+1) - xci[i+1]/double(4*i+5) ;
1135 xco[nr-2] = xci[nr-2] / double(4*nr - 7) ;
1139 double som = xco[0] ;
1140 for (
int i=1; i<nr; i++) som += xco[i] ;
1141 valp1.set(k,j) = som ;
1154 void _primr_r_legi(
const Tbl& tin,
int bin,
const Tbl& val0, Tbl& tout,
1155 int& bout, Tbl& valp1) {
1157 assert(tin.dim == tout.dim) ;
1160 int base_t = bin &
MSQ_T ;
1161 int base_p = bin &
MSQ_P ;
1162 bout = base_p | base_t |
R_LEGP ;
1165 int nr = tin.get_dim(0) ;
1166 int nt = tin.get_dim(1) ;
1167 int np = tin.get_dim(2) - 2 ;
1168 int borne_phi = np + 1 ;
1169 if (np == 1) borne_phi = 1 ;
1174 if ( (tin.get_etat() == ETATZERO) || (nr == 1) ){
1175 if (val0.get_etat() == ETATZERO) {
1176 tout.set_etat_zero() ;
1177 valp1.set_etat_zero() ;
1181 assert(val0.get_etat() == ETATQCQ) ;
1182 tout.annule_hard() ;
1183 valp1.annule_hard() ;
1184 double* xco = tout.t ;
1185 for (
int k=0 ; k< borne_phi ; k++) {
1190 for (
int j=0 ; j<nt ; j++) {
1191 xco[0] = val0(k,j) ;
1192 for (
int i=1; i<nr; i++) xco[i] = 0 ;
1193 valp1.set(k,j) = xco[0] ;
1205 assert(tin.get_etat() == ETATQCQ ) ;
1206 tout.annule_hard() ;
1207 valp1.annule_hard() ;
1209 const double* xci = tin.t ;
1210 double* xco = tout.t ;
1212 for (
int k=0 ; k< borne_phi ; k++) {
1218 for (
int j=0 ; j<nt ; j++) {
1220 for (
int i=1; i<nr-1; i++) {
1221 xco[i] = xci[i-1]/ double(4*i-1) - xci[i]/double(4*i+3) ;
1224 xco[nr-1] = xci[nr-2] / double(4*nr - 5) ;
1229 double som = val*xco[1] ;
1230 for (
int i=2; i<nr; i++) {
1231 val *= -double(2*i-1) / double(2*i) ;
1234 xco[0] = val0(k,j) - som ;
1238 for (
int i=1; i<nr; i++) som += xco[i] ;
1239 valp1.set(k,j) = som ;
#define R_CHEBPI_I
Cheb. pair-impair suivant l impair pour l=0.
#define MSQ_P
Extraction de l'info sur Phi.
#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_CHEBP
base de Cheb. paire (rare) seulement
#define MSQ_T
Extraction de l'info sur Theta.
#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.