10 #if !defined(__CYGWIN__) || defined(STATIC_VERSION)
68 for(
i=0;
i<posMat.size();
i++)
99 for(
int i=0;
i<pv.size();
i++)
116 for(
int i=0;
i<pvs.size();
i++)
165 std::vector<int> inte;
166 for(
i=0;
i<
p.size();
i++)
169 inte.push_back(
p[
i]);
184 bool vEv(std::vector<int> vec1,std::vector<int> vec2)
186 int i,
j, lg1=vec1.size(),lg2=vec2.size();
193 for(
j=0;
j<vec1.size();
j++)
206 bool vsubset(std::vector<int> vec1, std::vector<int> vec2)
209 if(vec1.size()>vec2.size())
211 for(
i=0;
i<vec1.size();
i++)
220 bool vEvl(std::vector<int> vec1, std::vector<int> vec2)
222 if(vec1.size()==0 && vec2.size()==0)
233 bool vInvsl(std::vector<int>
vec, std::vector<std::vector<int> > vecs)
236 for(
i=0;
i<vecs.size();
i++)
251 int vInvs(std::vector<int>
vec, std::vector<std::vector<int> > vecs)
254 for(
i=0;
i<vecs.size();
i++)
267 std::vector<int>
vecUnion(std::vector<int> vec1, std::vector<int> vec2)
269 std::vector<int>
vec=vec1;
271 for(
i=0;
i<vec2.size();
i++)
274 vec.push_back(vec2[
i]);
281 std::vector<int>
vecMinus(std::vector<int> vec1,std::vector<int> vec2)
283 std::vector<int>
vec;
284 for(
int i=0;
i<vec1.size();
i++)
288 vec.push_back(vec1[
i]);
299 std::vector<std::vector<int> >
vsMinusv(std::vector<std::vector<int> > vecs, std::vector<int>
vec)
302 std::vector<std::vector<int> >
rem;
303 for(
i=0;
i<vecs.size();
i++)
307 rem.push_back(vecs[
i]);
314 std::vector<std::vector<int> >
vsUnion(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
317 std::vector<std::vector<int> > vs=vs1;
318 for(
i=0;
i<vs2.size();
i++)
322 vs.push_back(vs2[
i]);
333 std::vector<std::vector<int> >
vsIntersection(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
336 std::vector<std::vector<int> > vs;
337 for(
i=0;
i<vs2.size();
i++)
341 vs.push_back(vs2[
i]);
358 std::vector<int> supset;
359 if(
p==0)
return supset;
378 std::vector<std::vector<int> > vecs;
379 std::vector<int>
vec;
400 std::vector<int> supset;
422 std::vector<std::vector<int> > vecs;
423 std::vector<int>
vec;
438 int n=vbase.size(); poly
p,q=0;
455 ideal
idMake(std::vector<std::vector<int> > vecs)
457 int lv=vecs.size(),
i,
j;
526 std::vector<int> vbase;
543 std::vector<std::vector<int> >
vsMake(ideal
h)
545 std::vector<int>
vec;
546 std::vector<std::vector<int> > vecs;
559 std::vector<std::vector<int> >
vecqring(std::vector<std::vector<int> > vec1, std::vector<std::vector<int> > vec2)
564 std::vector<std::vector<int> > vecs=
vsMake(
h);
587 ideal
idMaken(std::vector<std::vector<int> > vecs)
591 int i,lv=vecs.size();
611 std::vector<std::vector<int> > vecs;
614 bv.push_back(
vec[
i]);
619 for(
i=0;
i<vecs.size();
i++)
621 for(
j=
i+1;
j<vecs.size();
j++)
810 ideal asfmons,sfmons,mons;
943 ideal h1,mons,id_re=
idInit(1,1);
999 id_so=
idadda(id_so, id_re);
1113 std::vector<std::vector<int> > hvs=
supports(
h);
1119 if(
vInvsl(
v,hvs)&&in.size()==0)
1140 bool mabconditionv(std::vector<std::vector<int> > hvs,std::vector<int> pv,std::vector<int> av,std::vector<int> bv)
1142 std::vector<int> uv=
vecUnion(pv,av);
1153 std::vector<std::vector<int> >
Mabv(ideal
h,poly a,poly
b)
1158 for(
int i=0;
i<h2v.size();
i++)
1186 std::vector<int>
eli1(std::vector<int> eq1,std::vector<int> eq2)
1189 std::vector<int> eq;
1231 std::vector<int> yaya;
1243 std::vector<std::vector<int> >
soleli1( std::vector<std::vector<int> > eqs)
1246 std::vector<int> yaya;
1247 std::vector<std::vector<int> > pre=eqs, ppre, re;
1250 re.push_back(eqs[0]);
1251 pre.erase(pre.begin());
1256 for(
i=1;
i<re.size();
i++)
1260 yaya=
eli1(re[
i],yaya);
1268 pre.erase(pre.begin());
1278 std::vector<int>
freevars(
int n, std::vector<int> bset, std::vector<std::vector<int> > gset)
1280 int ql=gset.size(), bl=bset.size(),
i;
1281 std::vector<int>
mvar, fvar;
1284 mvar.push_back(bset[
i]);
1288 mvar.push_back(gset[
i][0]);
1305 std::vector<int> fset=fvars;
1306 for(
i=0;
i<fset.size();
i++)
1310 fset.erase(fset.begin()+
i);
1322 std::vector<std::vector<int> >
vAbsorb( std::vector<int> bset,std::vector<std::vector<int> > gset)
1324 std::vector<int> badset=bset;
1325 int i,
j,
m, bl=bset.size(), gl=gset.size();
1331 if(gset[
j][0]==
m && !
IsinL(gset[
j][1],badset))
1333 badset.push_back(gset[
j][1]);
1334 gset.erase(gset.begin()+
j);
1339 else if(!
IsinL(gset[
j][0],badset) && gset[
j][1]==
m)
1341 badset.push_back(gset[
j][0]);
1342 gset.erase(gset.begin()+
j);
1347 else if(
IsinL(gset[
j][0],badset) &&
IsinL(gset[
j][1],badset))
1349 gset.erase(gset.begin()+
j);
1359 if(badset.size()==0) badset.push_back(0);
1360 gset.push_back(badset);
1374 std::vector<int>
base;
1392 std::vector<int>
vec;
1406 std::vector<int>
vec;
1419 std::vector<int>
ofindbases1(
int num,
int vnum, std::vector<int> bset,std::vector<std::vector<int> > gset)
1421 std::vector<std::vector<int> > goodset;
1423 std::vector<int> zset=
fvarsvalue(vnum, fvars);
1425 oset.push_back(vnum);
1427 oset=goodset[goodset.size()-1];
1428 goodset.erase(goodset.end());
1442 std::vector<std::vector<int> >
ofindbases(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1445 std::vector<std::vector<int> > bases;
1446 std::vector<int> fvars=
freevars(
num, bset, gset), base1;
1447 if (fvars.size()==0)
1450 bases.push_back(base1);
1454 for(
i=0;
i<fvars.size();
i++)
1458 bases.push_back(base1);
1476 std::vector<std::vector<int> >
eli2(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1478 std::vector<int> badset;
1479 std::vector<std::vector<int> > goodset,
solve;
1489 int m=goodset.size();
1490 badset=goodset[
m-1];
1491 goodset.erase(goodset.end());
1524 std::vector<std::vector<int> >
links(poly a, ideal
h)
1527 std::vector<std::vector<int> > lk,X=
supports(
h);
1528 std::vector<int> U,In,av=
support1(a);
1529 for(
i=0;
i<X.size();
i++)
1533 if( In.size()==0 &&
vInvsl(U,X))
1575 std::vector<int> as;
1576 std::vector<std::vector<int> > hvs=
supports(
h);
1642 std::vector<std::vector<int> >
id_subsets(std::vector<std::vector<int> > vecs)
1645 std::vector<std::vector<int> > vvs,
res;
1646 for(
i=0;
i<vecs.size();
i++)
1650 for(
j=0;
j<vvs.size();
j++)
1653 res.push_back(vvs[
j]);
1663 std::vector<int>
vertset(std::vector<std::vector<int> > vecs)
1666 std::vector<int> vert;
1667 std::vector<std::vector<int> > vvs;
1670 for(
j=0;
j<vecs.size();
j++)
1688 std::vector<std::vector<int> > pbv,lk=
links(a,
h),
res;
1689 std::vector<int> vert=
vertset(lk), bv;
1694 for(
i=0;
i<
res.size();
i++)
1697 pbv.push_back(
res[
i]);
1804 ideal h1,mons, id_re=
idInit(1,1);
1825 std::vector<std::vector<int> >
listsinsertlist(std::vector<std::vector<int> > gset,
int a,
int b)
1827 std::vector<int> eq;
1840 std::vector<int> equation;
1841 equation.push_back(
i);
1842 equation.push_back(
j);
1843 equation.push_back(t);
1859 for(
int i=0;
i<3;
i++)
1874 ideal
idMake3(std::vector<std::vector<int> > vecs)
1878 int i,lv=vecs.size();
1902 sprintf (tt[
i],
"t(%d)",
i+1);
1914 std::vector<int>
subspace1(std::vector<std::vector<int> > mv, std::vector<int> bv)
1916 int i,
num=mv.size();
1917 std::vector<int>
base;
1940 std::vector<poly>
pMakei(std::vector<std::vector<int> > mv,std::vector<int> vbase)
1943 std::vector<poly> h1;
1945 for(
int i=0;
i<n;
i++)
1956 std::vector<std::vector<poly> >
idMakei(std::vector<std::vector<int> > mv,std::vector<std::vector<int> > vecs)
1958 int i,lv=vecs.size();
1959 std::vector<std::vector<poly> > re;
1960 std::vector<poly>
h;
2027 std::vector<std::vector<int> > suu;
2038 PrintS(
"No element considered!\n");
2074 bool condition2for2(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> sv, std::vector<int> av, std::vector<int> bv)
2092 bool condition3for2(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> av, std::vector<int> bv)
2094 std::vector<int> v1,v2,v3;
2128 WerrorS(
"presolve.lib are not loaded!");
2138 ideal re=(ideal)L->
m[4].
CopyD();
2152 std::vector<int> fvar;
2174 std::vector<std::vector<int> > vecs;
2175 std::vector<int>
vec;
2186 vecs.push_back(
vec);
2198 std::vector<int>
vec;
2199 std::vector<std::vector<int> > vecs;
2206 std::vector<int> fvar=
numfree(h1);
2247 vecs.push_back(
vec);
2270 std::vector<int>
findalpha(std::vector<std::vector<int> > mv, std::vector<int> bv)
2272 std::vector<int> alset;
2273 for(
int i=0;
i<mv.size();
i++)
2294 int i,
j, t, n=ntvs.size();
2295 std::vector<int> subase;
2302 subase.push_back(1);
2306 subase.push_back(-1);
2310 subase.push_back(0);
2322 std::vector<std::vector<int> >
subspacet(std::vector<std::vector<int> > mv, std::vector<int> bv,std::vector<std::vector<int> > ntvs)
2324 std::vector<int> alset=
findalpha(mv,bv), subase;
2325 std::vector<std::vector<int> > subases;
2326 for(
unsigned i=0;
i<alset.size();
i++)
2329 subases.push_back(subase);
2340 std::vector<std::vector<int> >
mabtv(std::vector<std::vector<int> > hvs, std::vector<std::vector<int> > Mv, std::vector<int> av, std::vector<int> bv)
2342 std::vector<int> v1,var;
2343 std::vector<std::vector<int> > vars;
2344 for(
int i=0;
i<Mv.size();
i++)
2346 for(
int j=
i+1;
j<Mv.size();
j++)
2354 vars.push_back(var);
2368 int t0,t1,t2,
i,
j,t,
m;
2371 std::vector<std::vector<int> > hvs=
supports(
h), mv=
Mabv(
h,a,
b), mts, vecs,vars;
2373 mts=
mabtv(hvs,mv,av,bv);
2374 PrintS(
"The homomorphism should map onto:\n");
2379 vars=
mabtv(hvs,mv,av,bv);
2381 for(t0=0;t0<vars.size();t0++)
2392 vecs.push_back(
vec);
2402 vecs.push_back(
vec);
2405 for(t1=t0+1;t1<vars.size();t1++)
2407 for(t2=t1+1;t2<vars.size();t2++)
2409 if(vars[t0][0]==vars[t1][0]&&vars[t1][1]==vars[t2][1]&&vars[t0][1]==vars[t2][0])
2417 vecs.push_back(
vec);
2429 std::vector<std::vector<int> > re=
getvector(id_re,vn);
2430 PrintS(
"this is the solution for ideal :\n");
2433 std::vector<std::vector<int> > sub=
subspacet(mv, bv,vars);
2434 PrintS(
"this is the solution for subspace:\n");
2438 PrintS(
"This is the solution of coefficients:\n");
2444 PrintS(
"No element considered!");
2480 bool nabconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2499 std::vector<std::vector<int> >
Nabv(std::vector<std::vector<int> > hvs, std::vector<int> av, std::vector<int> bv)
2501 std::vector<std::vector<int> > vecs;
2508 vecs.push_back(hvs[
i]);
2521 static bool nabtconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv)
2523 std::vector<int> v1;
2534 std::vector<std::vector<int> >
nabtv(std::vector<std::vector<int> > hvs, std::vector<std::vector<int> > Nv, std::vector<int> av, std::vector<int> bv)
2536 std::vector<int> v1,var;
2537 std::vector<std::vector<int> > vars;
2538 for(
int i=0;
i<Nv.size();
i++)
2540 for(
int j=
i+1;
j<Nv.size();
j++)
2547 vars.push_back(var);
2565 bool tNab(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<std::vector<int> > bvs)
2567 std::vector<int> sv;
2568 if(bvs.size()<=1)
return false;
2569 for(
int i=0;
i<bvs.size();
i++)
2586 std::vector<int>
tnab(std::vector<std::vector<int> > hvs,std::vector<std::vector<int> > nvs,std::vector<std::vector<int> > bvs)
2588 std::vector<int> pv,
vec;
2589 for(
int j=0;
j<nvs.size();
j++)
2592 if(
tNab(hvs, pv, bvs))
2608 std::vector<int>
phimage(std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2610 std::vector<int> qv=
vecUnion(pv,av);
2619 std::vector<std::vector<int> >
value1(std::vector<std::vector<int> > mvs, std::vector<std::vector<int> > nvs, std::vector<std::vector<int> > vecs,std::vector<int> av, std::vector<int> bv)
2622 std::vector<int> pv,
base;
2623 std::vector<std::vector<int> > bases;
2624 for(
int t=0;t<vecs.size();t++)
2626 for(
int i=0;
i<mvs.size();
i++)
2629 for(
j=0;
j<nvs.size();
j++)
2633 base.push_back(vecs[t][
j]);
2642 if(
base.size()!=mvs.size())
2645 WerrorS(
"Errors in Equations solving (Values Finding)!");
2651 bases.push_back(
base);
2671 int i,
j, a=vecs.size();
2678 int b=vecs[0].size();
2706 std::vector<std::vector<int> > vecs=
supports(ids);
2722 std::vector<std::vector<int> > mv=
Mabv(
h,a,
b);
2738 std::vector<int>
vec,solm;
2739 std::vector<std::vector<int> > solsm;
2743 for(
j=0;
j<
vec.size();
j++)
2746 solm.push_back(
vec[
j]);
2748 solsm.push_back(solm);
2773 tnv=
tnab(hvs,nv,sbv);
2774 for(
i=0;
i<tnv.size();
i++)
2777 bad.push_back(co+1);
2801 std::vector<int> su=
make1(n);
2802 std::vector<std::vector<int> > suu;
2837 std::vector<std::vector<int> >
solve;
2859 Print(
"Finished %d!\n",mm);
2868 bool condition2for2nv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> fv)
2886 std::vector<int>
findalphan(std::vector<std::vector<int> >
N, std::vector<int> tN)
2888 int i;std::vector<int> alset,
vec;
2889 for(
i=0;
i<
N.size();
i++)
2905 std::vector<std::vector<int> >
subspacetn(std::vector<std::vector<int> >
N, std::vector<int> tN, std::vector<std::vector<int> > ntvs)
2909 std::vector<std::vector<int> > subases;
2910 for(
i=0;
i<alset.size();
i++)
2913 subases.push_back(subase);
2926 std::vector<std::vector<int> >
value2(std::vector<std::vector<int> > mvs, std::vector<std::vector<int> > nvs, std::vector<std::vector<int> > mts, std::vector<std::vector<int> > nts, std::vector<std::vector<int> > vecs,std::vector<int> av, std::vector<int> bv)
2929 std::vector<int> pv,qv,
base;
2930 std::vector<std::vector<int> > bases;
2937 for(
int t=0;t<vecs.size();t++)
2939 for(
int i=0;
i<mts.size();
i++)
2949 for(
j=0;
j<nts.size();
j++)
2953 if(
vEvl(pv,nvs[row])&&
vEvl(qv,nvs[col]))
2955 base.push_back(vecs[t][
j]);
break;
2957 else if(
vEvl(pv,nvs[col])&&
vEvl(qv,nvs[row]))
2959 base.push_back(-vecs[t][
j]);
break;
2962 if(
j==nts.size()) {
base.push_back(0);}
2965 if(
base.size()!=mts.size())
2967 WerrorS(
"Errors in Values Finding(value2)!");
2972 bases.push_back(
base);
2983 std::vector<std::vector<int> > hvs=
supports(
h),mv,mts;
2986 mts=
mabtv(hvs,mv,av,bv);
2987 std::vector<std::vector<poly> > pvs=
idMakei(mv,mts);
2989 for(
unsigned i=0;
i<pvs.size();
i++)
3008 std::vector<std::vector<int> > hvs=
supports(
h),nv,mv,mts,sbv,vecs,vars,ntvs,
solve;
3014 tnv=
tnab(hvs,nv,sbv);
3017 mts=
mabtv(hvs,mv,av,bv);
3024 ntvs=
nabtv( hvs, nv, av, bv);
3028 for(
int t0=0;t0<
l;t0++)
3035 vecs.push_back(
vec);
3038 for(
int t1=t0+1;t1<ntvs.size();t1++)
3040 for(
int t2=t1+1;t2<ntvs.size();t2++)
3042 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
3050 vecs.push_back(
vec);
3063 std::vector<std::vector<int> > re=
getvector(id_re,
l);
3067 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
3095 std::vector<int> bv,av;
3096 std::vector<std::vector<int> >
solve;
3108 PrintS(
"This is a set according to current b:\n");
3126 Print(
"There are %d graded pieces in total.\n",
gp);
3135 std::vector<int>
phimagel(std::vector<int> fv, std::vector<int> av, std::vector<int> bv)
3137 std::vector<int> nv;
3147 std::vector<std::vector<int> >
value1l(std::vector<std::vector<int> > mvs, std::vector<std::vector<int> > lks, std::vector<std::vector<int> > vecs,std::vector<int> av, std::vector<int> bv)
3150 std::vector<int> pv;
3151 std::vector<int>
base;
3152 std::vector<std::vector<int> > bases;
3153 for(
int t=0;t<vecs.size();t++)
3155 for(
int i=0;
i<mvs.size();
i++)
3158 for(
j=0;
j<lks.size();
j++)
3162 base.push_back(vecs[t][
j]);
break;
3167 if(
base.size()!=mvs.size())
3169 WerrorS(
"Errors in Values Finding(value1l)!");
3175 bases.push_back(
base);
3188 Print(
"The time of value matching for first order deformation: %.2f sec ;\n", ((
double)
t_value)/CLOCKS_PER_SEC);
3189 Print(
"The total time of fpiece: %.2f sec ;\n", ((
double)
t_total)/CLOCKS_PER_SEC);
3190 Print(
"The time of equations construction for fpiece: %.2f sec ;\n", ((
double)
t_construct)/CLOCKS_PER_SEC);
3191 Print(
"The total time of equations solving for fpiece: %.2f sec ;\n", ((
double)
t_solve)/CLOCKS_PER_SEC);
3192 PrintS(
"__________________________________________________________\n");
3197 std::vector<std::vector<int> >
gpl(ideal
h,poly a,poly
b)
3200 std::vector<std::vector<int> > hvs=
supports(
h),sbv,nv,mv,good,
solve;
3213 tnv=
tnab(hvs,nv,sbv);
3214 for(
i=0;
i<tnv.size();
i++)
3217 bad.push_back(co+1);
3242 std::vector<int> su=
make1(n);
3243 std::vector<std::vector<int> > suu;
3273 nvl=
Nabv(lks,em,bv);
3289 std::vector<std::vector<int> >
value2l(std::vector<std::vector<int> > mvs, std::vector<std::vector<int> > lks, std::vector<std::vector<int> > mts, std::vector<std::vector<int> > lkts, std::vector<std::vector<int> > vecs,std::vector<int> av, std::vector<int> bv)
3291 std::vector<int> pv,qv,
base;
3293 std::vector<std::vector<int> > bases;
3298 for(
int t=0;t<vecs.size();t++)
3300 for(
int i=0;
i<mts.size();
i++)
3310 for(
j=0;
j<lkts.size();
j++)
3314 if(
vEvl(pv,lks[row])&&
vEvl(qv,lks[col]))
3316 base.push_back(vecs[t][
j]);
break;
3318 else if(
vEvl(qv,lks[row])&&
vEvl(pv,lks[col]))
3320 base.push_back(-vecs[t][
j]);
break;
3329 if(
base.size()!=mts.size())
3331 WerrorS(
"Errors in Values Finding!");
3336 bases.push_back(
base);
3343 std::vector<std::vector<int> >
gpl2(ideal
h,poly a,poly
b)
3346 std::vector<std::vector<int> > hvs=
supports(
h),sbv,nv,mv,mts,vecs,vars,ntvs,
solve;
3352 tnv=
tnab(hvs,nv,sbv);
3355 mts=
mabtv(hvs,mv,av,bv);
3358 ntvs=
nabtv( hvs, nv, av, bv);
3362 for(
int t0=0;t0<
l;t0++)
3369 vecs.push_back(
vec);
3372 for(
int t1=t0+1;t1<ntvs.size();t1++)
3374 for(
int t2=t1+1;t2<ntvs.size();t2++)
3376 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
3384 vecs.push_back(
vec);
3394 std::vector<std::vector<int> > re=
getvector(id_re,
l);
3396 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
3421 mts=
mabtv(hvs,mv,av,bv);
3425 nvl=
Nabv(lks,em,bv);
3427 ntsl=
nabtv(lks,nvl,em,bv);
3431 if(
solve.size() > 0)
3482 std::vector<int> pv;
3497 std::vector<std::vector<int> >
triface(poly
p,
int vert)
3500 std::vector<std::vector<int> > fvs0, fvs;
3501 vec.push_back(vert);
3505 for(
unsigned i=0;
i<fvs0.size();
i++)
3508 vec.push_back(vert);
3519 std::vector<std::vector<int> > vecs=
supports(
h),vs,vs0;
3563 for(
unsigned i=0;
i<fv1.size();
i++)
3566 ev.push_back(fv1[
i]);
3591 std::vector<std::vector<int> >
tetraface(poly
p, poly q,
int vert)
3594 std::vector<std::vector<int> > fvs1, fvs2, fvs;
3595 vec.push_back(vert);
3603 for(
unsigned i=0;
i<fvs2.size();
i++)
3606 vec.push_back(vert);
3617 std::vector<std::vector<int> > vecs=
supports(
h), vs1;
3632 std::vector<std::vector<int> >
penface(poly
p, poly q, poly
g,
int vert)
3635 std::vector<int> ev1=
commonedge(
p, q), ev2=
commonedge(
p,
g), ev3=
commonedge(q,
g), ind,
vec, fv1=
support1(
p), fv2=
support1(q), fv3=
support1(
g);
3636 std::vector<std::vector<int> > fvs1, fvs2, fvs3, fvs, evec;
3637 evec.push_back(ev1);
3638 evec.push_back(ev2);
3639 evec.push_back(ev3);
3640 for(
unsigned i=0;
i<evec.size();
i++)
3642 if(evec[
i].
size()==2)
3649 vec.push_back(vert);
3659 for(
unsigned i=0;
i<evec.size();
i++)
3661 if(evec[
i].
size()==2)
3666 for(
unsigned i=0;
i<fvs3.size();
i++)
3669 vec.push_back(vert);
3681 std::vector<std::vector<int> > vecs=
supports(
h), vs1, evec;
3682 evec.push_back(ev1);
3683 evec.push_back(ev2);
3684 evec.push_back(ev3);
3685 for(
unsigned i=0;
i<evec.size();
i++)
3687 if(evec[
i].
size()==2)
3711 for(
unsigned i=0;
i<vecs.size();
i++)
3754 std::vector<std::vector<int> >
vsMinusvs(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
3756 std::vector<std::vector<int> > vs=vs1;
3757 for(
unsigned i=0;
i<vs2.size();
i++)
3765 std::vector<std::vector<int> >
vs_subsets(std::vector<std::vector<int> > vs)
3767 std::vector<std::vector<int> > sset, bv;
3768 for(
unsigned i=0;
i<vs.size();
i++)
3796 std::vector<std::vector<int> >
p_new(ideal Xo, ideal Sigma)
3814 fvs=
triface(Sigma->m[0], vert);
3818 fvs=
tetraface(Sigma->m[0], Sigma->m[1], vert);
3822 fvs=
penface(Sigma->m[0], Sigma->m[1], Sigma->m[2], vert);
3833 std::vector<int> ev;
3834 int ednum=vsig.size();
3837 vsig.push_back(
commonedge(sig->m[0], sig->m[1]));
3868 std::vector<std::vector<int> >
phi1(poly a, ideal Sigma)
3872 for(
unsigned i=0;
i<ss.size();
i++)
3875 if(
intvec.size()==av.size())
3886 static std::vector<std::vector<int> >
phi2(poly a, ideal Xo, ideal Sigma)
3889 std::vector<std::vector<int> > ss=
p_new(Sigma, Xo), fvs;
3891 for(
int i=0;
i<ss.size();
i++)
3894 if(
intvec.size()==av.size())
3904 std::vector<std::vector<int> >
links_new(poly a, ideal Xo, ideal Sigma,
int vert,
int ord)
3907 std::vector<std::vector<int> > lko, lkn, lk1, lk2;
3914 lk2=
phi2(a, Xo, Sigma);
3921 lkn=
phi2(a, Xo, Sigma);
3924 WerrorS(
"Cannot find the links smartly!");
3937 for(
unsigned i=0;
i<bs.size();
i++)
3953 std::vector<int> vp, iv=
phimagel(
v, v1, v2);
3971 std::vector<int> v1=
phimagel(vp, va, vb), v2=
phimagel(vq, va, vb), v3=
phimagel(vf, va, vb), v4=
phimagel(vg, va, vb);
4002 std::vector<std::vector<int> > mv=
Mabv(
h,a,
b);
4008 std::vector<int>
v_minus(std::vector<int> v1, std::vector<int> v2)
4010 std::vector<int>
vec;
4011 for(
unsigned i=0;
i<v1.size();
i++)
4013 vec.push_back(v1[
i]-v2[
i]);
4022 std::vector<int> av,bv;
4042 std::vector<std::vector<int> >
star(poly a, ideal
h)
4045 std::vector<std::vector<int> > st,X=
supports(
h);
4047 for(
i=0;
i<X.size();
i++)
4062 std::vector<std::vector<int> > vecs;
4064 vecs.push_back(
vec);
4090 vec_n.push_back(vert);
4091 for(
i=0;
i<lk.size();
i++)
4094 vecs_minus.push_back(
vec);
4095 for(
j=0;
j<bys.size();
j++)
4099 vecs_plus.push_back(
vec);
4111 std::vector<std::vector<int> > bset;
4112 for(
int i=0;
i<bvs.size();
i++)
4114 for(
int j=0;
j!=
i;
j++)
4116 vs.push_back(bvs[
j]);
4131 ideal ai=
p_a(
h), bi;
4187 ideal hh=(ideal)
h->Data();
4204 ideal hh=(ideal)
h->Data();
4221 ideal hh=(ideal)
h->Data();
4234 ideal h1= (ideal)
h->Data();
4238 poly
p= (poly)
h->Data();
4242 poly q= (poly)
h->Data();
4276 poly
p= (poly)
h->Data();
4280 poly q= (poly)
h->Data();
4295 poly
p= (poly)
h->Data();
4299 poly q= (poly)
h->Data();
4315 ideal h1= (ideal)
h->Data();
4328 ideal h1= (ideal)
h->Data();
4342 ideal h1= (ideal)
h->Data();
4355 ideal h1= (ideal)
h->Data();
4359 poly
p= (poly)
h->Data();
4374 ideal h1= (ideal)
h->Data();
4378 poly q= (poly)
h->Data();
4382 int d= (int)(
long)
h->Data();
4397 ideal h1= (ideal)
h->Data();
4401 poly
p= (poly)
h->Data();
4405 poly q= (poly)
h->Data();
4420 ideal h1= (ideal)
h->Data();
4424 poly
p= (poly)
h->Data();
4428 poly q= (poly)
h->Data();
4432 int d= (int)(
long)
h->Data();
4449 ideal h1= (ideal)
h->Data();
4453 poly
p= (poly)
h->Data();
4457 poly q= (poly)
h->Data();
4472 ideal h1= (ideal)
h->Data();
4476 poly
p= (poly)
h->Data();
4480 poly q= (poly)
h->Data();
4495 ideal h1= (ideal)
h->Data();
4499 poly
p= (poly)
h->Data();
4503 poly q= (poly)
h->Data();
4518 poly
p= (poly)
h->Data();
4522 ideal h1= (ideal)
h->Data();
4524 std::vector<std::vector<int> > vecs=
links(
p,h1);
4536 ideal h1= (ideal)
h->Data();
4549 ideal h1= (ideal)
h->Data();
4553 poly
p= (poly)
h->Data();
4557 int d= (int)(
long)
h->Data();
4572 ideal h1= (ideal)
h->Data();
4576 poly
p= (poly)
h->Data();
4580 poly q= (poly)
h->Data();
4584 int d= (int)(
long)
h->Data();
4600 ideal h1= (ideal)
h->Data();
4604 poly
p= (poly)
h->Data();
4608 poly q= (poly)
h->Data();
4612 poly
g= (poly)
h->Data();
4616 int d= (int)(
long)
h->Data();
4634 std::vector<int> bset,bs;
4635 std::vector<std::vector<int> > gset;
4638 int n= (int)(
long)
h->Data();
4642 ideal bi= (ideal)
h->Data();
4646 ideal gi= (ideal)
h->Data();
4651 bset.push_back(bs[0]);
4652 else if(bs.size()==0)
4656 WerrorS(
"Errors in T^1 Equations Solving!");
4664 std::vector<std::vector<int> > vecs=
eli2(n,bset,gset);
4678 ideal h1= (ideal)
h->Data();
4694 ideal h1= (ideal)
h->Data();
4698 poly
p= (poly)
h->Data();
4714 ideal h1= (ideal)
h->Data();
4718 poly
p= (poly)
h->Data();
4722 poly q= (poly)
h->Data();
4724 std::vector<std::vector<int> > vecs=
supports(h1);
4740 ideal h1= (ideal)
h->Data();
4744 poly
p= (poly)
h->Data();
4748 poly q= (poly)
h->Data();
4750 std::vector<std::vector<int> > vecs=
supports(h1), sbv,tnbr;
4752 std::vector<std::vector<int> > nvs=
Nabv(vecs, pv, qv);
4755 std::vector<int> tnv =
tnab(vecs,nvs,sbv);
4756 for(
int i=0;
i<tnv.size();
i++)
4758 tnbr.push_back(nvs[tnv[
i]]);
4773 ideal h1= (ideal)
h->Data();
4777 ideal h2= (ideal)
h->Data();
4792 ideal h1= (ideal)
h->Data();
4796 poly
p= (poly)
h->Data();
4800 poly q= (poly)
h->Data();
4816 ideal h1= (ideal)
h->Data();
4820 poly
p= (poly)
h->Data();
4824 poly q= (poly)
h->Data();
4825 std::vector<std::vector<int> > hvs=
supports(h1), nv, ntvs;
4828 ntvs=
nabtv( hvs, nv, av, bv);
4829 std::vector<std::vector<poly> > pvs=
idMakei(nv,ntvs);
4831 for(
int i=0;
i<pvs.size();
i++)
4851 poly a= (poly)
h->Data();
4855 ideal Xo= (ideal)
h->Data();
4859 ideal Sigma= (ideal)
h->Data();
4863 int vert= (int)(
long)
h->Data();
4867 int ord= (int)(
long)
h->Data();
4885 poly
p= (poly)
h->Data();
4889 ideal h1= (ideal)
h->Data();
4903 ideal h1= (ideal)
h->Data();
4907 ideal h2= (ideal)
h->Data();
4920 ideal h1= (ideal)
h->Data();
4934 ideal h1= (ideal)
h->Data();
4938 ideal h2= (ideal)
h->Data();
4954 poly
p= (poly)
h->Data();
4971 poly
p= (poly)
h->Data();
4985 ideal h1= (ideal)
h->Data();
4989 poly
p= (poly)
h->Data();
5004 ideal h1= (ideal)
h->Data();
5008 poly
p= (poly)
h->Data();
5009 std::vector<std::vector<int> > st=
star(
p, h1);
5010 std::vector<std::vector<int> > hvs=
supports(h1);
5011 std::vector<std::vector<int> > re=
vsMinusvs(hvs, st);
5025 ideal h1= (ideal)
h->Data();
5029 ideal h2= (ideal)
h->Data();
5045 poly
p= (poly)
h->Data();
5049 ideal h1= (ideal)
h->Data();
5065 ideal h2= (ideal)
h->Data();
5069 poly
p= (poly)
h->Data();
5084 ideal h1= (ideal)
h->Data();
5088 ideal h2= (ideal)
h->Data();
5102 ideal h1= (ideal)
h->Data();
5106 ideal h2= (ideal)
h->Data();
5121 poly
p= (poly)
h->Data();
5125 ideal h1= (ideal)
h->Data();
5129 poly a= (poly)
h->Data();
5133 poly
b= (poly)
h->Data();
5150 poly
p= (poly)
h->Data();
5154 poly q= (poly)
h->Data();
5158 poly
f= (poly)
h->Data();
5162 poly
g= (poly)
h->Data();
5166 poly a= (poly)
h->Data();
5170 poly
b= (poly)
h->Data();
5188 poly
p= (poly)
h->Data();
5192 int num= (int)(
long)
h->Data();
5207 ideal h1= (ideal)
h->Data();
5221 ideal h1= (ideal)
h->Data();
5235 ideal h1= (ideal)
h->Data();
5239 int num= (int)(
long)
h->Data();
5255 p->iiAddCproc(
"",
"findbset",
FALSE,
fb);
5256 p->iiAddCproc(
"",
"findaset",
FALSE,
fa);
const CanonicalForm CFMap CFMap & N
bool solve(int **extmat, int nrows, int ncols)
Class used for (list of) interpreter objects.
Coefficient rings, fields and other domains suitable for Singular polynomials.
static FORCE_INLINE long n_Int(number &n, const coeffs r)
conversion of n to an int; 0 if not possible in Z/pZ: the representing int lying in (-p/2 ....
static FORCE_INLINE coeffs nCopyCoeff(const coeffs r)
"copy" coeffs, i.e. increment ref
std::vector< std::vector< int > > supports2(ideal h)
void lpprint(std::vector< poly > pv)
intvec * gradedpiece1nl(ideal h, poly a, poly b, int set)
BOOLEAN idModulo(leftv res, leftv args)
BOOLEAN pa(leftv res, leftv args)
std::vector< std::vector< int > > value1(std::vector< std::vector< int > > mvs, std::vector< std::vector< int > > nvs, std::vector< std::vector< int > > vecs, std::vector< int > av, std::vector< int > bv)
bool condition3for2(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< int > > gpl2(ideal h, poly a, poly b)
BOOLEAN sgpl(leftv res, leftv args)
std::vector< std::vector< int > > boundary(poly a)
std::vector< std::vector< int > > phi1(poly a, ideal Sigma)
BOOLEAN nfaces1(leftv res, leftv args)
std::vector< std::vector< int > > vsUnion(std::vector< std::vector< int > > vs1, std::vector< std::vector< int > > vs2)
std::vector< int > findalphan(std::vector< std::vector< int > > N, std::vector< int > tN)
BOOLEAN psMinusp(leftv res, leftv args)
std::vector< int > vertset(std::vector< std::vector< int > > vecs)
ideal mingens(ideal h, poly a, poly b)
intvec * gradedpiece2nl(ideal h, poly a, poly b)
std::vector< std::vector< int > > eli2(int num, std::vector< int > bset, std::vector< std::vector< int > > gset)
BOOLEAN nfaces3(leftv res, leftv args)
ideal triangulations2(ideal h, poly p, poly q, int vert)
std::vector< std::vector< int > > Mabv(ideal h, poly a, poly b)
BOOLEAN cNew(leftv res, leftv args)
std::vector< std::vector< int > > soleli1(std::vector< std::vector< int > > eqs)
std::vector< std::vector< int > > vs_subsets(std::vector< std::vector< int > > vs)
std::vector< std::vector< int > > canonicalbase(int n)
BOOLEAN isoNumber(leftv res, leftv args)
std::vector< std::vector< int > > vecqring(std::vector< std::vector< int > > vec1, std::vector< std::vector< int > > vec2)
bool condition1for2(std::vector< int > pv, std::vector< int > qv, std::vector< int > bv)
ideal idMake3(std::vector< std::vector< int > > vecs)
poly pMake(std::vector< int > vbase)
BOOLEAN pb(leftv res, leftv args)
BOOLEAN fgp(leftv res, leftv args)
std::vector< std::vector< int > > tetraface(poly p, poly q, int vert)
bool condition2for2(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > sv, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< int > > mabtv(std::vector< std::vector< int > > hvs, std::vector< std::vector< int > > Mv, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< int > > nabtv(std::vector< std::vector< int > > hvs, std::vector< std::vector< int > > Nv, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< int > > listsinsertlist(std::vector< std::vector< int > > gset, int a, int b)
std::vector< std::vector< int > > vsMinusvs(std::vector< std::vector< int > > vs1, std::vector< std::vector< int > > vs2)
bool vEvl(std::vector< int > vec1, std::vector< int > vec2)
bool IsInX(poly p, ideal X)
BOOLEAN fa(leftv res, leftv args)
BOOLEAN ifIsomorphism(leftv res, leftv args)
bool mabconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
std::vector< int > make0(int n)
int existIn(poly b, ideal Xs)
intvec * edgemat(poly p, poly q)
std::vector< int > vecbase1(int num, std::vector< int > oset)
BOOLEAN tnabvl(leftv res, leftv args)
ideal qringadd(ideal h1, ideal h2, int deg)
std::vector< std::vector< int > > vsIntersection(std::vector< std::vector< int > > vs1, std::vector< std::vector< int > > vs2)
std::vector< int > freevars(int n, std::vector< int > bset, std::vector< std::vector< int > > gset)
bool vInvsl(std::vector< int > vec, std::vector< std::vector< int > > vecs)
std::vector< std::vector< int > > penface(poly p, poly q, poly g, int vert)
BOOLEAN genstt(leftv res, leftv args)
std::vector< std::vector< int > > links_new(poly a, ideal Xo, ideal Sigma, int vert, int ord)
BOOLEAN Links(leftv res, leftv args)
std::vector< int > commonedge(poly p, poly q)
ideal genst(ideal h, poly a, poly b)
int num4dim(ideal h, int n)
intvec * dmat(poly a, poly b)
BOOLEAN idcomplement(leftv res, leftv args)
std::vector< std::vector< int > > vAbsorb(std::vector< int > bset, std::vector< std::vector< int > > gset)
std::vector< int > numfree(ideal h)
BOOLEAN p_New(leftv res, leftv args)
ideal triangulations1(ideal h, poly p, int vert)
std::vector< int > vecIntersection(std::vector< int > p, std::vector< int > q)
std::vector< std::vector< int > > gpl(ideal h, poly a, poly b)
BOOLEAN fgpl(leftv res, leftv args)
ideal idmodulo(ideal h1, ideal h2)
BOOLEAN SRideal(leftv res, leftv args)
std::vector< std::vector< int > > Nabv(std::vector< std::vector< int > > hvs, std::vector< int > av, std::vector< int > bv)
ideal idMinusp(ideal I, poly p)
static bool nabtconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv)
std::vector< std::vector< int > > triface(poly p, int vert)
BOOLEAN linkn(leftv res, leftv args)
int isoNum(poly p, ideal I, poly a, poly b)
ideal c_New(ideal Io, ideal sig)
std::vector< std::vector< int > > stellarsub(poly a, ideal h)
BOOLEAN newDegree(leftv res, leftv args)
BOOLEAN idsr(leftv res, leftv args)
BOOLEAN isSim(leftv res, leftv args)
std::vector< int > support1(poly p)
ideal sfreemon(ideal h, int deg)
std::vector< std::vector< int > > p_change(ideal Sigma)
poly pMake3(std::vector< int > vbase)
BOOLEAN Valency(leftv res, leftv args)
std::vector< int > vecMinus(std::vector< int > vec1, std::vector< int > vec2)
BOOLEAN sgp(leftv res, leftv args)
std::vector< int > gdegree(poly a, poly b)
bool vEv(std::vector< int > vec1, std::vector< int > vec2)
std::vector< int > subspacet1(int num, std::vector< std::vector< int > > ntvs)
BOOLEAN pChange(leftv res, leftv args)
void lpsprint(std::vector< std::vector< poly > > pvs)
void firstorderdef_setup(SModulFunctions *p)
BOOLEAN gd(leftv res, leftv args)
std::vector< int > tnab(std::vector< std::vector< int > > hvs, std::vector< std::vector< int > > nvs, std::vector< std::vector< int > > bvs)
BOOLEAN makeSimplex(leftv res, leftv args)
BOOLEAN stellarremain(leftv res, leftv args)
std::vector< std::vector< int > > vsMinusv(std::vector< std::vector< int > > vecs, std::vector< int > vec)
std::vector< int > phimagel(std::vector< int > fv, std::vector< int > av, std::vector< int > bv)
std::vector< int > findalpha(std::vector< std::vector< int > > mv, std::vector< int > bv)
BOOLEAN bprime(leftv res, leftv args)
ideal p_b(ideal h, poly a)
std::vector< poly > pMakei(std::vector< std::vector< int > > mv, std::vector< int > vbase)
std::vector< int > vMake(poly p)
std::vector< int > ofindbases1(int num, int vnum, std::vector< int > bset, std::vector< std::vector< int > > gset)
ideal getpresolve(ideal h)
ideal finda(ideal h, poly S, int ddeg)
std::vector< std::vector< int > > star(poly a, ideal h)
ideal id_complement(ideal h)
BOOLEAN vsIntersec(leftv res, leftv args)
std::vector< std::vector< int > > links(poly a, ideal h)
BOOLEAN tsets(leftv res, leftv args)
int ifIso(poly p, poly q, poly f, poly g, poly a, poly b)
static void TimeShow(clock_t t_construct, clock_t t_solve, clock_t t_value, clock_t t_total)
intvec * Tmat(std::vector< std::vector< int > > vecs)
BOOLEAN numdim(leftv res, leftv args)
BOOLEAN pConstant(leftv res, leftv args)
bool IsinL(int a, std::vector< int > vec)
bool condition2for2nv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > fv)
BOOLEAN nabvl(leftv res, leftv args)
BOOLEAN support(leftv res, leftv args)
void listprint(std::vector< int > vec)
int valency(ideal h, poly p)
std::vector< std::vector< int > > value1l(std::vector< std::vector< int > > mvs, std::vector< std::vector< int > > lks, std::vector< std::vector< int > > vecs, std::vector< int > av, std::vector< int > bv)
BOOLEAN existsub(leftv res, leftv args)
std::vector< int > phimage(std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< poly > > idMakei(std::vector< std::vector< int > > mv, std::vector< std::vector< int > > vecs)
BOOLEAN stellarsubdivision(leftv res, leftv args)
bool tNab(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< std::vector< int > > bvs)
std::vector< std::vector< int > > minisolve(std::vector< std::vector< int > > solve, std::vector< int > index)
poly pMaken(std::vector< int > vbase)
std::vector< int > v_minus(std::vector< int > v1, std::vector< int > v2)
BOOLEAN dimsim(leftv res, leftv args)
std::vector< int > vecUnion(std::vector< int > vec1, std::vector< int > vec2)
ideal idMinus(ideal h1, ideal h2)
std::vector< int > makeequation(int i, int j, int t)
std::vector< std::vector< int > > bsubsets_1(poly b)
std::vector< int > eli1(std::vector< int > eq1, std::vector< int > eq2)
static std::vector< std::vector< int > > phi2(poly a, ideal Xo, ideal Sigma)
BOOLEAN comedg(leftv res, leftv args)
std::vector< std::vector< int > > supports(ideal h)
int SI_MOD_INIT() cohomo(SModulFunctions *p)
std::vector< std::vector< int > > vsMake(ideal h)
std::vector< std::vector< int > > getvector(ideal h, int n)
ideal triangulations3(ideal h, poly p, poly q, poly g, int vert)
std::vector< std::vector< int > > value2l(std::vector< std::vector< int > > mvs, std::vector< std::vector< int > > lks, std::vector< std::vector< int > > mts, std::vector< std::vector< int > > lkts, std::vector< std::vector< int > > vecs, std::vector< int > av, std::vector< int > bv)
int vInvs(std::vector< int > vec, std::vector< std::vector< int > > vecs)
bool nabconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< int > > value2(std::vector< std::vector< int > > mvs, std::vector< std::vector< int > > nvs, std::vector< std::vector< int > > mts, std::vector< std::vector< int > > nts, std::vector< std::vector< int > > vecs, std::vector< int > av, std::vector< int > bv)
BOOLEAN nfaces2(leftv res, leftv args)
std::vector< std::vector< int > > subspacet(std::vector< std::vector< int > > mv, std::vector< int > bv, std::vector< std::vector< int > > ntvs)
intvec * gradedpiece1n(ideal h, poly a, poly b)
BOOLEAN stars(leftv res, leftv args)
BOOLEAN fb(leftv res, leftv args)
std::vector< int > keeporder(std::vector< int > vec)
BOOLEAN idminus(leftv res, leftv args)
std::vector< std::vector< int > > p_new(ideal Xo, ideal Sigma)
std::vector< std::vector< int > > subspacetn(std::vector< std::vector< int > > N, std::vector< int > tN, std::vector< std::vector< int > > ntvs)
bool vsubset(std::vector< int > vec1, std::vector< int > vec2)
ideal idadda(ideal h1, ideal h2)
ideal complementsimplex(ideal h)
ideal idMake(std::vector< std::vector< int > > vecs)
std::vector< std::vector< int > > id_subsets(std::vector< std::vector< int > > vecs)
int redefinedeg(poly p, int num)
BOOLEAN nonf2f(leftv res, leftv args)
std::vector< std::vector< int > > p_constant(ideal Xo, ideal Sigma)
ideal idMaken(std::vector< std::vector< int > > vecs)
void gradedpiece1(ideal h, poly a, poly b)
ideal makemab(ideal h, poly a, poly b)
BOOLEAN mabvl(leftv res, leftv args)
std::vector< int > subspace1(std::vector< std::vector< int > > mv, std::vector< int > bv)
std::vector< std::vector< int > > ofindbases(int num, std::vector< int > bset, std::vector< std::vector< int > > gset)
BOOLEAN nabtvl(leftv res, leftv args)
std::vector< int > fvarsvalue(int vnum, std::vector< int > fvars)
std::vector< int > support2(poly p)
BOOLEAN t1h(leftv res, leftv args)
std::vector< int > gensindex(ideal M, ideal ids)
void listsprint(std::vector< std::vector< int > > posMat)
intvec * gradedpiece2n(ideal h, poly a, poly b)
std::vector< std::vector< int > > b_subsets(std::vector< int > vec)
BOOLEAN eqsolve1(leftv res, leftv args)
void gradedpiece2(ideal h, poly a, poly b)
std::vector< int > make1(int n)
const CanonicalForm int s
const Variable & v
< [in] a sqrfree bivariate poly
static int max(int a, int b)
void WerrorS(const char *s)
ideal scKBase(int deg, ideal s, ideal Q, intvec *mv)
BOOLEAN idInsertPoly(ideal h1, poly h2)
insert h2 into h1 (if h2 is not the zero polynomial) return TRUE iff h2 was indeed inserted
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
ideal idAdd(ideal h1, ideal h2)
h1 + h2
#define IMATELEM(M, I, J)
idhdl ggetid(const char *n)
idhdl enterid(const char *s, int lev, int t, idhdl *root, BOOLEAN init, BOOLEAN search)
BOOLEAN iiMake_proc(idhdl pn, package pack, leftv args)
INST_VAR sleftv iiRETURNEXPR
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
void rem(unsigned long *a, unsigned long *q, unsigned long p, int °a, int degq)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
The main handler for Singular numbers which are suitable for Singular polynomials.
static int index(p_Length length, p_Ord ord)
poly p_Subst(poly p, int n, poly e, const ring r)
BOOLEAN p_EqualPolys(poly p1, poly p2, const ring r)
static poly pp_Mult_mm(poly p, poly m, const ring r)
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
static BOOLEAN p_DivisibleBy(poly a, poly b, const ring r)
void rChangeCurrRing(ring r)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
static long pTotaldegree(poly p)
#define pSetCoeff(p, n)
deletes old coeff before setting the new one
#define pGetExp(p, i)
Exponent.
#define pEqualPolys(p1, p2)
#define pCopy(p)
return a copy of the poly
void PrintS(const char *s)
ring rDefault(const coeffs cf, int N, char **n, int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl, unsigned long bitmask)
static short rVar(const ring r)
#define rVar(r) (r->N)
ideal id_Add(ideal h1, ideal h2, const ring r)
h1 + h2
ideal idInit(int idsize, int rank)
initialise an ideal / module
ideal id_MaxIdeal(const ring r)
initialise the maximal ideal (at 0)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size