3 template<
typename typPk,
typename typdump,
typename Base,
8 typedef typename typPk::value_type polyalp;
9 typedef typename polyalp::monom_t
mon;
10 typedef typename typdump::value_type
dumpstruct;
12 typename typPk::iterator iter=Pk.begin();
14 for(;iter!=Pk.end();iter++)
18 for(
typename polyalp::iterator itermon=iter->begin();
19 itermon!=iter->end();itermon++)
22 if (!
IsinB(*itermon,b))
37 tmp+=invconv<polyalp>(ttmp,serv)*
mon(itermon->GetCoeff()/ttmp.ind.GetCoeff());
52 template<
typename typPk,
typename typdump,
typename Base,
57 typedef typename typPk::value_type polyalp;
58 typedef typename polyalp::monom_t
mon;
59 typedef typename typdump::value_type
dumpstruct;
61 typename typPk::iterator iter=Pk.begin();
64 for(;iter!=Pk.end();iter++)
68 for(
typename polyalp::iterator itermon=iter->begin();
69 itermon!=iter->end();itermon++)
74 if (!
IsinB2(*itermon,b,div,coc))
90 tmp+=invconv<polyalp>(ttmp,serv)*
mon(itermon->GetCoeff()/ttmp.ind.GetCoeff());
98 cout<<
"le poly avant reecriture "<<*iter<<endl;
100 cout<<
"poly apres reecriture!!\n"<<(*iter)<<endl;
108 template<
typename T,
typename typdump,
typename Base,
typename monomial_server>
112 typedef typename typdump::value_type::pol_t
pol;
113 typedef typename T::value_type polyalp;
114 typedef typename polyalp::monom_t
mon;
124 for(
typename T::iterator iter=Crochet.begin();iter!=Crochet.end();iter++,num_count++)
129 int degiter=
Degree(*iter);
130 for(
typename polyalp::iterator iterpol=iter->begin();iterpol!=iter->end();iterpol++)
132 if (!
IsinB(*iterpol,b))
133 monared.push_back(*iterpol);
136 for(
typename list<mon>::iterator itermon=monared.begin();itermon!=monared.end();itermon++)
145 accumul.
nf=(coeff*)MAC_REV_MALLOC<coeff>(
sizeof(coeff));
148 for(
int j=0;
j<itermon->GetDegree(
i);
j++)
153 tmp=
mult(
i,accumul,dump,b,&exce,sizeex);
154 MAC_REV_FREE<coeff>(accumul.
nf,accumul.
size*
sizeof(coeff));
156 for(
int k=0;
k<sizeex-1;
k++)
158 MAC_REV_FREE<mon>(exce,sizeex*
sizeof(
mon));
160 for(
int k=0;
k<accumul.
size;
k++)
166 result+=tmpmon*accumul.
nf[
k];
168 MAC_REV_FREE<coeff>(accumul.
nf,accumul.
size*
sizeof(coeff));
175 for(
int j=0;
j<itermon->GetDegree(
i);
j++)
182 for (
typename polyalp::iterator iterres=result.begin();
183 iterres!=result.end();iterres++)
185 if (!
IsinB(*iterres,b)) flag=1;
191 tmp.push_back(result);
202 for(
typename polyalp::iterator iterpol=iter->begin();
203 iterpol!=iter->end();iterpol++)
204 if ((itermon->rep)==(iterpol->rep))
209 Coeff=iterpol->GetCoeff();
216 *iter+=result*
mon(Coeff);
217 *iter-=polyalp(
mon((*itermon)*(coeff)(Coeff/itermon->GetCoeff())));
228 template<
typename T,
typename typdump,
typename Base,
typename monomial_server>
232 typedef typename typdump::value_type::pol_t
pol;
233 typedef typename T::value_type polyalp;
234 typedef typename polyalp::monom_t
mon;
237 typename T::iterator iter=Crochet.begin();
244 for(;iter!=Crochet.end();iter++)
246 list<mon> monared,listdiv,listcoc;
248 cout<<
"le pol que je vais reduire"<<endl;
250 int degiter=
Degree(*iter);
251 for(
typename polyalp::iterator iterpol=iter->begin();iterpol!=iter->end();iterpol++)
255 if (!
IsinB2(*iterpol,b,div,coc))
257 monared.push_back(*iterpol);
258 listdiv.push_back(div);
259 listcoc.push_back(coc);
262 cout<<
"mon dans proj "<<*iterpol<<
" b? "<<
IsinB(*iterpol,b)<<endl;
264 typename list<mon>::iterator itermon=monared.begin();
265 typename list<mon>::iterator iterdiv=listdiv.begin();
266 typename list<mon>::iterator itercoc=listcoc.begin();
267 for(;itermon!=monared.end();itermon++,iterdiv++,itercoc++)
271 cout<<
"itermon"<<*itermon<<endl;
272 cout<<
"divisor"<<*iterdiv<<endl;
273 cout<<
"cocient"<<*itercoc<<endl;
275 mon divisor,quotient;
287 tmp.push_back(result);
288 cout<<
"rewrite"<<endl;
290 cout<<
"sortie rewrite"<<endl;
292 cout<<
"result"<<result<<endl;
294 for (;divisor!=
mon(1);)
298 cout<<
"result"<<result<<endl;
301 for (
typename polyalp::iterator iterres=result.begin();
302 iterres!=result.end();iterres++)
306 if (!
IsinB2(*iterres,b,div,coc)){
312 cout<<
"IsinB("<<*iterres<<
") "<<
IsinB(*iterres,b)<<endl;
317 tmp.push_back(result);
324 cout<<
"divisor"<<divisor<<endl;
328 for(
typename polyalp::iterator iterpol=iter->begin();
329 iterpol!=iter->end();iterpol++)
330 if ((itermon->rep)==(iterpol->rep))
335 Coeff=iterpol->GetCoeff();
342 *iter+=result*
mon(Coeff);
343 *iter-=polyalp(
mon((*itermon)*(coeff)(Coeff/itermon->GetCoeff())));
355 #endif //ALREADY_proj3
void int2mon(const int &i, mon &res)
Definition: placemon3.hpp:664
M div(const M &m1, const M &m2)
Definition: Monom.hpp:217
void findcorresppol(const mon &m, const typdump &dump, pol &res)
Definition: corealgo.hpp:2031
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
long flag
Definition: alp_f2c.H:52
int nbvar()
Definition: types.hpp:37
void reinit_multiple()
Definition: placemon3.hpp:85
MSKconetypee MSKrealt MSKint32t MSKint32t j
Definition: mosek.h:2421
MSKint32t k
Definition: mosek.h:2713
C coeff_t
Definition: Monom.hpp:26
void rewrite(typPk &Pk, const typdump &dump, const Base &b, monomial_server &serv)
Definition: proj3sdp.hpp:5
Definition: placemon3.hpp:14
void proj(T &Crochet, const typdump &dump, const Base &b, monomial_server &serv)
Definition: proj3sdp.hpp:109
dynamicexp< X, E >::degree_t Degree(const dynamicexp< X, E > &t)
Definition: dynamicexp.hpp:91
MPoly< R, O > Coeff(const MPoly< R, O > &P, int i)
Definition: MPolyFunction.hpp:66
int IsinB(const mon &m, const Base &b)
Definition: IsinB3.hpp:68
Mon mon
Definition: solver_bb_floating.cpp:136
MSKint32t MSKint32t MSKint32t i
Definition: mosek.h:2278
int Iszero(const Scl< MPQ > &c)
Definition: Iszero.hpp:14
int size
Definition: pol.hpp:10
cont< pol< mon, T > > Crochet(const cont< pol< mon, T > > &P, int k)
Definition: corealgo.hpp:6
void projS(T &Crochet, const typdump &dump, const Base &b, monomial_server &serv)
Definition: proj3sdp.hpp:229
void rewrite2(typPk &Pk, const typdump &dump, const Base &b, monomial_server &serv)
Definition: proj3sdp.hpp:54
#define pol
Definition: pol2ter.hpp:3
T * nf
Definition: pol.hpp:12