96 #include "proto_f77.h" 102 void _dsdphi_pas_prevu(Tbl* ,
int & b) {
103 cout <<
"Unknown phi basis in Mtbl_cf::dsdp() !" << endl ;
104 cout <<
" basis: " << hex << b << endl ;
112 void _dsdphi_p_cossin(Tbl* tb,
int & )
116 if (tb->get_etat() == ETATZERO) {
121 assert(tb->get_etat() == ETATQCQ) ;
124 int nr = (tb->dim).dim[0] ;
125 int nt = (tb->dim).dim[1] ;
126 int np = (tb->dim).dim[2] ;
131 tb->set_etat_zero() ;
136 static double* cx = 0 ;
137 static int np_pre =0 ;
143 cx =
reinterpret_cast<double*
>(realloc(cx, (np+2) *
sizeof(
double))) ;
144 for (
int i=0 ; i<np+2 ; i += 2) {
152 double* xo =
new double[(tb->dim).taille] ;
155 for (
int i=0; i<(tb->dim).taille; i++) {
170 for (j=0 ; j<nr*nt ; j++) {
177 for (k=2 ; k<np ; k++) {
178 for (j=0 ; j<nr*nt ; j++) {
179 xco[j] = cx[k] * xci[j] ;
190 for (j=0 ; j<nr*nt ; j++) {
198 double* p2 = p1 + nr*nt ;
199 for (k=0 ; k<np+1 ; k +=2, p1 += 2*nr*nt, p2 += 2*nr*nt) {
200 F77_dswap(&nbr, p1, &inc, p2, &inc) ;
215 void _dsdphi_p_cossin_p(Tbl* tb,
int & )
219 if (tb->get_etat() == ETATZERO) {
224 assert(tb->get_etat() == ETATQCQ) ;
227 int nr = (tb->dim).dim[0] ;
228 int nt = (tb->dim).dim[1] ;
229 int np = (tb->dim).dim[2] ;
234 tb->set_etat_zero() ;
239 static double* cx = 0 ;
240 static int np_pre =0 ;
246 cx =
reinterpret_cast<double*
>(realloc(cx, (np+2) *
sizeof(
double))) ;
248 for (i=0 ; i<np+2 ; i += 2) {
252 for (i=0 ; i<np+2 ; i++) {
259 double* xo =
new double[(tb->dim).taille] ;
262 for (
int i=0; i<(tb->dim).taille; i++) {
277 for (j=0 ; j<nr*nt ; j++) {
284 for (k=2 ; k<np ; k++) {
285 for (j=0 ; j<nr*nt ; j++) {
286 xco[j] = cx[k] * xci[j] ;
297 for (j=0 ; j<nr*nt ; j++) {
305 double* p2 = p1 + nr*nt ;
306 for (k=0 ; k<np+1 ; k +=2, p1 += 2*nr*nt, p2 += 2*nr*nt) {
307 F77_dswap(&nbr, p1, &inc, p2, &inc) ;
322 void _dsdphi_p_cossin_i(Tbl* tb,
int & )
326 if (tb->get_etat() == ETATZERO) {
331 assert(tb->get_etat() == ETATQCQ) ;
334 int nr = (tb->dim).dim[0] ;
335 int nt = (tb->dim).dim[1] ;
336 int np = (tb->dim).dim[2] ;
343 tb->set_etat_zero() ;
348 double* xo =
new double[(tb->dim).taille] ;
351 const double* xi = tb->t ;
357 const double* xci = xi + 2*ntnr ;
358 for (
int i=0; i<ntnr; i++) {
366 for (
int i=0; i<ntnr; i++) {
375 for (
int i=0; i<ntnr; i++) {
382 for (
int k=3; k<np; k+=2) {
388 xci = xi + (k+1)*ntnr ;
390 for (
int i=0; i<ntnr; i++) {
391 xco[i] = k * xci[i] ;
397 xco = xo + (k+1)*ntnr ;
400 for (
int i=0; i<ntnr; i++) {
401 xco[i] = - k * xci[i] ;
409 xco = xo + (np+1)*ntnr ;
410 for (
int i=0; i<ntnr; i++) {