include/borderbasix/choice.cc File Reference

Go to the source code of this file.

Functions


Function Documentation

pol::monom_t choice_dlex ( const pol p,
const Base b,
monomial_server &  serv 
) [inline]

Definition at line 91 of file choice.cc.

References Degree(), and my_ord().

00093 {
00094   typename pol::const_iterator iter;//
00095    list<typename pol::monom_t> tmp;
00096   typename pol::monom_t m; 
00097   int degp=Degree(p);
00098   for(iter=p.begin();iter!=p.end();iter++)
00099     if(iter->GetDegree()==degp)
00100       {
00101         tmp.push_back(*iter);
00102       }
00103   m=tmp.front();
00104   for(typename list<typename pol::monom_t>::iterator itertmp=tmp.begin();itertmp!=tmp.end();itertmp++)
00105     {
00106       if(my_ord(*itertmp,m)>0) {m=*itertmp;};
00107     }
00108   return m;
00109 }

pol::monom_t choice_fall ( const pol p,
const Base b,
monomial_server &  serv 
) [inline]

Definition at line 183 of file choice.cc.

References Base< predicat >::begin(), choice_mac(), Degree(), Base< predicat >::end(), isdivisible(), lcm(), and Base< predicat >::nbvar().

00185 {
00186   typedef typename pol::monom_t mon;
00187   typename pol::const_iterator iter,stockpos=p.begin();
00188   int maxi=-1;
00189   mon res=choice_mac(p,b,serv);
00190   return res;
00191   typename Base::const_iterator iterb;
00192   list<mon> tmplist;
00193   int degp=Degree(p);
00194   for(iter=p.begin();iter!=p.end();iter++)
00195     if(iter->GetDegree()==degp)
00196       tmplist.push_back(*iter);
00197   for(typename list<mon>::iterator iterlist=tmplist.begin()
00198         ;iterlist!=tmplist.end();iterlist++)
00199     {
00200       for(iterb=b.begin();iterb!=b.end();iterb++)
00201         {
00202           int isgood=0;
00203           for(int i=0;i<iterb->taille1;i++)
00204             if(isdivisible(iterb->accept[i],*iterlist,b))
00205               {isgood=1;break;}
00206           for(int i=0;i<iterb->taille2;i++)
00207             if(isdivisible(iterb->refuse[i],*iterlist,b))
00208               {isgood=0;break;}
00209           if(isgood)
00210             {
00211               for(int i=0;i<iterb->taille2;i++)
00212                 {
00213                   mon m=lcm(*iterlist,iterb->refuse[i]);
00214                   int dist=0;
00215                   for(int j=0;j<iterb->taille2;j++)
00216                     if ((j!=i) && (isdivisible(iterb->refuse[j],m,b)))
00217                       isgood=0;
00218                   if(isgood)
00219                     {
00220                       
00221                       for(int j=0;j<b.nbvar();j++)
00222                         if(m.GetDegree(j)>iterb->refuse[i].GetDegree(j))
00223                           dist+=m.GetDegree(j)-iterb->refuse[i].GetDegree(j);
00224                       if(dist>maxi)
00225                         {
00226                           res=*iterlist;
00227                           maxi=dist;
00228                         }
00229                     }
00230                 }
00231             }
00232           
00233         }
00234     }
00235   // cout<<"le pol "<<endl<<p<<endl<<"le mon, "<<res<<endl;
00236   return res;
00237 }

pol::monom_t choice_grevlex ( const pol p,
const Base b,
monomial_server &  serv 
) [inline]

Definition at line 66 of file choice.cc.

References Degree(), and my_ord().

00068 {
00069   typename pol::const_iterator iter;//
00070    list<typename pol::monom_t> tmp;
00071   typename pol::monom_t m; 
00072   int degp=Degree(p);
00073   cout<<"p"<<p;
00074   for(iter=p.begin();iter!=p.end();iter++)
00075    if(iter->GetDegree()==degp)
00076       {
00077         tmp.push_back(*iter);
00078       }
00079   m=tmp.front();
00080   for(typename list<typename pol::monom_t>::iterator itertmp=tmp.begin();itertmp!=tmp.end();itertmp++)
00081     {
00082       if(my_ord(*itertmp,m)<0) {m=*itertmp;};
00083     }
00084   cout<<"monom choisi "<<m<<endl;
00085   return m;
00086 }

pol::monom_t choice_mac ( const pol p,
const Base b,
monomial_server &  serv 
) [inline]

Definition at line 114 of file choice.cc.

References Degree().

Referenced by choice_fall(), and choice_mix().

00116 {
00117   typename pol::const_iterator iter;//
00118    list<typename pol::monom_t> tmp;
00119   typename pol::monom_t tmpmon; 
00120   int maxtmpdeg=0,degp=Degree(p);
00121   for(iter=p.begin();iter!=p.end();iter++)
00122     if(iter->GetDegree()==degp)
00123       {
00124         tmp.push_back(*iter);
00125       }
00126   for(typename list<typename pol::monom_t>::iterator itertmp=tmp.begin();
00127       itertmp!=tmp.end();itertmp++)
00128     {
00129       //cout<<"monomes regarde "<<*itertmp<<" Lavr  "<<lvar(itertmp->rep)<<endl;
00130       for(int i=0;i<=lvar(itertmp->rep);i++)
00131         {
00132           if(itertmp->GetDegree(i)>=maxtmpdeg)
00133             {
00134               maxtmpdeg=itertmp->GetDegree(i);
00135               tmpmon=*itertmp;
00136             }
00137         }
00138     }
00139   return tmpmon;
00140 }

pol::monom_t choice_mix ( const pol p,
const Base b,
monomial_server &  serv 
) [inline]

Definition at line 144 of file choice.cc.

References choice_grevlex, and choice_mac().

00146 {
00147   static unsigned int compt=0;
00148   compt++;
00149   if((compt/3)%2) return choice_grevlex(p,b);
00150   return choice_mac(p,b);
00151 }

pol::monom_t choice_mpq ( const pol p,
const Base b,
monomial_server &  serv 
) [inline]

Definition at line 155 of file choice.cc.

References Degree().

00157 {
00158   typename pol::const_iterator iter,stockpos=p.begin();
00159   int mini=INT_MAX,degp=Degree(p);
00160   for(iter=p.begin();iter!=p.end();iter++)
00161     if(iter->GetDegree()==degp)
00162       {
00163         if(mpz_size(mpq_numref(&(iter->GetCoeff().rep())))+
00164            mpz_size(mpq_denref(&(iter->GetCoeff().rep())))<mini) {
00165           mini=mpz_size(mpq_numref(&(iter->GetCoeff().rep())))+
00166             mpz_size(mpq_denref(&(iter->GetCoeff().rep())));
00167           //cout<<"newmax "<<max<<endl;
00168           //cout<<" les monomes "<<*iter<<endl;
00169           stockpos=iter;
00170         }
00171       }
00172   //break;
00173   //return *iter;
00174   return *stockpos;
00175 }

pol::monom_t choice_naif ( const pol p,
const Base b,
monomial_server &  serv 
) [inline]

Definition at line 27 of file choice.cc.

References Degree().

00029 {
00030   typename pol::const_iterator iter,stockpos=p.end();
00031   typename pol::coeff_t max(0);
00032   for(iter=p.begin();iter!=p.end();iter++)
00033     if(iter->GetDegree()==Degree(p))
00034       {
00035         stockpos=iter;
00036         break;
00037       }
00038   //break;
00039   //return *iter;
00040   return *stockpos;
00041 }

pol::monom_t choice_num ( const pol p,
const Base b,
monomial_server &  serv 
) [inline]

Definition at line 44 of file choice.cc.

References Degree().

00046 {
00047   typename pol::const_iterator iter,stockpos=p.end();
00048   typename pol::coeff_t max(0);
00049   for(iter=p.begin();iter!=p.end();iter++)
00050     if(iter->GetDegree()==Degree(p))
00051       {
00052         if(iter->GetCoeff()*iter->GetCoeff()>max) {
00053           max=iter->GetCoeff()*iter->GetCoeff();
00054           //cout<<"newmax "<<max<<endl;
00055           //cout<<" les monomes "<<*iter<<endl;
00056           stockpos=iter;
00057         }
00058       }
00059   //break;
00060   //return *iter;
00061   return *stockpos;
00062 }

pol::monom_t choice_old ( const pol p,
const Base b,
monomial_server &  serv 
) [inline]

Definition at line 4 of file choice.cc.

References Degree().

00006 {
00007   typename pol::const_iterator iter,stockpos=p.end();
00008   typename pol::coeff_t max=0;
00009   static int tmp=0;
00010   if (tmp<2) {return typename pol::monom_t(tmp++,2);};
00011   for(iter=p.begin();iter!=p.end();iter++)
00012     if(iter->GetDegree()==Degree(p))
00013       {
00014         if(iter->GetCoeff()*iter->GetCoeff()>max) {
00015           max=iter->GetCoeff()*iter->GetCoeff();
00016           cout<<"newmax "<<max<<endl;
00017           cout<<" les monomes "<<*iter<<endl;
00018           stockpos=iter;
00019         }
00020       }
00021   //break;
00022   //return *iter;
00023   return *stockpos;
00024 }


Generated on 6 Dec 2012 for borderbasix by  doxygen 1.6.1