12 std::list<mon> moninB;
16 template<
typename typPk,
typename typdump>
17 void Dump(
const typPk & Pk ,typdump &dump)
19 typedef typename typdump::value_type
dumpstruct;
24 next.
k=Pk.front().ind.GetDegree();
31 for(
typename typPk::const_iterator iter=Pk.begin()
32 ;iter!=Pk.end();iter++,i++)
42 template<
typename Base,
typename typdump,
typename typrecall>
50 typedef typename typdump::value_type::pol_t
pol;
51 typename typdump::iterator iterdump=dump.begin(),stockiter=dump.end();
52 for(
typename typrecall::iterator iter=recall.begin()
53 ;iter!=recall.end();iter++)
55 MAC_REV_FREE<coeff>(iter->nf,iter->size*
sizeof(coeff));
56 MAC_REV_FREE<char>(iter->nfind,iter->sizenf);
58 recall.erase(recall.begin(),recall.end());
62 mon *tmp=(mon*)MAC_REV_MALLOC<mon>(iter->taille1*
sizeof(mon));
64 for(
int i=0;
i<iter->taille1;
i++)
65 if(iter->accept[
i].GetDegree()<=
k)
68 tmp[tmptaille++]=iter->accept[
i];
74 MAC_REV_FREE<mon>(tmp,iter->taille1*
sizeof(
mon));
75 MAC_REV_FREE<mon>(iter->accept,iter->taille1*
sizeof(
mon));
76 MAC_REV_FREE<mon>(iter->refuse,iter->taille2*
sizeof(
mon));
81 MAC_REV_FREE<mon>(iter->accept,iter->taille1*
sizeof(
mon));
82 iter->accept=(mon*)MAC_REV_REALLOC<mon>((
void*)tmp
83 ,iter->taille1*
sizeof(
mon)
84 ,tmptaille*
sizeof(mon));
85 iter->taille1=tmptaille;
87 tmp=(mon*)MAC_REV_MALLOC<mon>(iter->taille2*
sizeof(mon));
89 for(
int i=0;
i<iter->taille2;
i++)
93 if((iter->refuse[
i].GetDegree()<=
k))
97 tmp[tmptaille++]=iter->refuse[
i];
101 MAC_REV_FREE<mon>(iter->refuse,iter->taille2*
sizeof(
mon));
110 iter->refuse=(mon*)MAC_REV_REALLOC<mon>((
void*)tmp
111 ,iter->taille2*
sizeof(
mon)
112 ,tmptaille*
sizeof(mon));
114 iter->taille2=tmptaille;
121 for(iterdump=dump.begin();iterdump!=stockiter && iterdump->k<
k;iterdump++);
123 if(iterdump!=stockiter)
124 stockiter=iterdump++;
125 if(stockiter!=dump.end())
129 if(k==0) {cout<<
"pas de sol"<<endl;exit(0);}
132 if(0&&iterdump!=dump.end())
134 for(
int i=0;
i<iterdump->size;
i++)
135 recall.push_back(iterdump->nf[
i]);
139 for(;iterdump!=dump.end();iterdump++)
153 for(
int ii=0;ii<(iterdump->size);ii++)
155 MAC_REV_FREE<coeff>(iterdump->nf[ii].nf
156 ,iterdump->nf[ii].size*
sizeof(coeff));
157 MAC_REV_FREE<char>(iterdump->nf[ii].nfind
158 ,iterdump->nf[ii].sizenf);
160 MAC_REV_FREE<pol>(iterdump->nf,iterdump->size*
sizeof(
pol));
165 dump.erase(stockiter,dump.end());
169 template<
typename typPk,
typename typMk,
typename typdump>
170 void recover(typPk &Pk,typMk &Mk,
const typdump & dump,
int k)
172 typedef typename typPk::value_type
pol;
173 typename typdump::const_iterator iter;
179 Pk.erase(Pk.begin(),Pk.end());
180 Mk.erase(Mk.begin(),Mk.end());
181 for(iter=dump.begin();(iter!=dump.end())&&(iter->k<k);iter++);
183 if ((iter!=dump.end())&&(iter->k==k))
184 for(
int i=0;
i<iter->size;
i++)
191 Pk.push_back(iter->nf[
i]);
192 Mk.push_back(Pk.rbegin()->ind);
198 #endif // ALREADY_dump3
int size
Definition: dump.hpp:6
pol pol_t
Definition: dump3.hpp:6
list< predicat >::iterator iterator
Definition: types.hpp:20
int k
Definition: dump.hpp:5
void recover(typPk &Pk, typMk &Mk, const typdump &dump, int k)
Definition: dump3.hpp:170
T coeff_t
Definition: pol.hpp:9
MSKint32t k
Definition: mosek.h:2713
C coeff_t
Definition: Monom.hpp:26
void forget(Base &b, typdump &dump, int k, typrecall &recall)
Definition: dump3.hpp:43
void * MAC_REV_MALLOC(int size)
Definition: memory.hpp:39
iterator end()
Definition: types.hpp:30
Mon mon
Definition: solver_bb_floating.cpp:136
MSKint32t MSKint32t MSKint32t i
Definition: mosek.h:2278
pol * nf
Definition: dump.hpp:7
iterator begin()
Definition: types.hpp:25
predicat::monom_t mon
Definition: types.hpp:19
#define pol
Definition: pol2ter.hpp:3
void SetCoeff(const C &c)
Definition: Monom.hpp:68
pol::monom_t mon
Definition: dump3.hpp:7
mon ind
Definition: pol.hpp:11
void Dump(const typPk &Pk, typdump &dump)
Definition: dump3.hpp:17
Multivariate monomials.
Definition: Monom.hpp:21
iterator erase(iterator first, iterator last)
Definition: types.hpp:35