Go to the source code of this file.
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 }