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");
1549 gfan::ZMatrix
equations = zc.getImpliedEquations();
1551 int r = inequalities.getHeight();
1552 int c = inequalities.getWidth();
1557 gfan::ZMatrix newInequalities = inequalities.submatrix(1,0,r,c);
1559 newEquations.appendRow(inequalities[0]);
1560 L->
m[0].
rtyp =
coneID; L->
m[0].
data=(
void*)
new gfan::ZCone(newInequalities,newEquations);
1563 for (
int i=1;
i<r-1;
i++)
1565 newInequalities = inequalities.submatrix(0,0,
i-1,c);
1566 newInequalities.append(inequalities.submatrix(
i+1,0,r,c));
1568 newEquations.appendRow(inequalities[
i]);
1569 L->
m[
i].
rtyp =
coneID; L->
m[
i].
data=(
void*)
new gfan::ZCone(newInequalities,newEquations);
1573 newInequalities = inequalities.submatrix(0,0,r-1,c);
1575 newEquations.appendRow(inequalities[r]);
1576 L->
m[r-1].
rtyp =
coneID; L->
m[r-1].
data=(
void*)
new gfan::ZCone(newInequalities,newEquations);
1584 gfan::initializeCddlibIfRequired();
1588 gfan::ZCone* zc = (gfan::ZCone*) u->
Data();
1591 res->
data = (
void*) L;
1594 WerrorS(
"listOfFacets: unexpected parameters");
1610 gfan::ZMatrix
facets = zc->getFacets();
1611 for (
int i=0;
i<facets.getHeight();
i++)
1613 gfan::ZVector
facet = facets[
i];
1614 if (dot(facet,*zv) == (long) 0)
1615 return new gfan::ZVector(facet);
1617 return new gfan::ZVector(zc->ambientDimension());
1623 gfan::initializeCddlibIfRequired();
1630 gfan::ZCone* zc = (gfan::ZCone*) u->
Data();
1654 WerrorS(
"facetContaining: unexpected parameters");
1665 gfan::ZMatrix
equations = zc.getImpliedEquations();
1666 int r = inequalities.getHeight();
1667 int c = inequalities.getWidth();
1670 gfan::ZMatrix relativeInteriorPoints = gfan::ZMatrix(0,c);
1671 if (r==0)
return relativeInteriorPoints;
1676 gfan::ZMatrix newInequalities = inequalities.submatrix(1,0,r,c);
1678 newEquations.appendRow(inequalities[0]);
1679 gfan::ZCone
facet = gfan::ZCone(newInequalities,newEquations);
1680 facet.canonicalize();
1681 gfan::ZVector interiorPoint = facet.getRelativeInteriorPoint();
1682 if (exceptThese.count(interiorPoint)==0)
1683 relativeInteriorPoints.appendRow(interiorPoint);
1686 for (
int i=1;
i<r-1;
i++)
1688 newInequalities = inequalities.submatrix(0,0,
i,c);
1689 newInequalities.append(inequalities.submatrix(
i+1,0,r,c));
1691 newEquations.appendRow(inequalities[
i]);
1692 facet = gfan::ZCone(newInequalities,newEquations);
1693 facet.canonicalize();
1694 interiorPoint = facet.getRelativeInteriorPoint();
1695 if (exceptThese.count(interiorPoint)==0)
1696 relativeInteriorPoints.appendRow(interiorPoint);
1700 newInequalities = inequalities.submatrix(0,0,r-1,c);
1702 newEquations.appendRow(inequalities[r-1]);
1703 facet = gfan::ZCone(newInequalities,newEquations);
1704 facet.canonicalize();
1705 interiorPoint = facet.getRelativeInteriorPoint();
1706 if (exceptThese.count(interiorPoint)==0)
1707 relativeInteriorPoints.appendRow(interiorPoint);
1709 return relativeInteriorPoints;
1719 gfan::ZMatrix
equations = zc.getImpliedEquations();
1720 int r = inequalities.getHeight();
1721 int c = inequalities.getWidth();
1724 gfan::ZMatrix relativeInteriorPoints = gfan::ZMatrix(0,c);
1725 gfan::ZMatrix outerFacetNormals = gfan::ZMatrix(0,c);
1727 return std::make_pair(relativeInteriorPoints,outerFacetNormals);
1732 gfan::ZMatrix newInequalities = inequalities.submatrix(1,0,r,c);
1734 newEquations.appendRow(inequalities[0]);
1735 gfan::ZCone
facet = gfan::ZCone(newInequalities,newEquations);
1736 gfan::ZVector interiorPoint = facet.getRelativeInteriorPoint();
1737 if (onlyLowerHalfSpace==
false || interiorPoint[0].
sign()<0)
1739 if (exceptThesePoints.count(interiorPoint)==0)
1741 relativeInteriorPoints.appendRow(interiorPoint);
1742 outerFacetNormals.appendRow(-inequalities[0].toVector());
1747 for (
int i=1;
i<r-1;
i++)
1749 newInequalities = inequalities.submatrix(0,0,
i,c);
1750 newInequalities.append(inequalities.submatrix(
i+1,0,r,c));
1752 newEquations.appendRow(inequalities[
i]);
1753 facet = gfan::ZCone(newInequalities,newEquations);
1754 interiorPoint = facet.getRelativeInteriorPoint();
1755 if (onlyLowerHalfSpace==
false || interiorPoint[0].
sign()<0)
1757 if (exceptThesePoints.count(interiorPoint)==0)
1759 relativeInteriorPoints.appendRow(interiorPoint);
1760 outerFacetNormals.appendRow(-inequalities[i].toVector());
1766 newInequalities = inequalities.submatrix(0,0,r-1,c);
1768 newEquations.appendRow(inequalities[r-1]);
1769 facet = gfan::ZCone(newInequalities,newEquations);
1770 interiorPoint = facet.getRelativeInteriorPoint();
1771 if (onlyLowerHalfSpace==
false || interiorPoint[0].
sign()<0)
1773 if (exceptThesePoints.count(interiorPoint)==0)
1775 relativeInteriorPoints.appendRow(interiorPoint);
1776 outerFacetNormals.appendRow(-inequalities[r-1].toVector());
1780 return std::make_pair(relativeInteriorPoints,outerFacetNormals);
1796 fprintf(dd->
f_write,
"%d %d ",M.getHeight(),M.getWidth());
1798 for (
int i=0;
i<M.getHeight();
i++)
1800 for (
int j=0;
j<M.getWidth();
j++)
1812 memset(&
l,0,
sizeof(
l));
1814 l.data=(
void*)
"cone";
1817 gfan::ZCone *Z = (gfan::ZCone*) d;
1818 fprintf(dd->
f_write,
"%d ",Z->areImpliedEquationsKnown()+Z->areFacetsKnown()*2);
1820 gfan::ZMatrix
i=Z->getInequalities();
1823 gfan::ZMatrix e=Z->getEquations();
1835 gfan::Integer n(tmp);
1845 gfan::ZMatrix
M(r,c);
1846 for (
int i=0;
i<
r;
i++)
1848 for (
int j=0;
j<c;
j++)
1867 gfan::ZCone* Z =
new gfan::ZCone(i,e,preassumptions);
1875 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)