19#include "gfanlib/gfanlib.h"
20#include "gfanlib/gfanlib_q.h"
30 s<<
"AMBIENT_DIM"<<std::endl;
31 s<<c->ambientDimension()<<std::endl;
35 if (c->areFacetsKnown())
36 s<<
"FACETS"<<std::endl;
38 s<<
"INEQUALITIES"<<std::endl;
47 if (c->areImpliedEquationsKnown())
48 s<<
"LINEAR_SPAN"<<std::endl;
50 s<<
"EQUATIONS"<<std::endl;
57 if (c->areExtremeRaysKnown())
69 s<<
"LINEALITY_SPACE"<<std::endl;
97 else if (r->
Typ()==
l->Typ())
123 Werror(
"assign Type(%d) = Type(%d) not implemented",
l->Typ(),r->
Typ());
174 int d1 =
zp->ambientDimension();
175 int d2 =
zq->ambientDimension();
178 WerrorS(
"mismatching ambient dimensions");
185 res->data = (
void*)
zs;
195 int d1 =
zp->ambientDimension();
196 int d2 =
zq->ambientDimension();
199 WerrorS(
"mismatching ambient dimensions");
210 res->data = (
void*)
zs;
222 bool b = !((*zp)!=(*zq));
224 res->data = (
void*)
b;
255 res->data = (
void*)
zc;
282 if (
ineq->cols() !=
eq->cols())
284 Werror(
"expected same number of columns but got %d vs. %d",
285 ineq->cols(),
eq->cols());
298 res->data = (
void*)
zc;
326 if (
ineq->cols() !=
eq->cols())
328 Werror(
"expected same number of columns but got %d vs. %d",
329 ineq->cols(),
eq->cols());
332 int k = (
int)(
long)
w->Data();
333 if ((
k < 0) || (
k > 3))
335 WerrorS(
"expected int argument in [0..3]");
348 res->data = (
void*)
zc;
385 WerrorS(
"coneViaInequalities: unexpected parameters");
408 res->data = (
void*)
zc;
444 Werror(
"expected same number of columns but got %d vs. %d",
451 *
zc = gfan::ZCone::givenByRays(*
zm1, *
zm2);
453 res->data = (
void*)
zc;
496 Werror(
"expected same number of columns but got %d vs. %d",
500 int k = (
int)(
long)
w->Data();
501 if ((
k < 0) || (
k > 3))
503 WerrorS(
"expected int argument in [0..3]");
509 *
zc = gfan::ZCone::givenByRays(*
zm1, *
zm2);
512 res->data = (
void*)
zc;
556 WerrorS(
"coneViaPoints: unexpected parameters");
573 WerrorS(
"inequalities: unexpected parameters");
590 WerrorS(
"equations: unexpected parameters");
607 WerrorS(
"facets: unexpected parameters");
624 WerrorS(
"span: unexpected parameters");
641 WerrorS(
"generatorsOfSpan: unexpected parameters");
658 WerrorS(
"generatorsOfLinealitySpace: unexpected parameters");
685 WerrorS(
"rays: unexpected parameters");
702 WerrorS(
"quotientLatticeBasis: unexpected parameters");
719 WerrorS(
"getLinearForms: unexpected parameters");
731 res->data = (
void*) (
long)
zc->ambientDimension();
753 WerrorS(
"ambientDimension: unexpected parameters");
765 res->data = (
void*) (
long)
zc->dimension();
787 WerrorS(
"dimension: unexpected parameters");
799 res->data = (
void*) (
long)
zc->codimension();
821 WerrorS(
"getCodimension: unexpected parameters");
833 res->data = (
void*) (
long)
zc->dimensionOfLinealitySpace();
846 WerrorS(
"linealityDimension: unexpected parameters");
859 res->data = (
void*)
i;
863 WerrorS(
"getMultiplicity: unexpected parameters");
874 int i =
zc->isOrigin();
876 res->data = (
void*) (
long)
i;
880 WerrorS(
"isOrigin: unexpected parameters");
891 int i =
zc->isFullSpace();
893 res->data = (
void*) (
long)
i;
897 WerrorS(
"isFullSpace: unexpected parameters");
908 int b =
zc->isSimplicial();
910 res->data = (
void*) (
long)
b;
920 res->data = (
void*) (
long)
b;
924 WerrorS(
"isSimplicial: unexpected parameters");
935 int i =
zc->containsPositiveVector();
937 res->data = (
void*) (
long)
i;
941 WerrorS(
"containsPositiveVector: unexpected parameters");
954 res->data = (
void*)
zd;
958 WerrorS(
"linealitySpace: unexpected parameters");
971 res->data = (
void*)
zd;
975 WerrorS(
"dual: unexpected parameters");
988 res->data = (
void*)
zd;
992 WerrorS(
"negatedCone: unexpected parameters");
1003 int d =
zc->dimension();
1004 int dLS =
zc->dimensionOfLinealitySpace();
1014 Werror(
"expected dim of cone one larger than dim of lin space\n"
1015 "but got dimensions %d and %d", d,
dLS);
1017 WerrorS(
"semigroupGenerator: unexpected parameters");
1034 WerrorS(
"relativeInteriorPoint: unexpected parameters");
1051 WerrorS(
"uniquePoint: unexpected parameters");
1074 for (
int i=0;
i<
rays.getHeight();
i++)
1098 b = (
int) (
long)
v->Data();
1110 WerrorS(
"randomPoint: unexpected parameters");
1124 int val = (
int)(
long)
v->Data();
1132 WerrorS(
"setMultiplicity: unexpected parameters");
1155 zc->setLinearForms(*
zm);
1166 WerrorS(
"setLinearForms: unexpected parameters");
1172 int r=
zm.getHeight();
1173 int c=
zm.getWidth();
1176 for (
int i=0;
i<r;
i++)
1177 for (
int j=0;
j<c;
j++)
1201 res->data = (
void*)
zd;
1205 WerrorS(
"makePolytope: unexpected parameters");
1220 int d1 =
zc1->ambientDimension();
1221 int d2 =
zc2->ambientDimension();
1224 Werror(
"expected ambient dims of both cones to coincide\n"
1225 "but got %d and %d",
d1,
d2);
1242 int d1 =
zc1.ambientDimension();
1243 int d2 =
zc2->ambientDimension();
1246 Werror(
"expected ambient dims of both cones to coincide\n"
1247 "but got %d and %d",
d1,
d2);
1273 WerrorS(
"convexIntersection: entries of wrong type in list");
1277 r1 =
r1 +
ll->getInequalities().getHeight();
1278 r2 =
r2 +
ll->getEquations().getHeight();
1283 c =
ll->getInequalities().getWidth();
1295 for (
int j=0;
j<
ineqs.getHeight();
j++)
1301 for (
int j=0;
j<
eqs.getHeight();
j++)
1311 res->data = (
void *)
zc;
1324 int d1 =
zc1->ambientDimension();
1325 int d2 =
zc2.ambientDimension();
1328 Werror(
"expected ambient dims of both cones to coincide\n"
1329 "but got %d and %d",
d1,
d2);
1345 int d1 =
zc1->ambientDimension();
1346 int d2 =
zc2->ambientDimension();
1349 Werror(
"expected ambient dims of both cones to coincide\n"
1350 "but got %d and %d",
d1,
d2);
1362 WerrorS(
"convexIntersection: unexpected parameters");
1377 int d1 =
zc1->ambientDimension();
1378 int d2 =
zc2->ambientDimension();
1381 Werror(
"expected ambient dims of both cones to coincide\n"
1382 "but got %d and %d",
d1,
d2);
1393 *
zc = gfan::ZCone::givenByRays(
zm,
zn);
1395 res->data = (
void*)
zc;
1405 int d1 =
zc1.ambientDimension()-1;
1406 int d2 =
zc2->ambientDimension()-1;
1409 Werror(
"expected ambient dims of both cones to coincide\n"
1410 "but got %d and %d",
d1,
d2);
1419 *
zc = gfan::ZCone::givenByRays(
zm,
zn);
1421 res->data = (
void*)
zc;
1435 int d1 =
zc1->ambientDimension()-1;
1436 int d2 =
zc2.ambientDimension()-1;
1439 Werror(
"expected ambient dims of both cones to coincide\n"
1440 "but got %d and %d",
d1,
d2);
1451 res->data = (
void*)
zc;
1460 int d1 =
zc1->ambientDimension()-1;
1461 int d2 =
zc2->ambientDimension()-1;
1464 Werror(
"expected ambient dims of both cones to coincide\n"
1465 "but got %d and %d",
d1,
d2);
1475 res->data = (
void*)
zc;
1480 WerrorS(
"convexHull: unexpected parameters");
1503 int d1 =
zc->ambientDimension();
1504 int d2 =
zv->size();
1507 Werror(
"expected ambient dim of cone and size of vector\n"
1508 " to be equal but got %d and %d",
d1,
d2);
1512 if(!
zc->contains(*
zv))
1514 WerrorS(
"the provided intvec does not lie in the cone");
1520 res->data = (
void *)
zd;
1529 WerrorS(
"coneLink: unexpected parameters");
1544 int d1 =
zc->ambientDimension();
1545 int d2 =
zd->ambientDimension();
1548 Werror(
"expected cones with same ambient dimensions\n but got"
1549 " dimensions %d and %d",
d1,
d2);
1553 bool b = (
zc->contains(*
zd) ? 1 : 0);
1555 res->data = (
void*) (
long)
b;
1573 int d1 =
zc->ambientDimension();
1574 int d2 =
zv->size();
1577 Werror(
"expected cones with same ambient dimensions\n but got"
1578 " dimensions %d and %d",
d1,
d2);
1582 int b =
zc->contains(*
zv);
1584 res->data = (
void*) (
long)
b;
1593 WerrorS(
"containsInSupport: unexpected parameters");
1616 int d1 =
zc->ambientDimension();
1617 int d2 =
zv->size();
1620 bool b = (
zc->containsRelatively(*
zv) ? 1 : 0);
1622 res->data = (
void *)
b;
1633 Werror(
"expected ambient dim of cone and size of vector\n"
1634 "to be equal but got %d and %d",
d1,
d2);
1637 WerrorS(
"containsRelatively: unexpected parameters");
1652 bool b =
zc->hasFace(*
zd);
1654 res->data = (
void*) (
long)
b;
1667 bool b =
zc->hasFace(*
zd);
1669 res->data = (
void*) (
long)
b;
1674 WerrorS(
"containsAsFace: unexpected parameters");
1688 res->data = (
void*)
zd;
1692 WerrorS(
"canonicalizeCone: unexpected parameters");
1713 WerrorS(
"containsCone: entries of wrong type in list");
1719 if (!((*
ll) != (*
zc)))
1726 res->data = (
char*) (
long)
b;
1731 WerrorS(
"containsCone: unexpected parameters");
1756 if (!
zc->contains(*point))
1758 WerrorS(
"faceContaining: point not in cone");
1771 WerrorS(
"faceContaining: unexpected parameters");
1781 int n = (
int) (
long) u->
Data();
1785 for (
int i=0;
i<n;
i++)
1788 res->data = (
void*)
v;
1792 WerrorS(
"onesVector: unexpected parameters");
1817 facet.canonicalize();
1823 for (
int i=1;
i<r-1;
i++)
1830 facet.canonicalize();
1831 interiorPoint =
facet.getRelativeInteriorPoint();
1841 facet.canonicalize();
1842 interiorPoint =
facet.getRelativeInteriorPoint();
1874 if (onlyLowerHalfSpace==
false || interiorPoint[0].
sign()<0)
1884 for (
int i=1;
i<r-1;
i++)
1891 interiorPoint =
facet.getRelativeInteriorPoint();
1892 if (onlyLowerHalfSpace==
false || interiorPoint[0].
sign()<0)
1907 interiorPoint =
facet.getRelativeInteriorPoint();
1908 if (onlyLowerHalfSpace==
false || interiorPoint[0].
sign()<0)
1933 fprintf(
dd->f_write,
"%d %d ",
M.getHeight(),
M.getWidth());
1935 for (
int i=0;
i<
M.getHeight();
i++)
1937 for (
int j=0;
j<
M.getWidth();
j++)
1951 l.data=(
void*)
"cone";
1955 fprintf(
dd->f_write,
"%d ",
Z->areImpliedEquationsKnown()+
Z->areFacetsKnown()*2);
1983 for (
int i=0;
i<r;
i++)
1985 for (
int j=0;
j<c;
j++)
2021 int d1 =
zc1->ambientDimension();
2022 int d2 =
zc2->ambientDimension();
2025 Werror(
"expected ambient dims of both cones to coincide\n"
2026 "but got %d and %d",
d1,
d2);
2040 int d1 =
zc1.ambientDimension();
2041 int d2 =
zc2->ambientDimension();
2044 Werror(
"expected ambient dims of both cones to coincide\n"
2045 "but got %d and %d",
d1,
d2);
2063 int d1 =
zc1->ambientDimension();
2064 int d2 =
zc2.ambientDimension();
2067 Werror(
"expected ambient dims of both cones to coincide\n"
2068 "but got %d and %d",
d1,
d2);
2081 int d1 =
zc1->ambientDimension();
2082 int d2 =
zc2->ambientDimension();
2085 Werror(
"expected ambient dims of both cones to coincide\n"
2086 "but got %d and %d",
d1,
d2);
2096 WerrorS(
"convexIntersectionOld: unexpected parameters");
BOOLEAN getMultiplicity(leftv res, leftv args)
BOOLEAN convexHull(leftv res, leftv args)
BOOLEAN isFullSpace(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)
void * bbcone_Init(blackbox *)
std::pair< gfan::ZMatrix, gfan::ZMatrix > interiorPointsAndNormalsOfFacets(const gfan::ZCone zc, const std::set< gfan::ZVector > &exceptThesePoints, const bool onlyLowerHalfSpace)
BOOLEAN onesVector(leftv res, leftv args)
BOOLEAN convexIntersectionOld(leftv res, leftv args)
BOOLEAN getLinearForms(leftv res, leftv args)
BOOLEAN codimension(leftv res, leftv args)
int siRandBound(const int b)
void bbcone_destroy(blackbox *, void *d)
BOOLEAN facets(leftv res, leftv args)
BOOLEAN impliedEquations(leftv res, leftv args)
BOOLEAN uniquePoint(leftv res, leftv args)
BOOLEAN isSimplicial(leftv res, leftv args)
static BOOLEAN jjCONENORMALS1(leftv res, leftv v)
BOOLEAN ambientDimension(leftv res, leftv args)
static gfan::ZMatrix gfanZMatrixReadFd(ssiInfo *dd)
BOOLEAN bbcone_Assign(leftv l, leftv r)
BOOLEAN coneLink(leftv res, leftv args)
BOOLEAN containsCone(leftv res, leftv args)
void bbcone_setup(SModulFunctions *p)
BOOLEAN negatedCone(leftv res, leftv args)
BOOLEAN generatorsOfSpan(leftv res, leftv args)
gfan::ZMatrix interiorPointsOfFacets(const gfan::ZCone &zc, const std::set< gfan::ZVector > &exceptThese)
static void gfanZMatrixWriteFd(gfan::ZMatrix M, ssiInfo *dd)
BOOLEAN equations(leftv res, leftv args)
char * bbcone_String(blackbox *, void *d)
static gfan::Integer gfanIntegerReadFd(ssiInfo *dd)
BOOLEAN containsRelatively(leftv res, leftv args)
static BOOLEAN jjCONERAYS3(leftv res, leftv u, leftv v, leftv w)
BOOLEAN containsPositiveVector(leftv res, leftv args)
static BOOLEAN jjCONERAYS1(leftv res, leftv v)
BOOLEAN semigroupGenerator(leftv res, leftv args)
BOOLEAN dimension(leftv res, leftv args)
BOOLEAN coneViaNormals(leftv res, leftv args)
BOOLEAN faceContaining(leftv res, leftv args)
BOOLEAN setMultiplicity(leftv res, leftv args)
BOOLEAN bbcone_serialize(blackbox *b, void *d, si_link f)
static BOOLEAN jjCONENORMALS3(leftv res, leftv u, leftv v, leftv w)
BOOLEAN generatorsOfLinealitySpace(leftv res, leftv args)
BOOLEAN containsInSupport(leftv res, leftv args)
BOOLEAN coneToPolytope(leftv res, leftv args)
void * bbcone_Copy(blackbox *, void *d)
BOOLEAN dualCone(leftv res, leftv args)
BOOLEAN isOrigin(leftv res, leftv args)
gfan::ZVector randomPoint(const gfan::ZCone *zc, const int b)
BOOLEAN inequalities(leftv res, leftv args)
BOOLEAN setLinearForms(leftv res, leftv args)
BOOLEAN linealityDimension(leftv res, leftv args)
gfan::ZMatrix liftUp(const gfan::ZMatrix &zm)
BOOLEAN hasFace(leftv res, leftv args)
BOOLEAN relativeInteriorPoint(leftv res, leftv args)
static void gfanIntegerWriteFd(gfan::Integer n, ssiInfo *dd)
static BOOLEAN bbcone_Op2(int op, leftv res, leftv i1, leftv i2)
static BOOLEAN jjCONENORMALS2(leftv res, leftv u, leftv v)
BOOLEAN rays(leftv res, leftv args)
BOOLEAN linealitySpace(leftv res, leftv args)
BOOLEAN coneViaRays(leftv res, leftv args)
static BOOLEAN jjCONERAYS2(leftv res, leftv u, leftv v)
BOOLEAN intersectCones(leftv res, leftv args)
std::string toString(const gfan::ZCone *const c)
int getDimension(gfan::ZFan *zf)
int getCodimension(gfan::ZFan *zf)
int getLinealityDimension(gfan::ZFan *zf)
int getAmbientDimension(gfan::ZFan *zf)
bigintmat * iv2bim(intvec *b, const coeffs C)
int setBlackboxStuff(blackbox *bb, const char *n)
define a new type
BOOLEAN blackboxDefaultOp2(int, leftv, leftv, leftv)
default procedure blackboxDefaultOp2, to be called as "default:" branch
number integerToNumber(const gfan::Integer &I)
bigintmat * zMatrixToBigintmat(const gfan::ZMatrix &zm)
gfan::ZMatrix * bigintmatToZMatrix(const bigintmat &bim)
bigintmat * zVectorToBigintmat(const gfan::ZVector &zv)
gfan::ZVector * bigintmatToZVector(const bigintmat &bim)
Class used for (list of) interpreter objects.
const CanonicalForm int s
const Variable & v
< [in] a sqrfree bivariate poly
void WerrorS(const char *s)
void Werror(const char *fmt,...)
void s_readmpz_base(s_buff F, mpz_ptr a, int base)