Borderbasix

dlexorder.hpp
Go to the documentation of this file.
1 #ifndef ALREADY_dleorder
2 #define ALREADY_dleorder
3 
4 template <class M> struct my_Dlex
5 {
6  static bool less (const M &, const M &);
7  bool operator() (const M &, const M &) const;
8 };
9 template <class M>
10 bool my_Dlex<M>::operator()(const M & m1, const M & m2) const {
11  return less(m1,m2);
12 }
13 
14 template <class M>
15 inline bool my_Dlex<M>::less(const M & m1, const M & m2){
16  int dm1=0,dm2=0,firstdiff=0,tmpdeg1,tmpdeg2;
17  //int dm1=Degree(m1),dm2=Degree(m2);
18  int n1 = lvar(m1.rep), n2 =lvar(m2.rep);
19  int n = std::max(n1,n2);
20  if(n1 <0 && n2>0) return false;
21  if(n2 <0 && n1>0) return true;
22  for(int i=0;i<=n;i++)
23  {
24  tmpdeg1=m1.GetDegree(i);
25  tmpdeg2=m2.GetDegree(i);
26  if(tmpdeg1>tmpdeg2 && firstdiff==0) firstdiff=1;
27  if(tmpdeg2>tmpdeg1 && firstdiff==0) firstdiff=-1;
28  dm1+=tmpdeg1;
29  dm2+=tmpdeg2;
30  }
31  if (dm1 < dm2) return false;
32  else if (dm1 > dm2) return true;
33  return (firstdiff==1);
34 }
35 #endif //ALREADY_dleorder
Definition: dlexorder.hpp:4
#define max(a, b)
Definition: alp_f2c.H:167
int lvar(const dynamicexp< X, E > &A)
Definition: dynamicexp.hpp:178
static bool less(const M &, const M &)
Definition: dlexorder.hpp:15
bool operator()(const M &, const M &) const
Definition: dlexorder.hpp:10
MSKint32t MSKint32t MSKint32t i
Definition: mosek.h:2278
Home  |  Download & InstallContributions