Functions | Variables
bbfan.h File Reference
#include <kernel/mod2.h>
#include <Singular/ipid.h>
#include <gfanlib/gfanlib.h>

Go to the source code of this file.

Functions

void bbfan_setup (SModulFunctions *p)
 
bool isCompatible (const gfan::ZFan *zf, const gfan::ZCone *zc)
 
int getAmbientDimension (gfan::ZFan *zf)
 
int getCodimension (gfan::ZFan *zf)
 
int getDimension (gfan::ZFan *zf)
 
int getLinealityDimension (gfan::ZFan *zf)
 
int isSimplicial (gfan::ZFan *zf)
 
gfan::Matrix< gfan::Integer > rays (const gfan::ZFan *const zf)
 
gfan::ZFan commonRefinement (gfan::ZFan zf, gfan::ZFan zg)
 

Variables

int fanID
 

Function Documentation

void bbfan_setup ( SModulFunctions p)

Definition at line 1059 of file bbfan.cc.

1060 {
1061  blackbox *b=(blackbox*)omAlloc0(sizeof(blackbox));
1062  // all undefined entries will be set to default in setBlackboxStuff
1063  // the default Print is quite usefule,
1064  // all other are simply error messages
1065  b->blackbox_destroy=bbfan_destroy;
1066  b->blackbox_String=bbfan_String;
1067  //b->blackbox_Print=blackbox_default_Print;
1068  b->blackbox_Init=bbfan_Init;
1069  b->blackbox_Copy=bbfan_Copy;
1070  b->blackbox_Assign=bbfan_Assign;
1071  b->blackbox_serialize=bbfan_serialize;
1072  b->blackbox_deserialize=bbfan_deserialize;
1073  p->iiAddCproc("","emptyFan",FALSE,emptyFan);
1074  p->iiAddCproc("","fullFan",FALSE,fullFan);
1075  /* the following functions are implemented in bbcone.cc */
1076  // iiAddCproc("","containsInSupport",FALSE,containsInSupport);
1077  // iiAddCproc("","getAmbientDimension",FALSE,getAmbientDimension);
1078  // iiAddCproc("","getCodimension",FALSE,getDimension);
1079  // iiAddCproc("","getDimension",FALSE,getDimension);
1080  // iiAddCproc("","getLinealityDimension",FALSE,getLinealityDimension);
1081  // iiAddCproc("","isSimplicial",FALSE,isSimplicial);
1082  /********************************************************/
1083  p->iiAddCproc("","isCompatible",FALSE,isCompatible);
1084  p->iiAddCproc("","numberOfConesOfDimension",FALSE,numberOfConesOfDimension);
1085  p->iiAddCproc("","ncones",FALSE,ncones);
1086  p->iiAddCproc("","nmaxcones",FALSE,nmaxcones);
1087  p->iiAddCproc("","insertCone",FALSE,insertCone);
1088  p->iiAddCproc("","removeCone",FALSE,removeCone);
1089  p->iiAddCproc("","getCone",FALSE,getCone);
1090  p->iiAddCproc("","getCones",FALSE,getCones);
1091  p->iiAddCproc("","isPure",FALSE,isPure);
1092  p->iiAddCproc("","fanFromString",FALSE,fanFromString);
1093  p->iiAddCproc("","fanViaCones",FALSE,fanViaCones);
1094  p->iiAddCproc("","numberOfConesWithVector",FALSE,numberOfConesWithVector);
1095  // iiAddCproc("","isComplete",FALSE,isComplete); not working as expected, should leave this to polymake
1096  p->iiAddCproc("","fVector",FALSE,fVector);
1097  p->iiAddCproc("","containsInCollection",FALSE,containsInCollection);
1098  // p->iiAddCproc("","tropicalVariety",FALSE,tropicalVariety);
1099  p->iiAddCproc("","commonRefinement",FALSE,commonRefinement);
1100  // iiAddCproc("","grFan",FALSE,grFan);
1101  fanID=setBlackboxStuff(b,"fan");
1102  //Print("created type %d (fan)\n",fanID);
1103 }
char * bbfan_String(blackbox *, void *d)
Definition: bbfan.cc:36
#define FALSE
Definition: auxiliary.h:140
BOOLEAN numberOfConesOfDimension(leftv res, leftv args)
Definition: bbfan.cc:264
BOOLEAN nmaxcones(leftv res, leftv args)
Definition: bbfan.cc:328
bool isCompatible(const gfan::ZFan *zf, const gfan::ZCone *zc)
Definition: bbfan.cc:347
void * bbfan_Init(blackbox *)
Definition: bbfan.cc:22
BOOLEAN fullFan(leftv res, leftv args)
Definition: bbfan.cc:227
BOOLEAN bbfan_Assign(leftv l, leftv r)
Definition: bbfan.cc:70
BOOLEAN emptyFan(leftv res, leftv args)
Definition: bbfan.cc:175
BOOLEAN fanViaCones(leftv res, leftv args)
Definition: bbfan.cc:803
int fanID
Definition: bbfan.cc:20
void * bbfan_Copy(blackbox *, void *d)
Definition: bbfan.cc:63
BOOLEAN bbfan_deserialize(blackbox **b, void **d, si_link f)
Definition: bbfan.cc:1040
BOOLEAN getCone(leftv res, leftv args)
Definition: bbfan.cc:537
BOOLEAN fanFromString(leftv res, leftv args)
Definition: bbfan.cc:787
BOOLEAN ncones(leftv res, leftv args)
Definition: bbfan.cc:308
int numberOfConesWithVector(gfan::ZFan *zf, gfan::ZVector *v)
Definition: bbfan.cc:742
BOOLEAN insertCone(leftv res, leftv args)
Definition: bbfan.cc:386
BOOLEAN fVector(leftv res, leftv args)
Definition: bbfan.cc:716
bool containsInCollection(gfan::ZFan *zf, gfan::ZCone *zc)
Definition: bbfan.cc:423
BOOLEAN getCones(leftv res, leftv args)
Definition: bbfan.cc:612
BOOLEAN isPure(leftv res, leftv args)
Definition: bbfan.cc:686
gfan::ZFan commonRefinement(gfan::ZFan zf, gfan::ZFan zg)
Definition: bbfan.cc:927
BOOLEAN removeCone(leftv res, leftv args)
Definition: bbfan.cc:501
BOOLEAN bbfan_serialize(blackbox *b, void *d, si_link f)
Definition: bbfan.cc:1021
int(* iiAddCproc)(const char *libname, const char *procname, BOOLEAN pstatic, BOOLEAN(*func)(leftv res, leftv v))
Definition: ipid.h:73
int setBlackboxStuff(blackbox *bb, const char *n)
define a new type
Definition: blackbox.cc:128
const poly b
Definition: syzextra.cc:213
void bbfan_destroy(blackbox *, void *d)
Definition: bbfan.cc:27
#define omAlloc0(size)
Definition: omAllocDecl.h:211
gfan::ZFan commonRefinement ( gfan::ZFan  zf,
gfan::ZFan  zg 
)

Definition at line 927 of file bbfan.cc.

928 {
929  assume(zf.getAmbientDimension() == zg.getAmbientDimension());
930 
931  // gather all maximal cones of f and g
932  std::list<gfan::ZCone> maximalConesOfF;
933  for (int d=0; d<=zf.getAmbientDimension(); d++)
934  for (int i=0; i<zf.numberOfConesOfDimension(d,0,1); i++)
935  maximalConesOfF.push_back(zf.getCone(d,i,0,1));
936 
937  std::list<gfan::ZCone> maximalConesOfG;
938  for (int d=0; d<=zg.getAmbientDimension(); d++)
939  for (int i=0; i<zg.numberOfConesOfDimension(d,0,1); i++)
940  maximalConesOfG.push_back(zg.getCone(d,i,0,1));
941 
942  // construct a new fan out of their intersections
943  gfan::ZFan zr = gfan::ZFan(zf.getAmbientDimension());
944  for (std::list<gfan::ZCone>::iterator itf=maximalConesOfF.begin();
945  itf != maximalConesOfF.end(); itf++)
946  for (std::list<gfan::ZCone>::iterator itg=maximalConesOfG.begin();
947  itg != maximalConesOfG.end(); itg++)
948  zr.insert(intersection(*itf,*itg));
949 
950  return zr;
951 }
#define assume(x)
Definition: mod2.h:405
int i
Definition: cfEzgcd.cc:123
int getAmbientDimension ( gfan::ZFan *  zf)

Definition at line 244 of file bbfan.cc.

245 {
246  return zf->getAmbientDimension();
247 }
int getCodimension ( gfan::ZFan *  zf)

Definition at line 249 of file bbfan.cc.

250 {
251  return zf->getCodimension();
252 }
int getDimension ( gfan::ZFan *  zf)

Definition at line 254 of file bbfan.cc.

255 {
256  return zf->getDimension();
257 }
int getLinealityDimension ( gfan::ZFan *  zf)

Definition at line 259 of file bbfan.cc.

260 {
261  return zf->getLinealityDimension();
262 }
bool isCompatible ( const gfan::ZFan *  zf,
const gfan::ZCone *  zc 
)

Definition at line 347 of file bbfan.cc.

348 {
349  bool b = (zf->getAmbientDimension() == zc->ambientDimension());
350  if(b)
351  {
352  for (int d=0; d<=zf->getAmbientDimension(); d++)
353  {
354  for (int i=0; i<zf->numberOfConesOfDimension(d,0,1); i++)
355  {
356  gfan::ZCone zd = zf->getCone(d,i,0,1);
357  gfan::ZCone zt = gfan::intersection(*zc,zd);
358  zt.canonicalize();
359  b = b && zd.hasFace(zt);
360  }
361  }
362  }
363  return b;
364 }
int i
Definition: cfEzgcd.cc:123
const poly b
Definition: syzextra.cc:213
int isSimplicial ( gfan::ZFan *  zf)

Definition at line 680 of file bbfan.cc.

681 {
682  int i = zf->isSimplicial() ? 1 : 0;
683  return i;
684 }
int i
Definition: cfEzgcd.cc:123
gfan::Matrix<gfan::Integer> rays ( const gfan::ZFan *const  zf)

Definition at line 731 of file bbfan.cc.

732 {
733  gfan::ZMatrix rays(0,zf->getAmbientDimension());
734  for (int i=0; i<zf->numberOfConesOfDimension(1,0,0); i++)
735  {
736  gfan::ZCone zc = zf->getCone(1, i, 0, 0);
737  rays.append(zc.extremeRays());
738  }
739  return rays;
740 }
gfan::ZMatrix rays(const gfan::ZFan *const zf)
Definition: bbfan.cc:731
int i
Definition: cfEzgcd.cc:123

Variable Documentation

int fanID

Definition at line 20 of file bbfan.cc.