op_sx.C

00001 /*
00002  *   Copyright (c) 1999-2000 Jean-Alain Marck
00003  *   Copyright (c) 1999-2001 Eric Gourgoulhon
00004  *   Copyright (c) 1999-2001 Philippe Grandclement
00005  *
00006  *   This file is part of LORENE.
00007  *
00008  *   LORENE is free software; you can redistribute it and/or modify
00009  *   it under the terms of the GNU General Public License as published by
00010  *   the Free Software Foundation; either version 2 of the License, or
00011  *   (at your option) any later version.
00012  *
00013  *   LORENE is distributed in the hope that it will be useful,
00014  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  *   GNU General Public License for more details.
00017  *
00018  *   You should have received a copy of the GNU General Public License
00019  *   along with LORENE; if not, write to the Free Software
00020  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00021  *
00022  */
00023 
00024 
00025 char op_sx_C[] = "$Header: /cvsroot/Lorene/C++/Source/Non_class_members/Operators/op_sx.C,v 1.2 2004/11/23 15:16:01 m_forot Exp $" ;
00026 
00027 /* 
00028  * Ensemble des routines de base de division par rapport a x
00029  * (Utilisation interne)
00030  * 
00031  *  void _sx_XXXX(Tbl * t, int & b)
00032  *  t   pointeur sur le Tbl d'entree-sortie
00033  *  b   base spectrale
00034  * 
00035  */
00036  
00037  /*
00038  * $Id: op_sx.C,v 1.2 2004/11/23 15:16:01 m_forot Exp $
00039  * $Log: op_sx.C,v $
00040  * Revision 1.2  2004/11/23 15:16:01  m_forot
00041  *
00042  * Added the bases for the cases without any equatorial symmetry
00043  *  (T_COSSIN_C, T_COSSIN_S, T_LEG, R_CHEBPI_P, R_CHEBPI_I).
00044  *
00045  * Revision 1.1.1.1  2001/11/20 15:19:29  e_gourgoulhon
00046  * LORENE
00047  *
00048  * Revision 2.5  2000/09/07  12:50:48  phil
00049  * *** empty log message ***
00050  *
00051  * Revision 2.4  2000/02/24  16:42:59  eric
00052  * Initialisation a zero du tableau xo avant le calcul.
00053  *
00054  * Revision 2.3  1999/11/15  16:39:17  eric
00055  * Tbl::dim est desormais un Dim_tbl et non plus un Dim_tbl*.
00056  *
00057  * Revision 2.2  1999/10/18  13:40:11  eric
00058  * Suppression de la routine _sx_r_chebu car doublon avec _sxm1_cheb.
00059  *
00060  * Revision 2.1  1999/09/13  11:35:42  phil
00061  * gestion des cas k==1 et k==np
00062  *
00063  * Revision 2.0  1999/04/26  14:59:42  phil
00064  * *** empty log message ***
00065  *
00066  *
00067  * $Header: /cvsroot/Lorene/C++/Source/Non_class_members/Operators/op_sx.C,v 1.2 2004/11/23 15:16:01 m_forot Exp $
00068  *
00069  */
00070 
00071  // Fichier includes
00072 #include "tbl.h"
00073 
00074 
00075         //-----------------------------------
00076         // Routine pour les cas non prevus --
00077         //-----------------------------------
00078 
00079 void _sx_pas_prevu(Tbl * tb, int& base) {
00080     cout << "sx pas prevu..." << endl ;
00081     cout << "Tbl: " << tb << " base: " << base << endl ;
00082     abort () ;
00083     exit(-1) ;
00084 }
00085 
00086             //-------------
00087             // Identite ---
00088             //-------------
00089 
00090 void _sx_identite(Tbl* , int& ) {
00091     return ;
00092 }
00093 
00094             //---------------
00095             // cas R_CHEBP --
00096             //--------------
00097 
00098 void _sx_r_chebp(Tbl* tb, int& base)
00099     {
00100     // Peut-etre rien a faire ?
00101     if (tb->get_etat() == ETATZERO) {
00102     int base_t = base & MSQ_T ;
00103     int base_p = base & MSQ_P ;
00104     base = base_p | base_t | R_CHEBI ;
00105     return ;
00106     }
00107     
00108     // Pour le confort
00109     int nr = (tb->dim).dim[0] ;     // Nombre
00110     int nt = (tb->dim).dim[1] ;     //   de points
00111     int np = (tb->dim).dim[2] ;     //      physiques REELS
00112     np = np - 2 ;           // Nombre de points physiques
00113     
00114     // pt. sur le tableau de double resultat
00115     double* xo = new double [tb->get_taille()];
00116     
00117     // Initialisation a zero :
00118     for (int i=0; i<tb->get_taille(); i++) {
00119     xo[i] = 0 ; 
00120     }
00121     
00122     // On y va...
00123     double* xi = tb->t ;
00124     double* xci = xi ;  // Pointeurs
00125     double* xco = xo ;  //  courants
00126 
00127     int borne_phi = np + 1 ; 
00128     if (np == 1) {
00129     borne_phi = 1 ; 
00130     }
00131     
00132     for (int k=0 ; k< borne_phi ; k++)
00133     if (k==1) {
00134         xci += nr*nt ;
00135         xco += nr*nt ;
00136     }
00137     else {
00138     for (int j=0 ; j<nt ; j++) {
00139 
00140         double som ;
00141         int sgn = 1 ;
00142         
00143         xco[nr-1] = 0 ;
00144         som = 2 * sgn * xci[nr-1] ;
00145         xco[nr-2] = som ;
00146         for (int i = nr-3 ; i >= 0 ; i-- ) {
00147         sgn = - sgn ;
00148         som += 2 * sgn * xci[i+1] ;
00149         xco[i] = som ;
00150         }   // Fin de la premiere boucle sur r
00151         for (int i=0 ; i<nr ; i+=2) {
00152         xco[i] = -xco[i] ;
00153         }   // Fin de la deuxieme boucle sur r
00154         
00155         xci += nr ;
00156         xco += nr ;
00157     }   // Fin de la boucle sur theta
00158     }   // Fin de la boucle sur phi
00159     
00160     // On remet les choses la ou il faut
00161     delete [] tb->t ;
00162     tb->t = xo ;
00163     
00164     // base de developpement
00165     // pair -> impair
00166     int base_t = base & MSQ_T ;
00167     int base_p = base & MSQ_P ;
00168     base = base_p | base_t | R_CHEBI ;
00169 
00170 }
00171 
00172             //----------------
00173             // cas R_CHEBI ---
00174             //----------------
00175 
00176 void _sx_r_chebi(Tbl* tb, int& base)
00177 {
00178 
00179     // Peut-etre rien a faire ?
00180     if (tb->get_etat() == ETATZERO) {
00181     int base_t = base & MSQ_T ;
00182     int base_p = base & MSQ_P ;
00183     base = base_p | base_t | R_CHEBP ;
00184     return ;
00185     }
00186     
00187     // Pour le confort
00188     int nr = (tb->dim).dim[0] ;     // Nombre
00189     int nt = (tb->dim).dim[1] ;     //   de points
00190     int np = (tb->dim).dim[2] ;     //      physiques REELS
00191     np = np - 2 ;           // Nombre de points physiques
00192     
00193     // pt. sur le tableau de double resultat
00194     double* xo = new double [tb->get_taille()];
00195     
00196     // Initialisation a zero :
00197     for (int i=0; i<tb->get_taille(); i++) {
00198     xo[i] = 0 ; 
00199     }
00200     
00201     // On y va...
00202     double* xi = tb->t ;
00203     double* xci = xi ;  // Pointeurs
00204     double* xco = xo ;  //  courants
00205     
00206     int borne_phi = np + 1 ; 
00207     if (np == 1) {
00208     borne_phi = 1 ; 
00209     }
00210     
00211     for (int k=0 ; k< borne_phi ; k++) 
00212     if (k == 1)  {
00213         xci += nr*nt ;
00214         xco += nr*nt ;
00215         }
00216     else {
00217     for (int j=0 ; j<nt ; j++) {
00218         double som ;
00219         int sgn = 1 ;
00220         
00221         xco[nr-1] = 0 ;
00222         som = 2 * sgn * xci[nr-2] ;
00223         xco[nr-2] = som ;
00224         for (int i = nr-3 ; i >= 0 ; i-- ) {
00225         sgn = - sgn ;
00226         som += 2 * sgn * xci[i] ;
00227         xco[i] = som ;
00228         }   // Fin de la premiere boucle sur r
00229         for (int i=0 ; i<nr ; i+=2) {
00230         xco[i] = -xco[i] ;
00231         }   // Fin de la deuxieme boucle sur r
00232         xco[0] *= .5 ;
00233         
00234         xci += nr ;
00235         xco += nr ;
00236     }   // Fin de la boucle sur theta
00237     }   // Fin de la boucle sur phi
00238     
00239     // On remet les choses la ou il faut
00240     delete [] tb->t ;
00241     tb->t = xo ;
00242     
00243     // base de developpement
00244     // impair -> pair
00245     int base_t = base & MSQ_T ;
00246     int base_p = base & MSQ_P ;    
00247     base = base_p | base_t | R_CHEBP ;
00248 }
00249 
00250             //--------------------
00251             // cas R_CHEBPIM_P --
00252             //------------------
00253 
00254 void _sx_r_chebpim_p(Tbl* tb, int& base)
00255 {
00256   
00257     // Peut-etre rien a faire ?
00258     if (tb->get_etat() == ETATZERO) {
00259     int base_t = base & MSQ_T ;
00260     int base_p = base & MSQ_P ;
00261     base = base_p | base_t | R_CHEBPIM_I ;
00262     return ;
00263     }
00264     
00265     // Pour le confort
00266     int nr = (tb->dim).dim[0] ;     // Nombre
00267     int nt = (tb->dim).dim[1] ;     //   de points
00268     int np = (tb->dim).dim[2] ;     //      physiques REELS
00269     np = np - 2 ;          
00270    
00271     // pt. sur le tableau de double resultat
00272     double* xo = new double [tb->get_taille()];
00273 
00274     // Initialisation a zero :
00275     for (int i=0; i<tb->get_taille(); i++) {
00276     xo[i] = 0 ; 
00277     }
00278         
00279     // On y va...
00280     double* xi = tb->t ;
00281     double* xci ;   // Pointeurs
00282     double* xco ;   //  courants
00283     
00284     
00285     // Partie paire
00286     xci = xi ;
00287     xco = xo ;
00288   
00289     int auxiliaire ;
00290     
00291     for (int k=0 ; k<np+1 ; k += 4)  {
00292     
00293     auxiliaire = (k==np) ? 1 : 2 ; // evite de prendre le dernier coef
00294     for (int kmod=0 ; kmod<auxiliaire ; kmod++) {
00295         
00296         
00297         // On evite le sin (0*phi)
00298     
00299     if ((k==0) && (kmod == 1)) { 
00300         xco += nr*nt ;
00301         xci += nr*nt ;
00302         }
00303         
00304     else 
00305         for (int j=0 ; j<nt ; j++) {
00306 
00307         double som ;
00308         int sgn = 1 ;
00309         
00310         xco[nr-1] = 0 ;
00311         som = 2 * sgn * xci[nr-1] ;
00312         xco[nr-2] = som ;
00313         for (int i = nr-3 ; i >= 0 ; i-- ) {
00314             sgn = - sgn ;
00315             som += 2 * sgn * xci[i+1] ;
00316             xco[i] = som ;
00317         }   // Fin de la premiere boucle sur r
00318         for (int i=0 ; i<nr ; i+=2) {
00319             xco[i] = -xco[i] ;
00320         }   // Fin de la deuxieme boucle sur r
00321         
00322         xci += nr ; // au
00323         xco += nr ; //  suivant
00324         }   // Fin de la boucle sur theta
00325     }   // Fin de la boucle sur kmod
00326     xci += 2*nr*nt ;    // saute
00327     xco += 2*nr*nt ;    //  2 phis
00328     }   // Fin de la boucle sur phi
00329 
00330     // Partie impaire
00331     xci = xi + 2*nr*nt ;
00332     xco = xo + 2*nr*nt ;
00333     for (int k=2 ; k<np+1 ; k += 4) {
00334     
00335     auxiliaire = (k==np) ? 1 : 2 ; // evite de prendre le dernier coef
00336     for (int kmod=0 ; kmod<auxiliaire ; kmod++) {
00337         for (int j=0 ; j<nt ; j++) {
00338 
00339         double som ;
00340         int sgn = 1 ;
00341         
00342         xco[nr-1] = 0 ;
00343         som = 2 * sgn * xci[nr-2] ;
00344         xco[nr-2] = som ;
00345         for (int i = nr-3 ; i >= 0 ; i-- ) {
00346             sgn = - sgn ;
00347             som += 2 * sgn * xci[i] ;
00348             xco[i] = som ;
00349         }   // Fin de la premiere boucle sur r
00350         for (int i=0 ; i<nr ; i+=2) {
00351             xco[i] = -xco[i] ;
00352         }   // Fin de la deuxieme boucle sur r
00353         xco[0] *= .5 ;
00354         
00355         xci += nr ;
00356         xco += nr ;
00357     }   // Fin de la boucle sur theta
00358     }   // Fin de la boucle sur kmod
00359     xci += 2*nr*nt ;
00360     xco += 2*nr*nt ;
00361     }   // Fin de la boucle sur phi
00362     
00363     // On remet les choses la ou il faut
00364     delete [] tb->t ;
00365     tb->t = xo ;
00366     
00367     // base de developpement
00368     // (pair,impair) -> (impair,pair)
00369     int base_t = base & MSQ_T ;
00370     int base_p = base & MSQ_P ;
00371     base = base_p | base_t | R_CHEBPIM_I ;
00372 }
00373 
00374             //-------------------
00375             // cas R_CHEBPIM_I --
00376             //-------------------
00377 
00378 void _sx_r_chebpim_i(Tbl* tb, int& base)
00379 {
00380 
00381    // Peut-etre rien a faire ?
00382     if (tb->get_etat() == ETATZERO) {
00383     int base_t = base & MSQ_T ;
00384     int base_p = base & MSQ_P ;
00385     base = base_p | base_t | R_CHEBPIM_P ;
00386     return ;
00387     }
00388     
00389     // Pour le confort
00390     int nr = (tb->dim).dim[0] ;     // Nombre
00391     int nt = (tb->dim).dim[1] ;     //   de points
00392     int np = (tb->dim).dim[2] ;     //      physiques REELS
00393     np = np - 2 ;          
00394    
00395     // pt. sur le tableau de double resultat
00396     double* xo = new double [tb->get_taille()];
00397     
00398     // Initialisation a zero :
00399     for (int i=0; i<tb->get_taille(); i++) {
00400     xo[i] = 0 ; 
00401     }
00402     
00403     // On y va...
00404     double* xi = tb->t ;
00405     double* xci ;   // Pointeurs
00406     double* xco ;   //  courants
00407     
00408     // Partie impaire
00409     xci = xi ;
00410     xco = xo ;
00411     
00412       
00413     int auxiliaire ;
00414     
00415     for (int k=0 ; k<np+1 ; k += 4)  {
00416     
00417     auxiliaire = (k==np) ? 1 : 2 ; // evite de prendre le dernier coef
00418     for (int kmod=0 ; kmod<auxiliaire ; kmod++) {
00419         
00420         
00421         // On evite le sin (0*phi)
00422     
00423     if ((k==0) && (kmod == 1)) { 
00424         xco += nr*nt ;
00425         xci += nr*nt ;
00426         }
00427         
00428     else 
00429         for (int j=0 ; j<nt ; j++) {
00430 
00431         double som ;
00432         int sgn = 1 ;
00433         
00434         xco[nr-1] = 0 ;
00435         som = 2 * sgn * xci[nr-2] ;
00436         xco[nr-2] = som ;
00437         for (int i = nr-3 ; i >= 0 ; i-- ) {
00438             sgn = - sgn ;
00439             som += 2 * sgn * xci[i] ;
00440             xco[i] = som ;
00441         }   // Fin de la premiere boucle sur r
00442         for (int i=0 ; i<nr ; i+=2) {
00443             xco[i] = -xco[i] ;
00444         }   // Fin de la deuxieme boucle sur r
00445         xco[0] *= .5 ;
00446         
00447         xci += nr ;
00448         xco += nr ;
00449         }   // Fin de la boucle sur theta
00450     }   // Fin de la boucle sur kmod
00451     xci += 2*nr*nt ;
00452     xco += 2*nr*nt ;
00453     }   // Fin de la boucle sur phi
00454 
00455     // Partie paire
00456     xci = xi + 2*nr*nt ;
00457     xco = xo + 2*nr*nt ;
00458     for (int k=2 ; k<np+1 ; k += 4) {
00459     
00460     auxiliaire = (k==np) ? 1 : 2 ; // evite de prendre le dernier coef
00461     for (int kmod=0 ; kmod<auxiliaire ; kmod++) {
00462         for (int j=0 ; j<nt ; j++) {
00463 
00464         double som ;
00465         int i ;
00466         int sgn = 1 ;
00467         
00468         xco[nr-1] = 0 ;
00469         som = 2 * sgn * xci[nr-1] ;
00470         xco[nr-2] = som ;
00471         for (i = nr-3 ; i >= 0 ; i-- ) {
00472             sgn = - sgn ;
00473             som += 2 * sgn * xci[i+1] ;
00474             xco[i] = som ;
00475         }   // Fin de la premiere boucle sur r
00476         for (i=0 ; i<nr ; i+=2) {
00477             xco[i] = -xco[i] ;
00478         }   // Fin de la deuxieme boucle sur r
00479         
00480         xci += nr ;
00481         xco += nr ;
00482     }   // Fin de la boucle sur theta
00483     }   // Fin de la boucle sur kmod
00484     xci += 2*nr*nt ;
00485     xco += 2*nr*nt ;
00486     }   // Fin de la boucle sur phi
00487     
00488     // On remet les choses la ou il faut
00489    delete [] tb->t ;
00490     tb->t = xo ;
00491     
00492     // base de developpement
00493     // (impair,pair) -> (pair,impair)
00494     int base_t = base & MSQ_T ;
00495     int base_p = base & MSQ_P ;
00496     base = base_p | base_t | R_CHEBPIM_P ;
00497 }
00498 
00499             //---------------
00500             // cas R_CHEBPI_P --
00501             //--------------
00502 
00503 void _sx_r_chebpi_p(Tbl* tb, int& base)
00504     {
00505     // Peut-etre rien a faire ?
00506     if (tb->get_etat() == ETATZERO) {
00507     int base_t = base & MSQ_T ;
00508     int base_p = base & MSQ_P ;
00509     base = base_p | base_t | R_CHEBPI_I ;
00510     return ;
00511     }
00512     
00513     // Pour le confort
00514     int nr = (tb->dim).dim[0] ;     // Nombre
00515     int nt = (tb->dim).dim[1] ;     //   de points
00516     int np = (tb->dim).dim[2] ;     //      physiques REELS
00517     np = np - 2 ;           // Nombre de points physiques
00518     
00519     // pt. sur le tableau de double resultat
00520     double* xo = new double [tb->get_taille()];
00521     
00522     // Initialisation a zero :
00523     for (int i=0; i<tb->get_taille(); i++) {
00524     xo[i] = 0 ; 
00525     }
00526     
00527     // On y va...
00528     double* xi = tb->t ;
00529     double* xci = xi ;  // Pointeurs
00530     double* xco = xo ;  //  courants
00531 
00532     int borne_phi = np + 1 ; 
00533     if (np == 1) {
00534     borne_phi = 1 ; 
00535     }
00536     
00537     for (int k=0 ; k< borne_phi ; k++)
00538       if (k==1) {
00539         xci += nr*nt ;
00540         xco += nr*nt ;
00541     }
00542     else {
00543     for (int j=0 ; j<nt ; j++) {
00544         int l = j%2;
00545         if(l==0){
00546           double som ;
00547           int sgn = 1 ;
00548           
00549           xco[nr-1] = 0 ;
00550           som = 2 * sgn * xci[nr-1] ;
00551           xco[nr-2] = som ;
00552           for (int i = nr-3 ; i >= 0 ; i-- ) {
00553         sgn = - sgn ;
00554         som += 2 * sgn * xci[i+1] ;
00555         xco[i] = som ;
00556           } // Fin de la premiere boucle sur r
00557           for (int i=0 ; i<nr ; i+=2) {
00558         xco[i] = -xco[i] ;
00559           } // Fin de la deuxieme boucle sur r
00560         } else {
00561           double som ;
00562           int sgn = 1 ;
00563           
00564           xco[nr-1] = 0 ;
00565           som = 2 * sgn * xci[nr-2] ;
00566           xco[nr-2] = som ;
00567           for (int i = nr-3 ; i >= 0 ; i-- ) {
00568         sgn = - sgn ;
00569         som += 2 * sgn * xci[i] ;
00570         xco[i] = som ;
00571           } // Fin de la premiere boucle sur r
00572           for (int i=0 ; i<nr ; i+=2) {
00573         xco[i] = -xco[i] ;
00574           } // Fin de la deuxieme boucle sur r
00575           xco[0] *= .5 ;
00576         }
00577         xci += nr ;
00578         xco += nr ;
00579     }   // Fin de la boucle sur theta
00580     }   // Fin de la boucle sur phi
00581     
00582     // On remet les choses la ou il faut
00583     delete [] tb->t ;
00584     tb->t = xo ;
00585     
00586     // base de developpement
00587     // pair -> impair
00588     int base_t = base & MSQ_T ;
00589     int base_p = base & MSQ_P ;
00590     base = base_p | base_t | R_CHEBPI_I ;
00591 
00592 }
00593 
00594             //----------------
00595             // cas R_CHEBPI_I ---
00596             //----------------
00597 
00598 void _sx_r_chebpi_i(Tbl* tb, int& base)
00599 {
00600 
00601     // Peut-etre rien a faire ?
00602     if (tb->get_etat() == ETATZERO) {
00603     int base_t = base & MSQ_T ;
00604     int base_p = base & MSQ_P ;
00605     base = base_p | base_t | R_CHEBPI_P ;
00606     return ;
00607     }
00608     
00609     // Pour le confort
00610     int nr = (tb->dim).dim[0] ;     // Nombre
00611     int nt = (tb->dim).dim[1] ;     //   de points
00612     int np = (tb->dim).dim[2] ;     //      physiques REELS
00613     np = np - 2 ;           // Nombre de points physiques
00614     
00615     // pt. sur le tableau de double resultat
00616     double* xo = new double [tb->get_taille()];
00617     
00618     // Initialisation a zero :
00619     for (int i=0; i<tb->get_taille(); i++) {
00620     xo[i] = 0 ; 
00621     }
00622     
00623     // On y va...
00624     double* xi = tb->t ;
00625     double* xci = xi ;  // Pointeurs
00626     double* xco = xo ;  //  courants
00627     
00628     int borne_phi = np + 1 ; 
00629     if (np == 1) {
00630     borne_phi = 1 ; 
00631     }
00632     
00633     for (int k=0 ; k< borne_phi ; k++) 
00634     if (k == 1)  {
00635         xci += nr*nt ;
00636         xco += nr*nt ;
00637         }
00638     else {
00639     for (int j=0 ; j<nt ; j++) {
00640         int l = j%2;
00641         if(l==1){
00642           double som ;
00643           int sgn = 1 ;
00644           
00645           xco[nr-1] = 0 ;
00646           som = 2 * sgn * xci[nr-1] ;
00647           xco[nr-2] = som ;
00648           for (int i = nr-3 ; i >= 0 ; i-- ) {
00649         sgn = - sgn ;
00650         som += 2 * sgn * xci[i+1] ;
00651         xco[i] = som ;
00652           } // Fin de la premiere boucle sur r
00653           for (int i=0 ; i<nr ; i+=2) {
00654         xco[i] = -xco[i] ;
00655           } // Fin de la deuxieme boucle sur r
00656         } else {
00657           double som ;
00658           int sgn = 1 ;
00659           
00660           xco[nr-1] = 0 ;
00661           som = 2 * sgn * xci[nr-2] ;
00662           xco[nr-2] = som ;
00663           for (int i = nr-3 ; i >= 0 ; i-- ) {
00664         sgn = - sgn ;
00665         som += 2 * sgn * xci[i] ;
00666         xco[i] = som ;
00667           } // Fin de la premiere boucle sur r
00668           for (int i=0 ; i<nr ; i+=2) {
00669         xco[i] = -xco[i] ;
00670           } // Fin de la deuxieme boucle sur r
00671           xco[0] *= .5 ;
00672         }
00673         xci += nr ;
00674         xco += nr ;
00675     }   // Fin de la boucle sur theta
00676     }   // Fin de la boucle sur phi
00677     
00678     // On remet les choses la ou il faut
00679     delete [] tb->t ;
00680     tb->t = xo ;
00681     
00682     // base de developpement
00683     // impair -> pair
00684     int base_t = base & MSQ_T ;
00685     int base_p = base & MSQ_P ;    
00686     base = base_p | base_t | R_CHEBPI_P ;
00687 }

Generated on Tue Feb 7 01:35:18 2012 for LORENE by  doxygen 1.4.6