Borderbasix

dimpos.hpp
Go to the documentation of this file.
1 template<typename mon, typename typB>
2 int has_b_index(const mon m,int index,const typB b)
3 {
4  int res=0;
5  list<mon> current_mon;
6  current_mon.push_back(m);
7 // cout<<"monom "<<m<<" b indx cherche "<<index<<endl;
8  for(int i=0;i<index-1;i++)
9  {
10  list<mon> tmp;
11  for(typename list<mon>::iterator iter=current_mon.begin();
12  iter!=current_mon.end();iter++)
13  for(int j=0;j<b.nbvars;j++)
14  {
15  mon tmpmon=my_divmon(*iter,j,b);
16  if(IsinB(tmpmon,b))
17  return 0;
18  if (!member(tmp,tmpmon))
19  tmp.push_back(tmpmon);
20  }
21  current_mon.swap(tmp);
22  }
23  {
24  list<mon> tmp;
25  for(typename list<mon>::iterator iter=current_mon.begin();
26  iter!=current_mon.end();iter++)
27  for(int j=0;j<b.nbvars;j++)
28  {
29  mon tmpmon=my_divmon(*iter,j,b);
30  if (!member(tmp,tmpmon))
31  tmp.push_back(tmpmon);
32  }
33  current_mon.swap(tmp);
34  }
35 
36  for(typename list<mon>::iterator iter=current_mon.begin();
37  iter!=current_mon.end();iter++)
38  {
39  if(IsinB(*iter,b))
40  {
41  res=1;
42  break;
43  }
44  }
45  return res;
46 }
47 
48 template<typename typB>
49 int stop_degree(const typB &b)
50 {
51  typedef typename typB::mon mon;
52  int max_deg=0;
53  int comp_index=2;
54  for(typename typB::const_iterator iter=b.begin();
55  iter!=b.end();iter++)
56  {
57  list<typename typB::mon> listppcm;
58  for(int i=0;i<iter->taille2;i++)
59  listppcm.push_back(iter->refuse[i]);
60  for(;!listppcm.empty();comp_index++)
61  {
62  list<mon> tmp;
63  for(typename list<mon>::iterator iter1=listppcm.begin();
64  iter1!=listppcm.end();
65  iter1++)
66  for(typename list<mon>::iterator iter2=(++iter1)--;
67  iter2!=listppcm.end();
68  iter2++)
69  {
70  mon tmpmon=lcm(*iter1,*iter2);
71  if(!member(tmp,tmpmon))
72  tmp.push_back(tmpmon);
73  }
74  listppcm.erase(listppcm.begin(),listppcm.end());
75  for(typename list<mon>::iterator iter=tmp.begin();
76  iter!=tmp.end();
77  iter++)
78  {
79  if(has_b_index(*iter,comp_index,b))
80  {
81  listppcm.push_back(*iter);
82  if(max_deg<iter->GetDegree()-comp_index+2)
83  max_deg=iter->GetDegree()-comp_index+2;
84  }
85  }
86  }
87  }
88  return max_deg;
89 }
int has_b_index(const mon m, int index, const typB b)
Definition: dimpos.hpp:2
int member(const typMk &tmpMk, const typename typMk::value_type mon)
Definition: corealgo.hpp:1391
list< predicat >::const_iterator const_iterator
Definition: types.hpp:21
MSKconetypee MSKrealt MSKint32t MSKint32t j
Definition: mosek.h:2421
MSKCONST char MSKint32t MSKint32t * index
Definition: mosek.h:2860
iterator end()
Definition: types.hpp:30
int IsinB(const mon &m, const Base &b)
Definition: IsinB3.hpp:68
Mon mon
Definition: solver_bb_floating.cpp:136
int nbvars
Definition: types.hpp:17
Definition: types.hpp:14
Mon my_divmon(const Mon &mon, int i, const Base &b)
Definition: corealgo.hpp:1262
MSKint32t MSKint32t MSKint32t i
Definition: mosek.h:2278
mon lcm(const mon &m1, const mon &m2)
Definition: corealgo.hpp:43
iterator begin()
Definition: types.hpp:25
int stop_degree(const typB &b)
Definition: dimpos.hpp:49
predicat::monom_t mon
Definition: types.hpp:19
Multivariate monomials.
Definition: Monom.hpp:21
Home  |  Download & InstallContributions