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;
355 gfan::initializeCddlibIfRequired();
371 WerrorS(
"coneViaInequalities: unexpected parameters");
391 gfan::ZCone* zc =
new gfan::ZCone();
392 *zc = gfan::ZCone::givenByRays(*zm, gfan::ZMatrix(0, zm->getWidth()));
394 res->
data = (
void*) zc;
428 if (rays->
cols() != linSpace->
cols())
430 Werror(
"expected same number of columns but got %d vs. %d",
436 gfan::ZCone* zc =
new gfan::ZCone();
437 *zc = gfan::ZCone::givenByRays(*zm1, *zm2);
439 res->
data = (
void*) zc;
480 if (rays->
cols() != linSpace->
cols())
482 Werror(
"expected same number of columns but got %d vs. %d",
486 int k = (int)(
long)w->
Data();
487 if ((k < 0) || (k > 3))
489 WerrorS(
"expected int argument in [0..3]");
494 gfan::ZCone* zc =
new gfan::ZCone();
495 *zc = gfan::ZCone::givenByRays(*zm1, *zm2);
498 res->
data = (
void*) zc;
511 gfan::initializeCddlibIfRequired();
527 WerrorS(
"coneViaPoints: unexpected parameters");
533 gfan::initializeCddlibIfRequired();
537 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
539 gfan::ZMatrix zmat = zc->getInequalities();
544 WerrorS(
"inequalities: unexpected parameters");
550 gfan::initializeCddlibIfRequired();
554 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
555 gfan::ZMatrix zmat = zc->getEquations();
560 WerrorS(
"equations: unexpected parameters");
566 gfan::initializeCddlibIfRequired();
570 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
571 gfan::ZMatrix zm = zc->getFacets();
576 WerrorS(
"facets: unexpected parameters");
582 gfan::initializeCddlibIfRequired();
586 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
587 gfan::ZMatrix zmat = zc->getImpliedEquations();
592 WerrorS(
"span: unexpected parameters");
598 gfan::initializeCddlibIfRequired();
602 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
603 gfan::ZMatrix zmat = zc->generatorsOfSpan();
608 WerrorS(
"generatorsOfSpan: unexpected parameters");
614 gfan::initializeCddlibIfRequired();
618 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
619 gfan::ZMatrix zmat = zc->generatorsOfLinealitySpace();
624 WerrorS(
"generatorsOfLinealitySpace: unexpected parameters");
630 gfan::initializeCddlibIfRequired();
634 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
635 gfan::ZMatrix zm = zc->extremeRays();
642 gfan::ZFan* zf = (gfan::ZFan*)u->
Data();
643 gfan::ZMatrix zmat =
rays(zf);
648 WerrorS(
"rays: unexpected parameters");
654 gfan::initializeCddlibIfRequired();
658 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
659 gfan::ZMatrix zmat = zc->quotientLatticeBasis();
664 WerrorS(
"quotientLatticeBasis: unexpected parameters");
670 gfan::initializeCddlibIfRequired();
674 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
675 gfan::ZMatrix zmat = zc->getLinearForms();
680 WerrorS(
"getLinearForms: unexpected parameters");
686 gfan::initializeCddlibIfRequired();
690 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
692 res->
data = (
void*) (
long) zc->ambientDimension();
697 gfan::ZFan* zf = (gfan::ZFan*)u->
Data();
704 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
709 WerrorS(
"ambientDimension: unexpected parameters");
715 gfan::initializeCddlibIfRequired();
719 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
721 res->
data = (
void*) (
long) zc->dimension();
726 gfan::ZFan* zf = (gfan::ZFan*)u->
Data();
733 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
738 WerrorS(
"dimension: unexpected parameters");
744 gfan::initializeCddlibIfRequired();
748 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
750 res->
data = (
void*) (
long) zc->codimension();
755 gfan::ZFan* zf = (gfan::ZFan*)u->
Data();
762 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
767 WerrorS(
"getCodimension: unexpected parameters");
773 gfan::initializeCddlibIfRequired();
777 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
779 res->
data = (
void*) (
long) zc->dimensionOfLinealitySpace();
784 gfan::ZFan* zf = (gfan::ZFan*)u->
Data();
789 WerrorS(
"linealityDimension: unexpected parameters");
795 gfan::initializeCddlibIfRequired();
799 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
802 res->
data = (
void*) i;
805 WerrorS(
"getMultiplicity: unexpected parameters");
811 gfan::initializeCddlibIfRequired();
815 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
816 int i = zc->isOrigin();
818 res->
data = (
void*) (
long)
i;
821 WerrorS(
"isOrigin: unexpected parameters");
827 gfan::initializeCddlibIfRequired();
831 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
832 int i = zc->isFullSpace();
834 res->
data = (
void*) (
long)
i;
837 WerrorS(
"isFullSpace: unexpected parameters");
843 gfan::initializeCddlibIfRequired();
847 gfan::ZCone* zc = (gfan::ZCone*) u->
Data();
848 int b = zc->isSimplicial();
850 res->
data = (
void*) (
long)
b;
855 gfan::ZFan* zf = (gfan::ZFan*) u->
Data();
858 res->
data = (
void*) (
long)
b;
861 WerrorS(
"isSimplicial: unexpected parameters");
867 gfan::initializeCddlibIfRequired();
871 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
872 int i = zc->containsPositiveVector();
874 res->
data = (
void*) (
long)
i;
877 WerrorS(
"containsPositiveVector: unexpected parameters");
883 gfan::initializeCddlibIfRequired();
887 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
888 gfan::ZCone* zd =
new gfan::ZCone(zc->linealitySpace());
890 res->
data = (
void*) zd;
893 WerrorS(
"linealitySpace: unexpected parameters");
899 gfan::initializeCddlibIfRequired();
903 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
904 gfan::ZCone* zd =
new gfan::ZCone(zc->dualCone());
906 res->
data = (
void*) zd;
909 WerrorS(
"dual: unexpected parameters");
915 gfan::initializeCddlibIfRequired();
919 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
920 gfan::ZCone* zd =
new gfan::ZCone(zc->negated());
922 res->
data = (
void*) zd;
925 WerrorS(
"negatedCone: unexpected parameters");
931 gfan::initializeCddlibIfRequired();
935 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
936 int d = zc->dimension();
937 int dLS = zc->dimensionOfLinealitySpace();
940 gfan::ZVector zv = zc->semiGroupGeneratorOfRay();
945 Werror(
"expected dim of cone one larger than dim of lin space\n" 946 "but got dimensions %d and %d", d, dLS);
948 WerrorS(
"semigroupGenerator: unexpected parameters");
954 gfan::initializeCddlibIfRequired();
958 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
959 gfan::ZVector zv = zc->getRelativeInteriorPoint();
964 WerrorS(
"relativeInteriorPoint: unexpected parameters");
970 gfan::initializeCddlibIfRequired();
974 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
975 gfan::ZVector zv = zc->getUniquePoint();
980 WerrorS(
"uniquePoint: unexpected parameters");
986 gfan::ZVector rp = gfan::ZVector(zc->ambientDimension());
988 gfan::ZMatrix
rays = zc->extremeRays();
989 for (
int i=0;
i<rays.getHeight();
i++)
992 rp = rp + n * rays[
i].toVector();
995 gfan::ZMatrix lins = zc->generatorsOfLinealitySpace();
996 for (
int i=0;
i<lins.getHeight();
i++)
999 rp = rp + n * lins[
i].toVector();
1007 gfan::initializeCddlibIfRequired();
1011 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1017 WerrorS(
"randomPoint: unexpected parameters");
1023 gfan::initializeCddlibIfRequired();
1027 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1031 int val = (int)(
long)v->
Data();
1032 zc->setMultiplicity(gfan::Integer(val));
1038 WerrorS(
"setMultiplicity: unexpected parameters");
1044 gfan::initializeCddlibIfRequired();
1048 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1061 zc->setLinearForms(*zm);
1071 WerrorS(
"setLinearForms: unexpected parameters");
1075 gfan::ZMatrix
liftUp(
const gfan::ZMatrix &zm)
1077 int r=zm.getHeight();
1078 int c=zm.getWidth();
1079 gfan::ZMatrix zn(r+1,c+1);
1081 for (
int i=0;
i<
r;
i++)
1082 for (
int j=0;
j<c;
j++)
1083 zn[
i+1][
j+1]=zm[
i][
j];
1089 gfan::ZMatrix ineq=zc.getInequalities();
1090 gfan::ZMatrix eq=zc.getEquations();
1097 gfan::initializeCddlibIfRequired();
1101 gfan::ZCone* zc = (gfan::ZCone*) u->
Data();
1102 gfan::ZMatrix ineq=zc->getInequalities();
1103 gfan::ZMatrix eq=zc->getEquations();
1104 gfan::ZCone* zd =
new gfan::ZCone(
liftUp(ineq),
liftUp(eq));
1106 res->
data = (
void*) zd;
1109 WerrorS(
"makePolytope: unexpected parameters");
1115 gfan::initializeCddlibIfRequired();
1122 gfan::ZCone* zc1 = (gfan::ZCone*)u->
Data();
1123 gfan::ZCone* zc2 = (gfan::ZCone*)v->
Data();
1124 int d1 = zc1->ambientDimension();
1125 int d2 = zc2->ambientDimension();
1128 Werror(
"expected ambient dims of both cones to coincide\n" 1129 "but got %d and %d", d1, d2);
1132 gfan::ZCone zc3 = gfan::intersection(*zc1, *zc2);
1135 res->
data = (
void *)
new gfan::ZCone(zc3);
1140 gfan::ZCone* zc11 = (gfan::ZCone*)u->
Data();
1141 gfan::ZCone zc1 =
liftUp(*zc11);
1142 gfan::ZCone* zc2 = (gfan::ZCone*)v->
Data();
1143 int d1 = zc1.ambientDimension();
1144 int d2 = zc2->ambientDimension();
1147 Werror(
"expected ambient dims of both cones to coincide\n" 1148 "but got %d and %d", d1, d2);
1151 gfan::ZCone zc3 = gfan::intersection(zc1, *zc2);
1154 res->
data = (
void *)
new gfan::ZCone(zc3);
1163 gfan::ZCone* zc1 = (gfan::ZCone*)u->
Data();
1164 gfan::ZCone* zc22 = (gfan::ZCone*)v->
Data();
1165 gfan::ZCone zc2 =
liftUp(*zc22);
1166 int d1 = zc1->ambientDimension();
1167 int d2 = zc2.ambientDimension();
1170 Werror(
"expected ambient dims of both cones to coincide\n" 1171 "but got %d and %d", d1, d2);
1174 gfan::ZCone zc3 = gfan::intersection(*zc1, zc2);
1177 res->
data = (
void *)
new gfan::ZCone(zc3);
1182 gfan::ZCone* zc1 = (gfan::ZCone*)u->
Data();
1183 gfan::ZCone* zc2 = (gfan::ZCone*)v->
Data();
1184 int d1 = zc1->ambientDimension();
1185 int d2 = zc2->ambientDimension();
1188 Werror(
"expected ambient dims of both cones to coincide\n" 1189 "but got %d and %d", d1, d2);
1192 gfan::ZCone zc3 = gfan::intersection(*zc1, *zc2);
1195 res->
data = (
void *)
new gfan::ZCone(zc3);
1199 WerrorS(
"convexIntersection: unexpected parameters");
1205 gfan::initializeCddlibIfRequired();
1212 gfan::ZCone* zc1 = (gfan::ZCone*)u->
Data();
1213 gfan::ZCone* zc2 = (gfan::ZCone*)v->
Data();
1214 int d1 = zc1->ambientDimension();
1215 int d2 = zc2->ambientDimension();
1218 Werror(
"expected ambient dims of both cones to coincide\n" 1219 "but got %d and %d", d1, d2);
1222 gfan::ZMatrix zm1 = zc1->extremeRays();
1223 gfan::ZMatrix zm2 = zc2->extremeRays();
1224 gfan::ZMatrix zn1 = zc1->generatorsOfLinealitySpace();
1225 gfan::ZMatrix zn2 = zc2->generatorsOfLinealitySpace();
1226 gfan::ZMatrix zm = combineOnTop(zm1,zm2);
1227 gfan::ZMatrix zn = combineOnTop(zn1,zn2);
1228 gfan::ZCone* zc =
new gfan::ZCone();
1229 *zc = gfan::ZCone::givenByRays(zm, zn);
1231 res->
data = (
void*) zc;
1236 gfan::ZCone* zc11 = (gfan::ZCone*)u->
Data();
1237 gfan::ZCone zc1 =
liftUp(*zc11);
1238 gfan::ZCone* zc2 = (gfan::ZCone*)v->
Data();
1239 int d1 = zc1.ambientDimension()-1;
1240 int d2 = zc2->ambientDimension()-1;
1243 Werror(
"expected ambient dims of both cones to coincide\n" 1244 "but got %d and %d", d1, d2);
1247 gfan::ZMatrix zm1 = zc1.extremeRays();
1248 gfan::ZMatrix zm2 = zc2->extremeRays();
1249 gfan::ZMatrix zn = zc1.generatorsOfLinealitySpace();
1250 gfan::ZMatrix zm = combineOnTop(zm1,zm2);
1251 gfan::ZCone* zc =
new gfan::ZCone();
1252 *zc = gfan::ZCone::givenByRays(zm, zn);
1254 res->
data = (
void*) zc;
1263 gfan::ZCone* zc1 = (gfan::ZCone*)u->
Data();
1264 gfan::ZCone* zc22 = (gfan::ZCone*)v->
Data();
1265 gfan::ZCone zc2 =
liftUp(*zc22);
1266 int d1 = zc1->ambientDimension()-1;
1267 int d2 = zc2.ambientDimension()-1;
1270 Werror(
"expected ambient dims of both cones to coincide\n" 1271 "but got %d and %d", d1, d2);
1274 gfan::ZMatrix zm1 = zc1->extremeRays();
1275 gfan::ZMatrix zm2 = zc2.extremeRays();
1276 gfan::ZMatrix zn = zc2.generatorsOfLinealitySpace();
1277 gfan::ZMatrix zm = combineOnTop(zm1,zm2);
1278 gfan::ZCone* zc =
new gfan::ZCone();
1279 *zc = gfan::ZCone::givenByRays(zm,gfan::ZMatrix(0, zm.getWidth()));
1281 res->
data = (
void*) zc;
1286 gfan::ZCone* zc1 = (gfan::ZCone*)u->
Data();
1287 gfan::ZCone* zc2 = (gfan::ZCone*)v->
Data();
1288 int d1 = zc1->ambientDimension()-1;
1289 int d2 = zc2->ambientDimension()-1;
1292 Werror(
"expected ambient dims of both cones to coincide\n" 1293 "but got %d and %d", d1, d2);
1296 gfan::ZMatrix zm1 = zc1->extremeRays();
1297 gfan::ZMatrix zm2 = zc2->extremeRays();
1298 gfan::ZMatrix zm = combineOnTop(zm1,zm2);
1299 gfan::ZCone* zc =
new gfan::ZCone();
1300 *zc = gfan::ZCone::givenByRays(zm,gfan::ZMatrix(0, zm.getWidth()));
1302 res->
data = (
void*) zc;
1306 WerrorS(
"convexHull: unexpected parameters");
1312 gfan::initializeCddlibIfRequired();
1319 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1329 int d1 = zc->ambientDimension();
1330 int d2 = zv->size();
1333 Werror(
"expected ambient dim of cone and size of vector\n" 1334 " to be equal but got %d and %d", d1, d2);
1337 if(!zc->contains(*zv))
1339 WerrorS(
"the provided intvec does not lie in the cone");
1342 gfan::ZCone* zd =
new gfan::ZCone(zc->link(*zv));
1344 res->
data = (
void *) zd;
1352 WerrorS(
"coneLink: unexpected parameters");
1358 gfan::initializeCddlibIfRequired();
1365 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1366 gfan::ZCone* zd = (gfan::ZCone*)v->
Data();
1367 int d1 = zc->ambientDimension();
1368 int d2 = zd->ambientDimension();
1371 Werror(
"expected cones with same ambient dimensions\n but got" 1372 " dimensions %d and %d", d1, d2);
1375 bool b = (zc->contains(*zd) ? 1 : 0);
1377 res->
data = (
void*) (
long)
b;
1382 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1393 int d1 = zc->ambientDimension();
1394 int d2 = zv->size();
1397 Werror(
"expected cones with same ambient dimensions\n but got" 1398 " dimensions %d and %d", d1, d2);
1401 int b = zc->contains(*zv);
1403 res->
data = (
void*) (
long)
b;
1411 WerrorS(
"containsInSupport: unexpected parameters");
1417 gfan::initializeCddlibIfRequired();
1424 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1434 int d1 = zc->ambientDimension();
1435 int d2 = zv->size();
1438 bool b = (zc->containsRelatively(*zv) ? 1 : 0);
1440 res->
data = (
void *) b;
1449 Werror(
"expected ambient dim of cone and size of vector\n" 1450 "to be equal but got %d and %d", d1, d2);
1453 WerrorS(
"containsRelatively: unexpected parameters");
1459 gfan::initializeCddlibIfRequired();
1466 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1467 gfan::ZCone* zd = (gfan::ZCone*)v->
Data();
1468 bool b = zc->hasFace(*zd);
1470 res->
data = (
void*) (
long)
b;
1479 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1480 gfan::ZCone* zd = (gfan::ZCone*)v->
Data();
1481 bool b = zc->hasFace(*zd);
1483 res->
data = (
void*) (
long)
b;
1487 WerrorS(
"containsAsFace: unexpected parameters");
1493 gfan::initializeCddlibIfRequired();
1497 gfan::ZCone* zc = (gfan::ZCone*)u->
Data();
1498 gfan::ZCone* zd =
new gfan::ZCone(*zc);
1501 res->
data = (
void*) zd;
1504 WerrorS(
"canonicalizeCone: unexpected parameters");
1510 gfan::initializeCddlibIfRequired();
1518 gfan::ZCone* zc = (gfan::ZCone*) v->
Data();
1525 WerrorS(
"containsCone: entries of wrong type in list");
1528 gfan::ZCone* ll = (gfan::ZCone*) l->
m[
i].
Data();
1530 if (!((*ll) != (*zc)))
1537 res->
data = (
char*) (
long)
b;
1541 WerrorS(
"containsCone: unexpected parameters");
1547 gfan::initializeCddlibIfRequired();
1554 gfan::ZCone* zc = (gfan::ZCone*) u->
Data();
1566 if (!zc->contains(*point))
1568 WerrorS(
"faceContaining: point not in cone");
1572 res->
data = (
void*)
new gfan::ZCone(zc->faceContaining(*point));
1580 WerrorS(
"faceContaining: unexpected parameters");
1591 gfan::ZMatrix
equations = zc.getImpliedEquations();
1592 int r = inequalities.getHeight();
1593 int c = inequalities.getWidth();
1596 gfan::ZMatrix relativeInteriorPoints = gfan::ZMatrix(0,c);
1597 if (r==0)
return relativeInteriorPoints;
1602 gfan::ZMatrix newInequalities = inequalities.submatrix(1,0,r,c);
1604 newEquations.appendRow(inequalities[0]);
1605 gfan::ZCone
facet = gfan::ZCone(newInequalities,newEquations);
1606 facet.canonicalize();
1607 gfan::ZVector interiorPoint = facet.getRelativeInteriorPoint();
1608 if (exceptThese.count(interiorPoint)==0)
1609 relativeInteriorPoints.appendRow(interiorPoint);
1612 for (
int i=1;
i<r-1;
i++)
1614 newInequalities = inequalities.submatrix(0,0,
i,c);
1615 newInequalities.append(inequalities.submatrix(
i+1,0,r,c));
1617 newEquations.appendRow(inequalities[
i]);
1618 facet = gfan::ZCone(newInequalities,newEquations);
1619 facet.canonicalize();
1620 interiorPoint = facet.getRelativeInteriorPoint();
1621 if (exceptThese.count(interiorPoint)==0)
1622 relativeInteriorPoints.appendRow(interiorPoint);
1626 newInequalities = inequalities.submatrix(0,0,r-1,c);
1628 newEquations.appendRow(inequalities[r-1]);
1629 facet = gfan::ZCone(newInequalities,newEquations);
1630 facet.canonicalize();
1631 interiorPoint = facet.getRelativeInteriorPoint();
1632 if (exceptThese.count(interiorPoint)==0)
1633 relativeInteriorPoints.appendRow(interiorPoint);
1635 return relativeInteriorPoints;
1645 gfan::ZMatrix
equations = zc.getImpliedEquations();
1646 int r = inequalities.getHeight();
1647 int c = inequalities.getWidth();
1650 gfan::ZMatrix relativeInteriorPoints = gfan::ZMatrix(0,c);
1651 gfan::ZMatrix outerFacetNormals = gfan::ZMatrix(0,c);
1653 return std::make_pair(relativeInteriorPoints,outerFacetNormals);
1658 gfan::ZMatrix newInequalities = inequalities.submatrix(1,0,r,c);
1660 newEquations.appendRow(inequalities[0]);
1661 gfan::ZCone
facet = gfan::ZCone(newInequalities,newEquations);
1662 gfan::ZVector interiorPoint = facet.getRelativeInteriorPoint();
1663 if (onlyLowerHalfSpace==
false || interiorPoint[0].
sign()<0)
1665 if (exceptThesePoints.count(interiorPoint)==0)
1667 relativeInteriorPoints.appendRow(interiorPoint);
1668 outerFacetNormals.appendRow(-inequalities[0].toVector());
1673 for (
int i=1;
i<r-1;
i++)
1675 newInequalities = inequalities.submatrix(0,0,
i,c);
1676 newInequalities.append(inequalities.submatrix(
i+1,0,r,c));
1678 newEquations.appendRow(inequalities[
i]);
1679 facet = gfan::ZCone(newInequalities,newEquations);
1680 interiorPoint = facet.getRelativeInteriorPoint();
1681 if (onlyLowerHalfSpace==
false || interiorPoint[0].
sign()<0)
1683 if (exceptThesePoints.count(interiorPoint)==0)
1685 relativeInteriorPoints.appendRow(interiorPoint);
1686 outerFacetNormals.appendRow(-inequalities[i].toVector());
1692 newInequalities = inequalities.submatrix(0,0,r-1,c);
1694 newEquations.appendRow(inequalities[r-1]);
1695 facet = gfan::ZCone(newInequalities,newEquations);
1696 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[r-1].toVector());
1706 return std::make_pair(relativeInteriorPoints,outerFacetNormals);
1722 fprintf(dd->
f_write,
"%d %d ",M.getHeight(),M.getWidth());
1724 for (
int i=0;
i<M.getHeight();
i++)
1726 for (
int j=0;
j<M.getWidth();
j++)
1738 memset(&
l,0,
sizeof(
l));
1740 l.data=(
void*)
"cone";
1743 gfan::ZCone *Z = (gfan::ZCone*) d;
1744 fprintf(dd->
f_write,
"%d ",Z->areImpliedEquationsKnown()+Z->areFacetsKnown()*2);
1746 gfan::ZMatrix
i=Z->getInequalities();
1749 gfan::ZMatrix e=Z->getEquations();
1761 gfan::Integer n(tmp);
1771 gfan::ZMatrix
M(r,c);
1772 for (
int i=0;
i<
r;
i++)
1774 for (
int j=0;
j<c;
j++)
1793 gfan::ZCone* Z =
new gfan::ZCone(i,e,preassumptions);
1801 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)
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)
const Variable & v
< [in] a sqrfree bivariate poly
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 faceContaining(leftv res, leftv args)
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)