7 template<
typename monom>
 
   17 template<
typename predicat>
 
   24   typedef typename list<predicat>::iterator 
iterator;
 
   29   iterator 
begin () { 
return def.begin(); }
 
   30   const_iterator 
begin ()
 const { 
return def.begin(); }
 
   31   reverse_iterator 
rbegin ()    { 
return def.rbegin(); }
 
   32   const_reverse_iterator 
rbegin ()
 const { 
return def.rbegin(); }
 
   34   iterator 
end () { 
return def.end(); }
 
   35   const_iterator 
end ()
 const { 
return def.end(); }
 
   36   reverse_iterator 
rend () { 
return def.rend(); } 
 
   37   const_reverse_iterator 
rend ()
 const { 
return def.rend(); }
 
   39   iterator 
erase(iterator 
first, iterator 
last){
return def.erase(first,last);};
 
   40   iterator 
erase(iterator 
first){
return def.erase(first);};
 
   45 template<
typename mon,
typename predicat,
typename Base>
 
   48   int inaccept=0,inrefuse=0;
 
   64    return((!inrefuse)&&inaccept);
 
   67 template<
typename mon,
typename Base>
 
   74       res=res||
isinb(m,*iter,b);
 
   82 template<
typename mon,
typename predicat,
typename Base>
 
   85   int inaccept=0,inrefuse=0;
 
  103    return((!inrefuse)&&inaccept);
 
  109 template<
typename mon,
typename Base>
 
  117       res=res||
isinb2(m,*iter,b,div,coc);
 
  125 template<
typename typMk,
typename typdump,
typename Base>
 
  126 void Dovoisins(
const typename typMk::value_type &m, typMk &voisins,
 
  127            const typdump & dump,
const Base &b)
 
  129   typedef typename typMk::value_type 
mon;  
 
  131   typename typdump::const_iterator iter=dump.begin();
 
  134   for(i=0;i<b.
nbvar();i++)
 
  138   for(;iter->k!=(m.GetDegree()-1);iter++);
 
  139   for(i=0;i<iter->size;i++)
 
  140     if(
member(ancien,iter->nf[i].ind)) 
break;
 
  143     if(!
member(voisins,iter->nf[i].ind*mon(
j,1)))
 
  144       voisins.push_back(iter->nf[i].ind*mon(
j,1));
 
  148   template<
typename pol> 
void reinit_nf();
 
  151 template<
typename typPk,
typename typMk ,
typename typdump,
typename Base, 
 
  159   typedef typename typPk::value_type 
pol;
 
  175   mon * baccept=b.
rbegin()->accept;
 
  176   int taille=b.
rbegin()->taille1;
 
  178   for(
int i=0;
i<taille;
i++)
 
  181   for(
typename typMk::iterator iter=voisins.begin();iter!=voisins.end();iter++)
 
  183       for(
int i=0;i<taille;i++)
 
  184     if(baccept[i].rep==iter->
rep)
 
  186         voisins.erase(iter--);
 
  191   for(
typename typMk::iterator iter=voisins.begin();iter!=voisins.end();iter++)
 
  194     voisins.erase(iter--);
 
  198   for(
typename typMk::iterator iter=voisins.begin();iter!=voisins.end();iter++)
 
  201       for(
int i=0;i<b.
nbvar();i++)
 
  202     if(iter->GetDegree(i)>0)
 
  208     typename typdump::const_iterator iterdump;
 
  209       for(iterdump=dump.begin();iterdump!=dump.end();iterdump++)
 
  210         if(iterdump->k==(iter->GetDegree()-1)) 
break;
 
  213       for(i=0;i<iterdump->size;i++)
 
  214         if(
member(ancien,iterdump->nf[i].ind)) 
 
  218       for(j=0;j<b.
nbvar();j++)
 
  219         if(iter->rep==(iterdump->nf[i].ind*mon(j,1)).rep)
 
  230       Pk.push_back(
mult(j,iterdump->nf[i],dump,b,&tmp,tmpsize,w,serv));
 
  235       for(
int k=0;
k<tmpsize-1;
k++)
 
  237           for(
typename typPk::iterator iterpk=Pk.begin()
 
  238             ;iterpk!=Pk.end();iterpk++)
 
  239         if(iterpk->ind.rep==tmp[
k].
rep)
 
  246       MAC_REV_FREE<mon>(tmp,
sizeof(
mon)*(tmpsize));
 
  251       Pk.back().ind.SetCoeff((coeff)1);
 
  259   b.
rbegin()->refuse=(mon*)MAC_REV_REALLOC<mon>(b.
rbegin()->refuse
 
  261                 sizeof(
mon)*(b.
rbegin()->taille2+voisins.size()));
 
  262   typename typMk::iterator iter=voisins.begin();
 
  263   for(
unsigned int i=b.
rbegin()->taille2;i<b.
rbegin()->taille2+voisins.size()
 
  266   b.
rbegin()->taille2+=voisins.size();
 
  271 template<
typename typmat,
typename typPk, 
typename typMk,
typename typdump,
 
  273 void AddB(
const typmat & mat, typPk & Pk,
const typMk &Mk,
const typdump & dump,
 
  276   typedef typename typPk::value_type 
pol;
 
  279   typename typPk::iterator iterpk;
 
  281   typename typMk::const_iterator iter=Mk.begin();
 
  282   int r=my_rank(mat),comprefuse=0,compaccept=0;
 
  284   cout<<
"DANS ADDB"<<endl;
 
  285   cout<<
"rang de la matrice m "<<r<<
" Mk.size "<<Mk.size()<<endl;
 
  286   cout<<
"taille de la matrice "<<mat.nrow<<
"x"<<mat.ncol<<endl;
 
  287   tmp.
refuse=(mon*)MAC_REV_MALLOC<mon>(r*
sizeof(mon));
 
  289   tmp.
accept=(mon*)MAC_REV_MALLOC<mon>((Mk.size()-
r)*
sizeof(mon));
 
  294   for(i=0;i<Mk.size();i++,iter++)
 
  298           tmp.
accept[compaccept++]=*iter;
 
  299           cout<<
"monome rajoute au quotient "<<*iter<<endl;
 
  303       tmp.
refuse[comprefuse++]=*iter;
 
  306   b.
def.push_back(tmp);
 
  310   for(
unsigned int i=0;i<Mk.size();i++,iter++)
 
  317       coeff_t *vec=(coeff_t*)MAC_REV_MALLOC<coeff_t>(i*
sizeof(coeff_t));
 
  318       for(
unsigned int j=0;
j<
i;
j++)
 
  322       for(
int k=i-1;
k>=0;
k--)
 
  326           for(
int j=
k-1;
j>=0;
j--)
 
  327         vec[
j]-=vec[
k]*mat(
j,
k);
 
  331       for(
unsigned int j=0;
j<
i;
j++,iterpk++)
 
  338           MAC_REV_REALLOC<typename mon::coeff_t>(iterpk->nf
 
  341         if((index/8)>=iterpk->sizenf)
 
  343             iterpk->nfind=(
unsigned char*)
 
  344               MAC_REV_REALLOC<unsigned char>(iterpk->nfind
 
  345                 ,iterpk->sizenf,index/8+1);
 
  346             for(
int i=iterpk->sizenf;i<index/8+1;i++)
 
  348             iterpk->sizenf=index/8+1;
 
  353         for(
int k=iterpk->sizenf-1;
k>index/8;
k--)
 
  356             if(iterpk->nfind[
k]!=0)
 
  358             for(
int j=0;j<
nbbits[iterpk->nfind[
k]];j++)
 
  360                 iterpk->nf[
i]=iterpk->nf[i-1];
 
  365         for(
int k=7;
k>(index%8);
k--)
 
  366           if((iterpk->nfind[index/8]>>
k)&1)
 
  368               iterpk->nf[
i]=iterpk->nf[i-1];
 
  371         iterpk->nf[
i]=vec[
j];
 
  372         iterpk->nfind[index/8]|=(1<<(index%8));
 
  378       MAC_REV_FREE<coeff_t>(vec,i*
sizeof(coeff_t));
 
  389 template<
typename mon,
typename typB>
 
  397   for(iter=b.
begin();iter!=b.
end();iter++)
 
  399       for(
int i=0;
i<iter->taille1;
i++)
 
  404       for(
int i=0;
i<iter->taille2;
i++)
 
  416   cout<<
"je cherche le pred pere de "<<m<<endl;
 
  417   cout<<
"je renvoie ce pred"<<endl;
 
  418   for(
int i=0;
i<iter->taille1;
i++)
 
  420       cout<<
"iter.accept[i] "<<iter->accept[
i]<<endl;
 
  422   for(
int i=0;
i<iter->taille2;
i++)
 
  424       cout<<
"iter.refuse[i] "<<iter->refuse[
i]<<endl;
 
  430 template<
typename typmat,
typename typPk, 
typename typMk,
typename typdump,
 
  431      typename typB, 
typename typP>
 
  432 void AddB_dim(
const typmat & mat, 
const typmat &L, typP &P, typPk & Pk
 
  433           ,
const typMk &Mk,
const typdump & dump, 
typB &b)
 
  436   typedef typename typPk::value_type 
pol;
 
  439   typename typPk::iterator iterpk;
 
  441   typename typMk::const_iterator iter=Mk.begin();
 
  442    int r=my_rank(mat),comprefuse=0,compaccept=0;
 
  457   for(
unsigned int i=0;i<Mk.size();i++,iter++)
 
  464       coeff_t *vec=(coeff_t*)MAC_REV_MALLOC<coeff_t>(i*
sizeof(coeff_t));
 
  465       for(
unsigned int j=0;
j<
i;
j++)
 
  469       for(
int k=i-1;
k>=0;
k--)
 
  473           for(
int j=
k-1;
j>=0;
j--)
 
  474         vec[
j]-=vec[
k]*mat(
j,
k);
 
  478       for(
unsigned int j=0;
j<
i;
j++,iterpk++)
 
  485           MAC_REV_REALLOC<typename mon::coeff_t>(iterpk->nf
 
  488         if((index/8)>=iterpk->sizenf)
 
  490             iterpk->nfind=(
unsigned char*)
 
  491               MAC_REV_REALLOC<unsigned char>(iterpk->nfind
 
  492                 ,iterpk->sizenf,index/8+1);
 
  493             for(
int i=iterpk->sizenf;i<index/8+1;i++)
 
  495             iterpk->sizenf=index/8+1;
 
  500         for(
int k=iterpk->sizenf-1;
k>index/8;
k--)
 
  503             if(iterpk->nfind[
k]!=0)
 
  505             for(
int j=0;j<
nbbits[iterpk->nfind[
k]];j++)
 
  507                 iterpk->nf[
i]=iterpk->nf[i-1];
 
  512         for(
int k=7;
k>(index%8);
k--)
 
  513           if((iterpk->nfind[index/8]>>
k)&1)
 
  515               iterpk->nf[
i]=iterpk->nf[i-1];
 
  518         iterpk->nf[
i]=vec[
j];
 
  519         iterpk->nfind[index/8]|=(1<<(index%8));
 
  525       MAC_REV_FREE<coeff_t>(vec,i*
sizeof(coeff_t));
 
  530   for(i=0;i<Mk.size();i++,iter++)
 
  538       tmp.
refuse=(mon*)MAC_REV_MALLOC<mon>
 
  541       tmp.
accept=(mon*)MAC_REV_MALLOC<mon>(
sizeof(mon));
 
  544       for(
int j=0;j<stockpred.
taille2;j++)
 
  550       cout<<
"le pere "<<pere<<endl;
 
  551       for(
int j=0;j<stockpred.
taille2;j++)
 
  553           listlcm.push_back(
lcm(pere,stockpred.
refuse[j]));
 
  554       for(
typename list<mon>::iterator iterlcm=listlcm.begin();
 
  555           iterlcm!=listlcm.end();iterlcm++)
 
  556         for(
typename list<mon>::iterator iterlcm2=listlcm.begin();
 
  557         iterlcm2!=listlcm.end();iterlcm2++)
 
  558           if ((iterlcm2!=iterlcm) && (
isdivisible(*iterlcm,*iterlcm2,b)))
 
  560           cout<<
"je vire "<<*iterlcm2<<
" parce que divisible par "<<*iterlcm<<endl;
 
  561           listlcm.erase(iterlcm2--);
 
  563       cout<<
"apres tri il me reste"<<endl;
 
  564       for(
typename list<mon>::iterator iterlcm=listlcm.begin();
 
  565           iterlcm!=listlcm.end();iterlcm++)
 
  566         cout<<*iterlcm<<endl;
 
  569       for(
typename list<mon>::iterator iterlcm=listlcm.begin();
 
  570           iterlcm!=listlcm.end();iterlcm++)
 
  571         if(iterlcm->GetDegree()>=Mk.begin()->GetDegree())
 
  573         for(j=0;j<stockpred.
taille2;j++)
 
  581       cout<<
"mon rajoute "<<*iter<<endl;
 
  582       for(
typename typMk::const_iterator iter2=Mk.begin()
 
  583         ;iter2!=iter;iter2++,j++,iterpk++)
 
  587         mon tmpmon=
lcm(*iter,*iter2), tmpmon2=
mon(1);
 
  588         for(
int l=0;l<b.
nbvar();l++)
 
  589           tmpmon2*=
mon(l,tmpmon.
GetDegree(l)-iter2->GetDegree(l));
 
  591         cout<<
"iterpk->ind*tmpmon2 "<<iterpk->ind*tmpmon2<<endl;
 
  592         cout<<invconv<Poly>(*iterpk)*tmpmon2<<endl;;
 
  593         P.push_back(invconv<Poly>(*iterpk)*tmpmon2);
 
  600       b.
def.push_back(tmp);  
 
  604   cout<<
"Dans Addb"<<endl;
 
  607     for(
int i=0;i<p->taille1;i++)
 
  609         cout<<
"p.accept[i] "<<p->accept[
i]<<endl;
 
  611     for(
int i=0;i<p->taille2;i++)
 
  613         cout<<
"p.refuse[i] "<<p->refuse[
i]<<endl;
 
  616       cout<<
"eeeeeeeeeeeeeeeeeeeeeeeeeee"<<endl;
 
  622 #endif //ALREADY_IsinB 
Definition: workspace.hpp:11
 
const_iterator end() const 
Definition: IsinB3sdp.hpp:35
 
void my_plus(pol &res, const pol &nf, const coeff toto)
Definition: corealgo.hpp:543
 
int mon2int(const mon &mm)
Definition: placemon3.hpp:679
 
int isdivisible(const mon &m1, const mon &m2, int nbvar)
Definition: isdivisible.hpp:5
 
M div(const M &m1, const M &m2)
Definition: Monom.hpp:217
 
void Dovoisins(const typename typMk::value_type &m, typMk &voisins, const typdump &dump, const Base &b)
Definition: IsinB3sdp.hpp:126
 
Base< predicat< mon > > typB
Definition: solver_bb_floating.cpp:142
 
reverse_iterator rend()
Definition: IsinB3sdp.hpp:36
 
C GetCoeff() const 
Definition: Monom.hpp:67
 
monom monom_t
Definition: IsinB3sdp.hpp:14
 
MSKaccmodee MSKint32t MSKint32t last
Definition: mosek.h:2545
 
list< predicat >::iterator iterator
Definition: IsinB3sdp.hpp:24
 
int IsinB2(const mon &m, const Base &b, mon &div, mon &coc)
Definition: IsinB3sdp.hpp:110
 
typpol mult(int i, const typpol &pol, const typdump &dump, const Base &b, mon **exce, int &exsize)
Definition: corealgo.hpp:1077
 
int nbvar() const 
Definition: IsinB3sdp.hpp:42
 
mon * accept
Definition: types.hpp:6
 
int IsinB(const mon &m, const Base &b)
Definition: IsinB3sdp.hpp:68
 
int member(const typMk &tmpMk, const typename typMk::value_type mon)
Definition: corealgo.hpp:1391
 
list< predicat >::const_iterator const_iterator
Definition: IsinB3sdp.hpp:25
 
T coeff_t
Definition: pol.hpp:9
 
int taille1
Definition: types.hpp:5
 
MSKaccmodee MSKint32t first
Definition: mosek.h:2545
 
int nbvar()
Definition: IsinB3sdp.hpp:41
 
int mon2int(const mon &mm)
Definition: placemon.hpp:294
 
void reinit_multiple()
Definition: placemon3.hpp:85
 
void rajoute_voisins(typPk &Pk, const typMk &Mk, const typdump &dump, Base &b, workspace &w, monomial_server &serv)
Definition: IsinB3sdp.hpp:153
 
MSKconetypee MSKrealt MSKint32t MSKint32t j
Definition: mosek.h:2421
 
int isinb2(const mon &m, predicat p, const Base &b, mon &div, mon &coc)
Definition: IsinB3sdp.hpp:83
 
int isinb(const mon &m, predicat p, const Base &b)
Definition: IsinB3sdp.hpp:46
 
MSKint32t k
Definition: mosek.h:2713
 
R rep
Definition: Monom.hpp:30
 
C coeff_t
Definition: Monom.hpp:26
 
int nbbits[256]
Definition: pol2ter.hpp:4
 
list< predicat >::reverse_iterator reverse_iterator
Definition: IsinB3sdp.hpp:26
 
Definition: placemon3.hpp:14
 
MSKCONST char MSKint32t MSKint32t * index
Definition: mosek.h:2860
 
const_iterator begin() const 
Definition: IsinB3sdp.hpp:30
 
iterator end()
Definition: IsinB3sdp.hpp:34
 
list< predicat > def
Definition: types.hpp:16
 
Mon mon
Definition: solver_bb_floating.cpp:136
 
int nbvars
Definition: types.hpp:17
 
int taille2
Definition: types.hpp:7
 
exponent_t GetDegree() const 
Definition: Monom.hpp:70
 
const_reverse_iterator rbegin() const 
Definition: IsinB3sdp.hpp:32
 
Mon my_divmon(const Mon &mon, int i, const Base &b)
Definition: corealgo.hpp:1262
 
MSKint32t MSKint32t MSKint32t i
Definition: mosek.h:2278
 
predicat predicat_t
Definition: IsinB3sdp.hpp:22
 
MSKrescodee r
Definition: mosek.h:2321
 
mon lcm(const mon &m1, const mon &m2)
Definition: corealgo.hpp:43
 
int isdivisible2(const mon &m1, const mon2 &m2, const Base &b, mon &coc)
Definition: isdivisible.hpp:32
 
predicat< mon > findpred(const mon &m, const typB &b)
Definition: IsinB3sdp.hpp:390
 
mon * refuse
Definition: types.hpp:8
 
void AddB_dim(const typmat &mat, const typmat &L, typP &P, typPk &Pk, const typMk &Mk, const typdump &dump, typB &b)
Definition: IsinB3sdp.hpp:432
 
iterator erase(iterator first)
Definition: IsinB3sdp.hpp:40
 
iterator begin()
Definition: IsinB3sdp.hpp:29
 
const_reverse_iterator rend() const 
Definition: IsinB3sdp.hpp:37
 
list< predicat >::const_reverse_iterator const_reverse_iterator
Definition: IsinB3sdp.hpp:27
 
predicat::monom_t mon
Definition: IsinB3sdp.hpp:23
 
#define pol
Definition: pol2ter.hpp:3
 
Multivariate monomials. 
Definition: Monom.hpp:21
 
iterator erase(iterator first, iterator last)
Definition: IsinB3sdp.hpp:39
 
void AddB(const typmat &mat, typPk &Pk, const typMk &Mk, const typdump &dump, typB &b, monomial_server &serv)
Definition: IsinB3sdp.hpp:273
 
reverse_iterator rbegin()
Definition: IsinB3sdp.hpp:31