20 #include <gfanlib/gfanlib.h> 21 #include <gfanlib/gfanlib_q.h> 31 s<<
"AMBIENT_DIM"<<std::endl;
32 s<<c->ambientDimension()<<std::endl;
34 gfan::ZMatrix
i=c->getInequalities();
36 if (c->areFacetsKnown())
37 s<<
"FACETS"<<std::endl;
39 s<<
"INEQUALITIES"<<std::endl;
46 gfan::ZMatrix e=c->getEquations();
48 if (c->areImpliedEquationsKnown())
49 s<<
"LINEAR_SPAN"<<std::endl;
51 s<<
"EQUATIONS"<<std::endl;
58 if (c->areExtremeRaysKnown())
60 gfan::ZMatrix
r=c->extremeRays();
68 gfan::ZMatrix
l=c->generatorsOfLinealitySpace();
70 s<<
"LINEALITY_SPACE"<<std::endl;
83 return (
void*)(
new gfan::ZCone());
93 gfan::ZCone* zd = (gfan::ZCone*)l->
Data();
96 newZc =
new gfan::ZCone();
98 else if (r->
Typ()==l->
Typ())
102 gfan::ZCone* zd = (gfan::ZCone*)l->
Data();
105 newZc = (gfan::ZCone*)r->
CopyD();
109 int ambientDim = (int)(
long)r->
Data();
112 Werror(
"expected an int >= 0, but got %d", ambientDim);
117 gfan::ZCone* zd = (gfan::ZCone*)l->
Data();
120 newZc =
new gfan::ZCone(ambientDim);
124 Werror(
"assign Type(%d) = Type(%d) not implemented",l->
Typ(),r->
Typ());
134 l->
data=(
void *)newZc;
153 gfan::ZCone* zc = (gfan::ZCone*) d;
160 gfan::ZCone* zc = (gfan::ZCone*)d;
161 gfan::ZCone* newZc =
new gfan::ZCone(*zc);
167 gfan::ZCone* zp = (gfan::ZCone*) i1->
Data();
174 gfan::ZCone* zq = (gfan::ZCone*) i2->
Data();
175 int d1 = zp->ambientDimension();
176 int d2 = zq->ambientDimension();
179 WerrorS(
"mismatching ambient dimensions");
182 gfan::ZCone* zs =
new gfan::ZCone();
183 *zs = gfan::intersection(*zp, *zq);
186 res->
data = (
void*) zs;
195 gfan::ZCone* zq = (gfan::ZCone*) i2->
Data();
196 int d1 = zp->ambientDimension();
197 int d2 = zq->ambientDimension();
200 WerrorS(
"mismatching ambient dimensions");
203 gfan::ZMatrix
rays = zp->extremeRays();
204 rays.append(zq->extremeRays());
205 gfan::ZMatrix lineality = zp->generatorsOfLinealitySpace();
206 lineality.append(zq->generatorsOfLinealitySpace());
207 gfan::ZCone* zs =
new gfan::ZCone();
208 *zs = gfan::ZCone::givenByRays(rays,lineality);
211 res->
data = (
void*) zs;
220 gfan::ZCone* zq = (gfan::ZCone*) i2->
Data();
223 bool b = !((*zp)!=(*zq));
225 res->
data = (
void*) b;
251 gfan::ZCone* zc =
new gfan::ZCone(*zm, gfan::ZMatrix(0, zm->getWidth()));
256 res->
data = (
void*) zc;
285 Werror(
"expected same number of columns but got %d vs. %d",
291 gfan::ZCone* zc =
new gfan::ZCone(*zm1, *zm2);
299 res->
data = (
void*) zc;
329 Werror(
"expected same number of columns but got %d vs. %d",
333 int k = (int)(
long)w->
Data();
334 if ((k < 0) || (k > 3))
336 WerrorS(
"expected int argument in [0..3]");
341 gfan::ZCone* zc =
new gfan::ZCone(*zm1, *zm2, k);
349 res->
data = (
void*) zc;
370 WerrorS(
"coneViaInequalities: unexpected parameters");
390 gfan::ZCone* zc =
new gfan::ZCone();
391 *zc = gfan::ZCone::givenByRays(*zm, gfan::ZMatrix(0, zm->getWidth()));
393 res->
data = (
void*) zc;
427 if (rays->
cols() != linSpace->
cols())
429 Werror(
"expected same number of columns but got %d vs. %d",
435 gfan::ZCone* zc =
new gfan::ZCone();
436 *zc = gfan::ZCone::givenByRays(*zm1, *zm2);
438 res->
data = (
void*) zc;
479 if (rays->
cols() != linSpace->
cols())
481 Werror(
"expected same number of columns but got %d vs. %d",
485 int k = (int)(
long)w->
Data();
486 if ((k < 0) || (k > 3))
488 WerrorS(
"expected int argument in [0..3]");
493 gfan::ZCone* zc =
new gfan::ZCone();
494 *zc = gfan::ZCone::givenByRays(*zm1, *zm2);
497 res->
data = (
void*) zc;
525 WerrorS(
"coneViaPoints: unexpected parameters");
534 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
536 gfan::ZMatrix zmat = zc->getInequalities();
541 WerrorS(
"inequalities: unexpected parameters");
550 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
551 gfan::ZMatrix zmat = zc->getEquations();
556 WerrorS(
"equations: unexpected parameters");
565 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
566 gfan::ZMatrix zm = zc->getFacets();
571 WerrorS(
"facets: unexpected parameters");
580 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
581 gfan::ZMatrix zmat = zc->getImpliedEquations();
586 WerrorS(
"span: unexpected parameters");
595 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
596 gfan::ZMatrix zmat = zc->generatorsOfSpan();
601 WerrorS(
"generatorsOfSpan: unexpected parameters");
610 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
611 gfan::ZMatrix zmat = zc->generatorsOfLinealitySpace();
616 WerrorS(
"generatorsOfLinealitySpace: unexpected parameters");
625 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
626 gfan::ZMatrix zm = zc->extremeRays();
633 gfan::ZFan* zf = (gfan::ZFan*)u->
Data();
634 gfan::ZMatrix zmat =
rays(zf);
639 WerrorS(
"rays: unexpected parameters");
648 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
649 gfan::ZMatrix zmat = zc->quotientLatticeBasis();
654 WerrorS(
"quotientLatticeBasis: unexpected parameters");
663 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
664 gfan::ZMatrix zmat = zc->getLinearForms();
669 WerrorS(
"getLinearForms: unexpected parameters");
678 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
680 res->
data = (
void*) (
long) zc->ambientDimension();
685 gfan::ZFan* zf = (gfan::ZFan*)u->
Data();
692 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
697 WerrorS(
"ambientDimension: unexpected parameters");
706 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
708 res->
data = (
void*) (
long) zc->dimension();
713 gfan::ZFan* zf = (gfan::ZFan*)u->
Data();
720 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
725 WerrorS(
"dimension: unexpected parameters");
734 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
736 res->
data = (
void*) (
long) zc->codimension();
741 gfan::ZFan* zf = (gfan::ZFan*)u->
Data();
748 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
753 WerrorS(
"getCodimension: unexpected parameters");
762 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
764 res->
data = (
void*) (
long) zc->dimensionOfLinealitySpace();
769 gfan::ZFan* zf = (gfan::ZFan*)u->
Data();
774 WerrorS(
"linealityDimension: unexpected parameters");
783 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
786 res->
data = (
void*) i;
789 WerrorS(
"getMultiplicity: unexpected parameters");
798 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
799 int i = zc->isOrigin();
801 res->
data = (
void*) (
long)
i;
804 WerrorS(
"isOrigin: unexpected parameters");
813 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
814 int i = zc->isFullSpace();
816 res->
data = (
void*) (
long)
i;
819 WerrorS(
"isFullSpace: unexpected parameters");
828 gfan::ZCone* zc = (gfan::ZCone*) u->
Data();
829 int b = zc->isSimplicial();
831 res->
data = (
void*) (
long)
b;
836 gfan::ZFan* zf = (gfan::ZFan*) u->
Data();
839 res->
data = (
void*) (
long)
b;
842 WerrorS(
"isSimplicial: unexpected parameters");
851 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
852 int i = zc->containsPositiveVector();
854 res->
data = (
void*) (
long)
i;
857 WerrorS(
"containsPositiveVector: unexpected parameters");
866 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
867 gfan::ZCone* zd =
new gfan::ZCone(zc->linealitySpace());
869 res->
data = (
void*) zd;
872 WerrorS(
"linealitySpace: unexpected parameters");
881 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
882 gfan::ZCone* zd =
new gfan::ZCone(zc->dualCone());
884 res->
data = (
void*) zd;
887 WerrorS(
"dual: unexpected parameters");
896 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
897 gfan::ZCone* zd =
new gfan::ZCone(zc->negated());
899 res->
data = (
void*) zd;
902 WerrorS(
"negatedCone: unexpected parameters");
911 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
912 int d = zc->dimension();
913 int dLS = zc->dimensionOfLinealitySpace();
916 gfan::ZVector zv = zc->semiGroupGeneratorOfRay();
921 Werror(
"expected dim of cone one larger than dim of lin space\n" 922 "but got dimensions %d and %d", d, dLS);
924 WerrorS(
"semigroupGenerator: unexpected parameters");
933 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
934 gfan::ZVector zv = zc->getRelativeInteriorPoint();
939 WerrorS(
"relativeInteriorPoint: unexpected parameters");
948 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
949 gfan::ZVector zv = zc->getUniquePoint();
954 WerrorS(
"uniquePoint: unexpected parameters");
960 gfan::ZVector rp = gfan::ZVector(zc->ambientDimension());
962 gfan::ZMatrix
rays = zc->extremeRays();
963 for (
int i=0;
i<rays.getHeight();
i++)
966 rp = rp + n * rays[
i];
969 gfan::ZMatrix lins = zc->generatorsOfLinealitySpace();
970 for (
int i=0;
i<lins.getHeight();
i++)
973 rp = rp + n * lins[
i];
984 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
990 WerrorS(
"randomPoint: unexpected parameters");
999 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1003 int val = (int)(
long)v->
Data();
1004 zc->setMultiplicity(gfan::Integer(val));
1010 WerrorS(
"setMultiplicity: unexpected parameters");
1019 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1032 zc->setLinearForms(*zm);
1042 WerrorS(
"setLinearForms: unexpected parameters");
1046 gfan::ZMatrix
liftUp(
const gfan::ZMatrix &zm)
1048 int r=zm.getHeight();
1049 int c=zm.getWidth();
1050 gfan::ZMatrix zn(r+1,c+1);
1052 for (
int i=0;
i<
r;
i++)
1053 for (
int j=0;
j<c;
j++)
1054 zn[
i+1][
j+1]=zm[
i][
j];
1060 gfan::ZMatrix ineq=zc.getInequalities();
1061 gfan::ZMatrix eq=zc.getEquations();
1071 gfan::ZCone* zc = (gfan::ZCone*) u->
Data();
1072 gfan::ZMatrix ineq=zc->getInequalities();
1073 gfan::ZMatrix eq=zc->getEquations();
1074 gfan::ZCone* zd =
new gfan::ZCone(
liftUp(ineq),
liftUp(eq));
1076 res->
data = (
void*) zd;
1079 WerrorS(
"makePolytope: unexpected parameters");
1091 gfan::ZCone* zc1 = (gfan::ZCone*)u->
Data();
1092 gfan::ZCone* zc2 = (gfan::ZCone*)v->
Data();
1093 int d1 = zc1->ambientDimension();
1094 int d2 = zc2->ambientDimension();
1097 Werror(
"expected ambient dims of both cones to coincide\n" 1098 "but got %d and %d", d1, d2);
1101 gfan::ZCone zc3 = gfan::intersection(*zc1, *zc2);
1104 res->
data = (
void *)
new gfan::ZCone(zc3);
1109 gfan::ZCone* zc11 = (gfan::ZCone*)u->
Data();
1110 gfan::ZCone zc1 =
liftUp(*zc11);
1111 gfan::ZCone* zc2 = (gfan::ZCone*)v->
Data();
1112 int d1 = zc1.ambientDimension();
1113 int d2 = zc2->ambientDimension();
1116 Werror(
"expected ambient dims of both cones to coincide\n" 1117 "but got %d and %d", d1, d2);
1120 gfan::ZCone zc3 = gfan::intersection(zc1, *zc2);
1123 res->
data = (
void *)
new gfan::ZCone(zc3);
1132 gfan::ZCone* zc1 = (gfan::ZCone*)u->
Data();
1133 gfan::ZCone* zc22 = (gfan::ZCone*)v->
Data();
1134 gfan::ZCone zc2 =
liftUp(*zc22);
1135 int d1 = zc1->ambientDimension();
1136 int d2 = zc2.ambientDimension();
1139 Werror(
"expected ambient dims of both cones to coincide\n" 1140 "but got %d and %d", d1, d2);
1143 gfan::ZCone zc3 = gfan::intersection(*zc1, zc2);
1146 res->
data = (
void *)
new gfan::ZCone(zc3);
1151 gfan::ZCone* zc1 = (gfan::ZCone*)u->
Data();
1152 gfan::ZCone* zc2 = (gfan::ZCone*)v->
Data();
1153 int d1 = zc1->ambientDimension();
1154 int d2 = zc2->ambientDimension();
1157 Werror(
"expected ambient dims of both cones to coincide\n" 1158 "but got %d and %d", d1, d2);
1161 gfan::ZCone zc3 = gfan::intersection(*zc1, *zc2);
1164 res->
data = (
void *)
new gfan::ZCone(zc3);
1168 WerrorS(
"convexIntersection: unexpected parameters");
1180 gfan::ZCone* zc1 = (gfan::ZCone*)u->
Data();
1181 gfan::ZCone* zc2 = (gfan::ZCone*)v->
Data();
1182 int d1 = zc1->ambientDimension();
1183 int d2 = zc2->ambientDimension();
1186 Werror(
"expected ambient dims of both cones to coincide\n" 1187 "but got %d and %d", d1, d2);
1190 gfan::ZMatrix zm1 = zc1->extremeRays();
1191 gfan::ZMatrix zm2 = zc2->extremeRays();
1192 gfan::ZMatrix zn1 = zc1->generatorsOfLinealitySpace();
1193 gfan::ZMatrix zn2 = zc2->generatorsOfLinealitySpace();
1194 gfan::ZMatrix zm = combineOnTop(zm1,zm2);
1195 gfan::ZMatrix zn = combineOnTop(zn1,zn2);
1196 gfan::ZCone* zc =
new gfan::ZCone();
1197 *zc = gfan::ZCone::givenByRays(zm, zn);
1199 res->
data = (
void*) zc;
1204 gfan::ZCone* zc11 = (gfan::ZCone*)u->
Data();
1205 gfan::ZCone zc1 =
liftUp(*zc11);
1206 gfan::ZCone* zc2 = (gfan::ZCone*)v->
Data();
1207 int d1 = zc1.ambientDimension()-1;
1208 int d2 = zc2->ambientDimension()-1;
1211 Werror(
"expected ambient dims of both cones to coincide\n" 1212 "but got %d and %d", d1, d2);
1215 gfan::ZMatrix zm1 = zc1.extremeRays();
1216 gfan::ZMatrix zm2 = zc2->extremeRays();
1217 gfan::ZMatrix zn = zc1.generatorsOfLinealitySpace();
1218 gfan::ZMatrix zm = combineOnTop(zm1,zm2);
1219 gfan::ZCone* zc =
new gfan::ZCone();
1220 *zc = gfan::ZCone::givenByRays(zm, zn);
1222 res->
data = (
void*) zc;
1231 gfan::ZCone* zc1 = (gfan::ZCone*)u->
Data();
1232 gfan::ZCone* zc22 = (gfan::ZCone*)v->
Data();
1233 gfan::ZCone zc2 =
liftUp(*zc22);
1234 int d1 = zc1->ambientDimension()-1;
1235 int d2 = zc2.ambientDimension()-1;
1238 Werror(
"expected ambient dims of both cones to coincide\n" 1239 "but got %d and %d", d1, d2);
1242 gfan::ZMatrix zm1 = zc1->extremeRays();
1243 gfan::ZMatrix zm2 = zc2.extremeRays();
1244 gfan::ZMatrix zn = zc2.generatorsOfLinealitySpace();
1245 gfan::ZMatrix zm = combineOnTop(zm1,zm2);
1246 gfan::ZCone* zc =
new gfan::ZCone();
1247 *zc = gfan::ZCone::givenByRays(zm,gfan::ZMatrix(0, zm.getWidth()));
1249 res->
data = (
void*) zc;
1254 gfan::ZCone* zc1 = (gfan::ZCone*)u->
Data();
1255 gfan::ZCone* zc2 = (gfan::ZCone*)v->
Data();
1256 int d1 = zc1->ambientDimension()-1;
1257 int d2 = zc2->ambientDimension()-1;
1260 Werror(
"expected ambient dims of both cones to coincide\n" 1261 "but got %d and %d", d1, d2);
1264 gfan::ZMatrix zm1 = zc1->extremeRays();
1265 gfan::ZMatrix zm2 = zc2->extremeRays();
1266 gfan::ZMatrix zm = combineOnTop(zm1,zm2);
1267 gfan::ZCone* zc =
new gfan::ZCone();
1268 *zc = gfan::ZCone::givenByRays(zm,gfan::ZMatrix(0, zm.getWidth()));
1270 res->
data = (
void*) zc;
1274 WerrorS(
"convexHull: unexpected parameters");
1286 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1296 int d1 = zc->ambientDimension();
1297 int d2 = zv->size();
1300 Werror(
"expected ambient dim of cone and size of vector\n" 1301 " to be equal but got %d and %d", d1, d2);
1304 if(!zc->contains(*zv))
1306 WerrorS(
"the provided intvec does not lie in the cone");
1309 gfan::ZCone* zd =
new gfan::ZCone(zc->link(*zv));
1311 res->
data = (
void *) zd;
1319 WerrorS(
"coneLink: unexpected parameters");
1331 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1332 gfan::ZCone* zd = (gfan::ZCone*)v->
Data();
1333 int d1 = zc->ambientDimension();
1334 int d2 = zd->ambientDimension();
1337 Werror(
"expected cones with same ambient dimensions\n but got" 1338 " dimensions %d and %d", d1, d2);
1341 bool b = (zc->contains(*zd) ? 1 : 0);
1343 res->
data = (
void*) (
long)
b;
1348 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1359 int d1 = zc->ambientDimension();
1360 int d2 = zv->size();
1363 Werror(
"expected cones with same ambient dimensions\n but got" 1364 " dimensions %d and %d", d1, d2);
1367 int b = zc->contains(*zv);
1369 res->
data = (
void*) (
long)
b;
1377 WerrorS(
"containsInSupport: unexpected parameters");
1389 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1399 int d1 = zc->ambientDimension();
1400 int d2 = zv->size();
1403 bool b = (zc->containsRelatively(*zv) ? 1 : 0);
1405 res->
data = (
void *) b;
1414 Werror(
"expected ambient dim of cone and size of vector\n" 1415 "to be equal but got %d and %d", d1, d2);
1418 WerrorS(
"containsRelatively: unexpected parameters");
1430 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1431 gfan::ZCone* zd = (gfan::ZCone*)v->
Data();
1432 bool b = zc->hasFace(*zd);
1434 res->
data = (
void*) (
long)
b;
1443 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1444 gfan::ZCone* zd = (gfan::ZCone*)v->
Data();
1445 bool b = zc->hasFace(*zd);
1447 res->
data = (
void*) (
long)
b;
1451 WerrorS(
"containsAsFace: unexpected parameters");
1460 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1461 gfan::ZCone* zd =
new gfan::ZCone(*zc);
1464 res->
data = (
void*) zd;
1467 WerrorS(
"canonicalizeCone: unexpected parameters");
1480 gfan::ZCone* zc = (gfan::ZCone*) v->
Data();
1487 WerrorS(
"containsCone: entries of wrong type in list");
1490 gfan::ZCone* ll = (gfan::ZCone*) l->
m[
i].
Data();
1492 if (!((*ll) != (*zc)))
1499 res->
data = (
char*) (
long)
b;
1503 WerrorS(
"containsCone: unexpected parameters");
1511 gfan::ZMatrix
equations = zc.getImpliedEquations();
1513 int r = inequalities.getHeight();
1514 int c = inequalities.getWidth();
1519 gfan::ZMatrix newInequalities = inequalities.submatrix(1,0,r,c);
1521 newEquations.appendRow(inequalities[0]);
1522 L->
m[0].
rtyp =
coneID; L->
m[0].
data=(
void*)
new gfan::ZCone(newInequalities,newEquations);
1525 for (
int i=1;
i<r-1;
i++)
1527 newInequalities = inequalities.submatrix(0,0,
i-1,c);
1528 newInequalities.append(inequalities.submatrix(
i+1,0,r,c));
1530 newEquations.appendRow(inequalities[
i]);
1531 L->
m[
i].
rtyp =
coneID; L->
m[
i].
data=(
void*)
new gfan::ZCone(newInequalities,newEquations);
1535 newInequalities = inequalities.submatrix(0,0,r-1,c);
1537 newEquations.appendRow(inequalities[r]);
1538 L->
m[r-1].
rtyp =
coneID; L->
m[r-1].
data=(
void*)
new gfan::ZCone(newInequalities,newEquations);
1549 gfan::ZCone* zc = (gfan::ZCone*) u->
Data();
1552 res->
data = (
void*) L;
1555 WerrorS(
"listOfFacets: unexpected parameters");
1571 gfan::ZMatrix
facets = zc->getFacets();
1572 for (
int i=0;
i<facets.getHeight();
i++)
1574 gfan::ZVector
facet = facets[
i];
1575 if (dot(facet,*zv) == (long) 0)
1576 return new gfan::ZVector(facet);
1578 return new gfan::ZVector(zc->ambientDimension());
1590 gfan::ZCone* zc = (gfan::ZCone*) u->
Data();
1614 WerrorS(
"facetContaining: unexpected parameters");
1625 gfan::ZMatrix
equations = zc.getImpliedEquations();
1626 int r = inequalities.getHeight();
1627 int c = inequalities.getWidth();
1630 gfan::ZMatrix relativeInteriorPoints = gfan::ZMatrix(0,c);
1631 if (r==0)
return relativeInteriorPoints;
1636 gfan::ZMatrix newInequalities = inequalities.submatrix(1,0,r,c);
1638 newEquations.appendRow(inequalities[0]);
1639 gfan::ZCone
facet = gfan::ZCone(newInequalities,newEquations);
1640 facet.canonicalize();
1641 gfan::ZVector interiorPoint = facet.getRelativeInteriorPoint();
1642 if (exceptThese.count(interiorPoint)==0)
1643 relativeInteriorPoints.appendRow(interiorPoint);
1646 for (
int i=1;
i<r-1;
i++)
1648 newInequalities = inequalities.submatrix(0,0,
i,c);
1649 newInequalities.append(inequalities.submatrix(
i+1,0,r,c));
1651 newEquations.appendRow(inequalities[
i]);
1652 facet = gfan::ZCone(newInequalities,newEquations);
1653 facet.canonicalize();
1654 interiorPoint = facet.getRelativeInteriorPoint();
1655 if (exceptThese.count(interiorPoint)==0)
1656 relativeInteriorPoints.appendRow(interiorPoint);
1660 newInequalities = inequalities.submatrix(0,0,r-1,c);
1662 newEquations.appendRow(inequalities[r-1]);
1663 facet = gfan::ZCone(newInequalities,newEquations);
1664 facet.canonicalize();
1665 interiorPoint = facet.getRelativeInteriorPoint();
1666 if (exceptThese.count(interiorPoint)==0)
1667 relativeInteriorPoints.appendRow(interiorPoint);
1669 return relativeInteriorPoints;
1679 gfan::ZMatrix
equations = zc.getImpliedEquations();
1680 int r = inequalities.getHeight();
1681 int c = inequalities.getWidth();
1684 gfan::ZMatrix relativeInteriorPoints = gfan::ZMatrix(0,c);
1685 gfan::ZMatrix outerFacetNormals = gfan::ZMatrix(0,c);
1687 return std::make_pair(relativeInteriorPoints,outerFacetNormals);
1692 gfan::ZMatrix newInequalities = inequalities.submatrix(1,0,r,c);
1694 newEquations.appendRow(inequalities[0]);
1695 gfan::ZCone
facet = gfan::ZCone(newInequalities,newEquations);
1696 gfan::ZVector interiorPoint = facet.getRelativeInteriorPoint();
1697 if (onlyLowerHalfSpace==
false || interiorPoint[0].
sign()<0)
1699 if (exceptThesePoints.count(interiorPoint)==0)
1701 relativeInteriorPoints.appendRow(interiorPoint);
1702 outerFacetNormals.appendRow(-inequalities[0]);
1707 for (
int i=1;
i<r-1;
i++)
1709 newInequalities = inequalities.submatrix(0,0,
i,c);
1710 newInequalities.append(inequalities.submatrix(
i+1,0,r,c));
1712 newEquations.appendRow(inequalities[
i]);
1713 facet = gfan::ZCone(newInequalities,newEquations);
1714 interiorPoint = facet.getRelativeInteriorPoint();
1715 if (onlyLowerHalfSpace==
false || interiorPoint[0].
sign()<0)
1717 if (exceptThesePoints.count(interiorPoint)==0)
1719 relativeInteriorPoints.appendRow(interiorPoint);
1720 outerFacetNormals.appendRow(-inequalities[i]);
1726 newInequalities = inequalities.submatrix(0,0,r-1,c);
1728 newEquations.appendRow(inequalities[r-1]);
1729 facet = gfan::ZCone(newInequalities,newEquations);
1730 interiorPoint = facet.getRelativeInteriorPoint();
1731 if (onlyLowerHalfSpace==
false || interiorPoint[0].
sign()<0)
1733 if (exceptThesePoints.count(interiorPoint)==0)
1735 relativeInteriorPoints.appendRow(interiorPoint);
1736 outerFacetNormals.appendRow(-inequalities[r-1]);
1740 return std::make_pair(relativeInteriorPoints,outerFacetNormals);
1756 fprintf(dd->
f_write,
"%d %d ",M.getHeight(),M.getWidth());
1758 for (
int i=0;
i<M.getHeight();
i++)
1760 for (
int j=0;
j<M.getWidth();
j++)
1772 memset(&
l,0,
sizeof(
l));
1774 l.data=(
void*)
"cone";
1777 gfan::ZCone *Z = (gfan::ZCone*) d;
1778 fprintf(dd->
f_write,
"%d ",Z->areImpliedEquationsKnown()+Z->areFacetsKnown()*2);
1780 gfan::ZMatrix
i=Z->getInequalities();
1783 gfan::ZMatrix e=Z->getEquations();
1795 gfan::Integer n(tmp);
1805 gfan::ZMatrix
M(r,c);
1806 for (
int i=0;
i<
r;
i++)
1808 for (
int j=0;
j<c;
j++)
1827 gfan::ZCone* Z =
new gfan::ZCone(i,e,preassumptions);
1835 blackbox *
b=(blackbox*)
omAlloc0(
sizeof(blackbox));
BOOLEAN isFullSpace(leftv res, leftv args)
const CanonicalForm int s
BOOLEAN coneViaNormals(leftv res, leftv args)
Class used for (list of) interpreter objects.
BOOLEAN getMultiplicity(leftv res, leftv args)
BOOLEAN dualCone(leftv res, leftv args)
BOOLEAN containsPositiveVector(leftv res, leftv args)
gfan::ZMatrix liftUp(const gfan::ZMatrix &zm)
BOOLEAN containsRelatively(leftv res, leftv args)
BOOLEAN canonicalizeCone(leftv res, leftv args)
BOOLEAN bbcone_deserialize(blackbox **b, void **d, si_link f)
BOOLEAN quotientLatticeBasis(leftv res, leftv args)
BOOLEAN coneToPolytope(leftv res, leftv args)
BOOLEAN generatorsOfSpan(leftv res, leftv args)
bigintmat * iv2bim(intvec *b, const coeffs C)
bigintmat * zMatrixToBigintmat(const gfan::ZMatrix &zm)
gfan::ZVector * facetContaining(gfan::ZCone *zc, gfan::ZVector *zv)
BOOLEAN coneViaRays(leftv res, leftv args)
void WerrorS(const char *s)
void s_readmpz_base(s_buff F, mpz_ptr a, int base)
bigintmat * zVectorToBigintmat(const gfan::ZVector &zv)
BOOLEAN containsInSupport(leftv res, leftv args)
std::pair< gfan::ZMatrix, gfan::ZMatrix > interiorPointsAndNormalsOfFacets(const gfan::ZCone zc, const std::set< gfan::ZVector > &exceptThesePoints, const bool onlyLowerHalfSpace)
static gfan::ZMatrix gfanZMatrixReadFd(ssiInfo *dd)
static BOOLEAN bbcone_Op2(int op, leftv res, leftv i1, leftv i2)
gfan::ZVector randomPoint(const gfan::ZCone *zc)
int getAmbientDimension(gfan::ZFan *zf)
BOOLEAN bbcone_serialize(blackbox *b, void *d, si_link f)
BOOLEAN inequalities(leftv res, leftv args)
BOOLEAN linealitySpace(leftv res, leftv args)
BOOLEAN relativeInteriorPoint(leftv res, leftv args)
static BOOLEAN jjCONERAYS1(leftv res, leftv v)
BOOLEAN semigroupGenerator(leftv res, leftv args)
gfan::ZMatrix * bigintmatToZMatrix(const bigintmat &bim)
BOOLEAN isSimplicial(leftv res, leftv args)
BOOLEAN codimension(leftv res, leftv args)
BOOLEAN coneLink(leftv res, leftv args)
BOOLEAN negatedCone(leftv res, leftv args)
BOOLEAN getLinearForms(leftv res, leftv args)
BOOLEAN blackboxDefaultOp2(int op, leftv, leftv r1, leftv)
default procedure blackboxDefaultOp2, to be called as "default:" branch
static BOOLEAN jjCONERAYS2(leftv res, leftv u, leftv v)
number integerToNumber(const gfan::Integer &I)
int getCodimension(gfan::ZFan *zf)
static BOOLEAN jjCONENORMALS2(leftv res, leftv u, leftv v)
INLINE_THIS void Init(int l=0)
const Variable & v
< [in] a sqrfree bivariate poly
lists listOfFacets(const gfan::ZCone &zc)
BOOLEAN rays(leftv res, leftv args)
void bbcone_destroy(blackbox *, void *d)
BOOLEAN dimension(leftv res, leftv args)
void bbcone_setup(SModulFunctions *p)
void * bbcone_Init(blackbox *)
BOOLEAN containsCone(leftv res, leftv args)
static BOOLEAN jjCONERAYS3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjCONENORMALS3(leftv res, leftv u, leftv v, leftv w)
BOOLEAN uniquePoint(leftv res, leftv args)
BOOLEAN equations(leftv res, leftv args)
static void gfanIntegerWriteFd(gfan::Integer n, ssiInfo *dd)
static void gfanZMatrixWriteFd(gfan::ZMatrix M, ssiInfo *dd)
BOOLEAN facets(leftv res, leftv args)
BOOLEAN setLinearForms(leftv res, leftv args)
BOOLEAN ambientDimension(leftv res, leftv args)
char * bbcone_String(blackbox *, void *d)
BOOLEAN isOrigin(leftv res, leftv args)
int getLinealityDimension(gfan::ZFan *zf)
int getDimension(gfan::ZFan *zf)
BOOLEAN bbcone_Assign(leftv l, leftv r)
BOOLEAN linealityDimension(leftv res, leftv args)
std::string toString(const gfan::ZCone *const c)
static BOOLEAN jjCONENORMALS1(leftv res, leftv v)
BOOLEAN convexHull(leftv res, leftv args)
int(* iiAddCproc)(const char *libname, const char *procname, BOOLEAN pstatic, BOOLEAN(*func)(leftv res, leftv v))
BOOLEAN generatorsOfLinealitySpace(leftv res, leftv args)
BOOLEAN impliedEquations(leftv res, leftv args)
BOOLEAN hasFace(leftv res, leftv args)
BOOLEAN intersectCones(leftv res, leftv args)
int setBlackboxStuff(blackbox *bb, const char *n)
define a new type
void * bbcone_Copy(blackbox *, void *d)
void Werror(const char *fmt,...)
gfan::ZMatrix interiorPointsOfFacets(const gfan::ZCone &zc, const std::set< gfan::ZVector > &exceptThese)
gfan::ZVector * bigintmatToZVector(const bigintmat &bim)
BOOLEAN setMultiplicity(leftv res, leftv args)
static gfan::Integer gfanIntegerReadFd(ssiInfo *dd)