51 #ifndef ABC__bdd__cudd__cuddInt_h
52 #define ABC__bdd__cudd__cuddInt_h
80 # define DD_INLINE __inline__
81 # if (__GNUC__ >2 || __GNUC_MINOR__ >=7)
82 # define DD_UNUSED __attribute__ ((__unused__))
87 # if defined(__cplusplus)
88 # define DD_INLINE inline
100 #define DD_MAXREF ((DdHalfWord) ~0)
102 #define DD_DEFAULT_RESIZE 10
104 #define DD_MEM_CHUNK 1022
107 #define DD_ONE_VAL (1.0)
108 #define DD_ZERO_VAL (0.0)
109 #define DD_EPSILON (1.0e-12)
115 # define DD_PLUS_INF_VAL (HUGE_VAL)
117 # define DD_PLUS_INF_VAL (10e301)
118 # define DD_CRI_HI_MARK (10e150)
119 # define DD_CRI_LO_MARK (-(DD_CRI_HI_MARK))
121 #define DD_MINUS_INF_VAL (-(DD_PLUS_INF_VAL))
123 #define DD_NON_CONSTANT ((DdNode *) 1)
126 #define DD_MAX_SUBTABLE_DENSITY 4
133 #define DD_GC_FRAC_LO DD_MAX_SUBTABLE_DENSITY * 0.25
134 #define DD_GC_FRAC_HI DD_MAX_SUBTABLE_DENSITY * 1.0
135 #define DD_GC_FRAC_MIN 0.2
136 #define DD_MIN_HIT 30
138 #define DD_MAX_LOOSE_FRACTION 5
140 #define DD_MAX_CACHE_FRACTION 3
142 #define DD_STASH_FRACTION 64
144 #define DD_MAX_CACHE_TO_SLOTS_RATIO 4
147 #define DD_SIFT_MAX_VAR 1000
148 #define DD_SIFT_MAX_SWAPS 2000000
149 #define DD_DEFAULT_RECOMB 0
150 #define DD_MAX_REORDER_GROWTH 1.1
151 #define DD_FIRST_REORDER 4004
152 #define DD_DYN_RATIO 2
155 #define DD_P1 12582917
156 #define DD_P2 4256249
158 #define DD_P4 1618033999
172 #define DD_ADD_ITE_TAG 0x02
173 #define DD_BDD_AND_ABSTRACT_TAG 0x06
174 #define DD_BDD_XOR_EXIST_ABSTRACT_TAG 0x0a
175 #define DD_BDD_ITE_TAG 0x0e
176 #define DD_ADD_BDD_DO_INTERVAL_TAG 0x22
177 #define DD_BDD_CLIPPING_AND_ABSTRACT_UP_TAG 0x26
178 #define DD_BDD_CLIPPING_AND_ABSTRACT_DOWN_TAG 0x2a
179 #define DD_BDD_COMPOSE_RECUR_TAG 0x2e
180 #define DD_ADD_COMPOSE_RECUR_TAG 0x42
181 #define DD_ADD_NON_SIM_COMPOSE_TAG 0x46
182 #define DD_EQUIV_DC_TAG 0x4a
183 #define DD_ZDD_ITE_TAG 0x4e
184 #define DD_ADD_ITE_CONSTANT_TAG 0x62
185 #define DD_ADD_EVAL_CONST_TAG 0x66
186 #define DD_BDD_ITE_CONSTANT_TAG 0x6a
187 #define DD_ADD_OUT_SUM_TAG 0x6e
188 #define DD_BDD_LEQ_UNLESS_TAG 0x82
189 #define DD_ADD_TRIANGLE_TAG 0x86
192 #define CUDD_GEN_CUBES 0
193 #define CUDD_GEN_PRIMES 1
194 #define CUDD_GEN_NODES 2
195 #define CUDD_GEN_ZDD_PATHS 3
196 #define CUDD_GEN_EMPTY 0
197 #define CUDD_GEN_NONEMPTY 1
224 #pragma pointer_size save
225 #pragma pointer_size short
229 #pragma pointer_size restore
264 #pragma pointer_size save
265 #pragma pointer_size short
273 #ifdef DD_CACHE_PROFILE
320 #ifdef DD_CACHE_PROFILE
400 #ifndef DD_NO_DEATH_ROW
434 #pragma pointer_size restore
444 #pragma pointer_size save
445 #pragma pointer_size short
466 #ifdef DD_UNIQUE_PROFILE
467 double uniqueLookUps;
471 double recursiveCalls;
522 #pragma pointer_size restore
547 #define cuddDeallocNode(unique,node) \
548 (node)->next = (unique)->nextFree; \
549 (unique)->nextFree = node;
564 #define cuddDeallocMove(unique,node) \
565 ((DdNode *)(node))->ref = 0; \
566 ((DdNode *)(node))->next = (unique)->nextFree; \
567 (unique)->nextFree = (DdNode *)(node);
584 #define cuddRef(n) cuddSatInc(Cudd_Regular(n)->ref)
604 #define cuddDeref(n) cuddSatDec(Cudd_Regular(n)->ref)
620 #define cuddIsConstant(node) ((node)->index == CUDD_CONST_INDEX)
636 #define cuddT(node) ((node)->type.kids.T)
652 #define cuddE(node) ((node)->type.kids.E)
668 #define cuddV(node) ((node)->type.value)
686 #define cuddI(dd,index) (((index)==CUDD_CONST_INDEX)?(int)(index):(dd)->perm[(index)])
704 #define cuddIZ(dd,index) (((index)==CUDD_CONST_INDEX)?(int)(index):(dd)->permZ[(index)])
718 #define cuddF2L(f) ((Cudd_Regular(f)->Id << 1) | Cudd_IsComplement(f))
732 #if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
733 #define ddHash(f,g,s) \
734 ((((unsigned)(ptruint)(f) * DD_P1 + \
735 (unsigned)(ptruint)(g)) * DD_P2) >> (s))
737 #define ddHash(f,g,s) \
738 ((((unsigned)(f) * DD_P1 + (unsigned)(g)) * DD_P2) >> (s))
778 #if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
779 #define ddCHash2(o,f,g,s) \
780 (((((unsigned)(ptruint)(f) + (unsigned)(ptruint)(o)) * DD_P1 + \
781 (unsigned)(ptruint)(g)) * DD_P2) >> (s))
782 #define ddCHash2_(o,f,g) \
783 (((((unsigned)(ptruint)(f) + (unsigned)(ptruint)(o)) * DD_P1 + \
784 (unsigned)(ptruint)(g)) * DD_P2))
786 #define ddCHash2(o,f,g,s) \
787 (((((unsigned)(f) + (unsigned)(o)) * DD_P1 + (unsigned)(g)) * DD_P2) >> (s))
788 #define ddCHash2_(o,f,g) \
789 (((((unsigned)(f) + (unsigned)(o)) * DD_P1 + (unsigned)(g)) * DD_P2))
804 #define cuddClean(p) ((DdNode *)((ptruint)(p) & ~0xf))
818 #define ddMin(x,y) (((y) < (x)) ? (y) : (x))
832 #define ddMax(x,y) (((y) > (x)) ? (y) : (x))
846 #define ddAbs(x) (((x)<0) ? -(x) : (x))
861 #define ddEqualVal(x,y,e) (ddAbs((x)-(y))<(e))
875 #if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
876 #define cuddSatInc(x) ((x)++)
878 #define cuddSatInc(x) ((x) += (x) != (DdHalfWord)DD_MAXREF)
893 #if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
894 #define cuddSatDec(x) ((x)--)
896 #define cuddSatDec(x) ((x) -= (x) != (DdHalfWord)DD_MAXREF)
911 #define DD_ONE(dd) ((dd)->one)
927 #define DD_ZERO(dd) ((dd)->zero)
941 #define DD_PLUS_INFINITY(dd) ((dd)->plusinfinity)
955 #define DD_MINUS_INFINITY(dd) ((dd)->minusinfinity)
977 #define cuddAdjust(x)
979 #define cuddAdjust(x) ((x) = ((x) >= DD_CRI_HI_MARK) ? DD_PLUS_INF_VAL : (((x) <= DD_CRI_LO_MARK) ? DD_MINUS_INF_VAL : (x)))
995 #define DD_LSDIGIT(x) ((x) & DD_APA_MASK)
1010 #define DD_MSDIGIT(x) ((x) >> DD_APA_BITS)
1028 #define statLine(dd) dd->recursiveCalls++; \
1029 if (dd->recursiveCalls == dd->nextSample) {(void) fprintf(dd->err, \
1030 "@%.0f: %u nodes %u live %.0f dropped %.0f reclaimed\n", dd->recursiveCalls, \
1031 dd->keys, dd->keys - dd->dead, dd->nodesDropped, dd->reclaimed); \
1032 dd->nextSample += 250000;}
1034 #define statLine(dd) dd->recursiveCalls++;
1037 #define statLine(dd)
1118 #ifdef DD_CACHE_PROFILE
1119 extern int cuddLocalCacheProfile(
DdLocalCache * cache );
1166 extern DdManager *
cuddInitTable(
unsigned int numVars,
unsigned int numVarsZ,
unsigned int numSlots,
unsigned int looseUpTo );
DdNode * cuddZddGetNodeIVO(DdManager *dd, int index, DdNode *g, DdNode *h)
void cuddShrinkSubtable(DdManager *unique, int i)
Cudd_AggregationType groupcheck
void cuddLevelQueueDequeue(DdLevelQueue *queue, int level)
DdNode * cuddSubsetShortPaths(DdManager *dd, DdNode *f, int numVars, int threshold, int hardlimit)
DdNode * cuddAddCmplRecur(DdManager *dd, DdNode *f)
void cuddZddFreeUniv(DdManager *zdd)
unsigned short DdHalfWord
DdNode * cuddCacheLookup1Zdd(DdManager *table, DdNode *(*)(DdManager *, DdNode *), DdNode *f)
int(* DD_HFP)(DdManager *, const char *, void *)
DdNode * cuddBddLICompaction(DdManager *dd, DdNode *f, DdNode *c)
DdNode * cuddBddExistAbstractRecur(DdManager *manager, DdNode *f, DdNode *cube)
DdNode * cuddBddBooleanDiffRecur(DdManager *manager, DdNode *f, DdNode *var)
Cudd_ReorderingType autoMethod
void cuddRehash(DdManager *unique, int i)
unsigned int peakLiveNodes
DdNode * cuddBddXorExistAbstractRecur(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube)
int cuddInitLinear(DdManager *table)
DdNode * cuddAddMonadicApplyRecur(DdManager *dd, DdNode *(*)(DdManager *, DdNode *), DdNode *f)
DdNode * cuddZddGetNode(DdManager *zdd, int id, DdNode *T, DdNode *E)
DdNode * cuddBddComposeRecur(DdManager *dd, DdNode *f, DdNode *g, DdNode *proj)
DdNode * cuddVerifySol(DdManager *bdd, DdNode *F, DdNode **G, int *yIndex, int n)
DdNode * cuddSubsetHeavyBranch(DdManager *dd, DdNode *f, int numVars, int threshold)
int cuddAnnealing(DdManager *table, int lower, int upper)
DdHook * preReorderingHook
struct DdGen::@30::@32 cubes
DdNode * cuddUniqueConst(DdManager *unique, CUDD_VALUE_TYPE value)
DdNode * cuddCacheLookup1(DdManager *table, DdNode *(*)(DdManager *, DdNode *), DdNode *f)
DdNode * cuddCacheLookup2(DdManager *table, DdNode *(*)(DdManager *, DdNode *, DdNode *), DdNode *f, DdNode *g)
DdNode * cuddZddWeakDivF(DdManager *dd, DdNode *f, DdNode *g)
unsigned int maxCacheHard
int cuddZddGetNegVarLevel(DdManager *dd, int index)
int cuddResizeLinear(DdManager *table)
void cuddSetInteract(DdManager *table, int x, int y)
int cuddInitInteract(DdManager *table)
void cuddReclaim(DdManager *table, DdNode *n)
int cuddNextLow(DdManager *table, int x)
enum st__retval cuddStCountfree(char *key, char *value, char *arg)
int cuddZddGetNegVarIndex(DdManager *dd, int index)
int cuddSifting(DdManager *table, int lower, int upper)
DdNode * cuddCProjectionRecur(DdManager *dd, DdNode *R, DdNode *Y, DdNode *Ysupp)
DdNode * cuddBddClippingAndAbstract(DdManager *dd, DdNode *f, DdNode *g, DdNode *cube, int maxDepth, int direction)
int cuddTimesInDeathRow(DdManager *dd, DdNode *f)
DdNode * cuddLocalCacheLookup(DdLocalCache *cache, DdNodePtr *key)
void cuddCacheInsert1(DdManager *table, DdNode *(*)(DdManager *, DdNode *), DdNode *f, DdNode *data)
struct DdLocalCacheItem DdLocalCacheItem
DdNode * cuddZddWeakDiv(DdManager *dd, DdNode *f, DdNode *g)
DdNode * cuddBddClippingAnd(DdManager *dd, DdNode *f, DdNode *g, int maxDepth, int direction)
int cuddCacheProfile(DdManager *table, FILE *fp)
int cuddZddSwapInPlace(DdManager *table, int x, int y)
DdNode * cuddCofactorRecur(DdManager *dd, DdNode *f, DdNode *g)
Cudd_ReorderingType autoMethodZ
void cuddLevelQueueQuit(DdLevelQueue *queue)
DdNode * cuddAddNegateRecur(DdManager *dd, DdNode *f)
DdNode * cuddZddChange(DdManager *dd, DdNode *P, int var)
void cuddPrintVarGroups(DdManager *dd, MtrNode *root, int zdd, int silent)
struct DdHashTable DdHashTable
int cuddCheckCube(DdManager *dd, DdNode *g)
struct DdSubtable DdSubtable
int cuddTreeSifting(DdManager *table, Cudd_ReorderingType method)
int cuddZddGetPosVarIndex(DdManager *dd, int index)
DdNode * cuddAddRoundOffRecur(DdManager *dd, DdNode *f, double trunc)
DdNode * cuddHashTableLookup1(DdHashTable *hash, DdNode *f)
int cuddSymmCheck(DdManager *table, int x, int y)
int cuddZddGetPosVarLevel(DdManager *dd, int index)
int cuddExact(DdManager *table, int lower, int upper)
struct DdQueueItem * next
struct DdLocalCache * next
void cuddCacheResize(DdManager *table)
int cuddSymmSiftingConv(DdManager *table, int lower, int upper)
int cuddHeapProfile(DdManager *dd)
DdNode * cuddHashTableLookup3(DdHashTable *hash, DdNode *f, DdNode *g, DdNode *h)
int cuddGarbageCollect(DdManager *unique, int clearCache)
void cuddLocalCacheInsert(DdLocalCache *cache, DdNodePtr *key, DdNode *value)
int cuddZddSymmSiftingConv(DdManager *table, int lower, int upper)
void * cuddLevelQueueEnqueue(DdLevelQueue *queue, void *key, int level)
Cudd_VariableType varType
DdLocalCache * cuddLocalCacheInit(DdManager *manager, unsigned int keySize, unsigned int cacheSize, unsigned int maxCacheSize)
int cuddZddLinearSifting(DdManager *table, int lower, int upper)
struct DdQueueItem DdQueueItem
DdNode * cuddAddUnivAbstractRecur(DdManager *manager, DdNode *f, DdNode *cube)
DdLevelQueue * cuddLevelQueueInit(int levels, int itemSize, int numBuckets)
DdNode * cuddAddBddDoPattern(DdManager *dd, DdNode *f)
DdNode * cuddBddIsop(DdManager *dd, DdNode *L, DdNode *U)
DdNode * cuddBddRestrictRecur(DdManager *dd, DdNode *f, DdNode *c)
void cuddLocalCacheClearAll(DdManager *manager)
DdNode * cuddZddProduct(DdManager *dd, DdNode *f, DdNode *g)
DdNode * cuddZddDiff(DdManager *zdd, DdNode *P, DdNode *Q)
DdNode * cuddBddTransfer(DdManager *ddS, DdManager *ddD, DdNode *f)
DdNode * cuddAddComposeRecur(DdManager *dd, DdNode *f, DdNode *g, DdNode *proj)
DdNode * cuddBddLiteralSetIntersectionRecur(DdManager *dd, DdNode *f, DdNode *g)
DdHook * postReorderingHook
int cuddResizeTableZdd(DdManager *unique, int index)
DdNode * cuddZddIntersect(DdManager *zdd, DdNode *P, DdNode *Q)
int cuddZddGetCofactors2(DdManager *dd, DdNode *f, int v, DdNode **f1, DdNode **f0)
DdNode * cuddAddExistAbstractRecur(DdManager *manager, DdNode *f, DdNode *cube)
void cuddSlowTableGrowth(DdManager *unique)
DdNode * cuddZddDivide(DdManager *dd, DdNode *f, DdNode *g)
DdNode * cuddUniqueInterIVO(DdManager *unique, int index, DdNode *T, DdNode *E)
Cudd_LazyGroupType varToBeGrouped
DdNode * cuddCacheLookupZdd(DdManager *table, ptruint op, DdNode *f, DdNode *g, DdNode *h)
int cuddInsertSubtables(DdManager *unique, int n, int level)
void cuddLocalCacheQuit(DdLocalCache *cache)
DdNode * cuddZddIsop(DdManager *dd, DdNode *L, DdNode *U, DdNode **zdd_I)
DdNode * cuddZddIte(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
DdNode * cuddAddApplyRecur(DdManager *dd, DdNode *(*)(DdManager *, DdNode **, DdNode **), DdNode *f, DdNode *g)
DdNode * cuddMakeBddFromZddCover(DdManager *dd, DdNode *node)
struct DdHashItem DdHashItem
DdNode * cuddBiasedUnderApprox(DdManager *dd, DdNode *f, DdNode *b, int numVars, int threshold, double quality1, double quality0)
DdNode * cuddSolveEqnRecur(DdManager *bdd, DdNode *F, DdNode *Y, DdNode **G, int n, int *yIndex, int i)
DdNode * cuddAddScalarInverseRecur(DdManager *dd, DdNode *f, DdNode *epsilon)
int cuddHashTableInsert(DdHashTable *hash, DdNodePtr *key, DdNode *value, ptrint count)
static uint32_t hash(uint32_t x)
int cuddZddSifting(DdManager *table, int lower, int upper)
DdNode * cuddAddConstrainRecur(DdManager *dd, DdNode *f, DdNode *c)
DdNode * cuddUniqueInterZdd(DdManager *unique, int index, DdNode *T, DdNode *E)
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
int cuddZddSymmCheck(DdManager *table, int x, int y)
int cuddZddNextHigh(DdManager *table, int x)
DdNode * cuddAddRestrictRecur(DdManager *dd, DdNode *f, DdNode *c)
DdLocalCache * localCaches
DdNode * cuddBddIteRecur(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
void cuddHashTableQuit(DdHashTable *hash)
DdNode * cuddAddOrAbstractRecur(DdManager *manager, DdNode *f, DdNode *cube)
int cuddZddGetCofactors3(DdManager *dd, DdNode *f, int v, DdNode **f1, DdNode **f0, DdNode **fd)
int cuddWindowReorder(DdManager *table, int low, int high, Cudd_ReorderingType submethod)
DdNode * cuddDynamicAllocNode(DdManager *table)
void cuddLocalCacheClearDead(DdManager *manager)
#define ABC_NAMESPACE_HEADER_END
void cuddReclaimZdd(DdManager *table, DdNode *n)
DdManager * cuddInitTable(unsigned int numVars, unsigned int numVarsZ, unsigned int numSlots, unsigned int looseUpTo)
DdNode * cuddCacheLookup2Zdd(DdManager *table, DdNode *(*)(DdManager *, DdNode *, DdNode *), DdNode *f, DdNode *g)
int cuddHashTableInsert2(DdHashTable *hash, DdNode *f, DdNode *g, DdNode *value, ptrint count)
int cuddSwapping(DdManager *table, int lower, int upper, Cudd_ReorderingType heuristic)
int cuddIsInDeathRow(DdManager *dd, DdNode *f)
int cuddLinearInPlace(DdManager *table, int x, int y)
DdNode * cuddBddConstrainRecur(DdManager *dd, DdNode *f, DdNode *c)
int cuddZddInitUniv(DdManager *zdd)
int cuddNextHigh(DdManager *table, int x)
DdNode * cuddZddUnateProduct(DdManager *dd, DdNode *f, DdNode *g)
DdNode * cuddRemapUnderApprox(DdManager *dd, DdNode *f, int numVars, int threshold, double quality)
int cuddGa(DdManager *table, int lower, int upper)
DdNode * cuddBddAndRecur(DdManager *manager, DdNode *f, DdNode *g)
DdNode * cuddZddSubset1(DdManager *dd, DdNode *P, int var)
int cuddZddSymmSifting(DdManager *table, int lower, int upper)
struct DdLevelQueue DdLevelQueue
DdNode * cuddZddUnion(DdManager *zdd, DdNode *P, DdNode *Q)
DdNode * cuddCacheLookup(DdManager *table, ptruint op, DdNode *f, DdNode *g, DdNode *h)
int cuddSwapInPlace(DdManager *table, int x, int y)
DdNode * cuddBddClosestCube(DdManager *dd, DdNode *f, DdNode *g, CUDD_VALUE_TYPE bound)
void cuddCacheFlush(DdManager *table)
int cuddHashTableInsert1(DdHashTable *hash, DdNode *f, DdNode *value, ptrint count)
DdNode * cuddBddNPAndRecur(DdManager *dd, DdNode *f, DdNode *c)
DdNode * cuddBddMakePrime(DdManager *dd, DdNode *cube, DdNode *f)
void cuddGetBranches(DdNode *g, DdNode **g1, DdNode **g0)
DdNode * cuddUnderApprox(DdManager *dd, DdNode *f, int numVars, int threshold, int safe, double quality)
void cuddClearDeathRow(DdManager *table)
DdNode * cuddAddIteRecur(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
void cuddCacheInsert2(DdManager *table, DdNode *(*)(DdManager *, DdNode *, DdNode *), DdNode *f, DdNode *g, DdNode *data)
struct DdGen::@30::@33 primes
DdNodePtr * cuddNodeArray(DdNode *f, int *n)
DdNode * cuddHashTableLookup2(DdHashTable *hash, DdNode *f, DdNode *g)
DdNode * cuddConstantLookup(DdManager *table, ptruint op, DdNode *f, DdNode *g, DdNode *h)
DdNode * cuddZddChangeAux(DdManager *zdd, DdNode *P, DdNode *zvar)
int cuddZddSwapping(DdManager *table, int lower, int upper, Cudd_ReorderingType heuristic)
int cuddZddTreeSifting(DdManager *table, Cudd_ReorderingType method)
int cuddP(DdManager *dd, DdNode *f)
DdNode * cuddHashTableLookup(DdHashTable *hash, DdNodePtr *key)
DdNode * cuddBddXorRecur(DdManager *manager, DdNode *f, DdNode *g)
void cuddPrintNode(DdNode *f, FILE *fp)
DdNode * cuddAllocNode(DdManager *unique)
int cuddCollectNodes(DdNode *f, st__table *visited)
int cuddZddAlignToBdd(DdManager *table)
struct DdGen::@30::@34 nodes
struct DdLocalCache DdLocalCache
DdHashTable * cuddHashTableInit(DdManager *manager, unsigned int keySize, unsigned int initSize)
void cuddUpdateInteractionMatrix(DdManager *table, int xindex, int yindex)
DdNode * cuddZddSubset0(DdManager *dd, DdNode *P, int var)
DdNode * cuddZddDivideF(DdManager *dd, DdNode *f, DdNode *g)
DdNode * cuddBddIntersectRecur(DdManager *dd, DdNode *f, DdNode *g)
int cuddComputeFloorLog2(unsigned int value)
void cuddCacheInsert(DdManager *table, ptruint op, DdNode *f, DdNode *g, DdNode *h, DdNode *data)
int cuddLinearAndSifting(DdManager *table, int lower, int upper)
void cuddFreeTable(DdManager *unique)
int cuddTestInteract(DdManager *table, int x, int y)
int cuddBddAlignToZdd(DdManager *table)
DdNode * cuddBddAndAbstractRecur(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube)
void cuddShrinkDeathRow(DdManager *table)
int cuddInitCache(DdManager *unique, unsigned int cacheSize, unsigned int maxCacheSize)
struct DdQueueItem * cnext
int cuddSymmSifting(DdManager *table, int lower, int upper)
DdNode * cuddSplitSetRecur(DdManager *manager, st__table *mtable, int *varSeen, DdNode *p, double n, double max, int index)
int cuddZddUniqueCompare(int *ptr_x, int *ptr_y)
int cuddZddNextLow(DdManager *table, int x)
DdNode * cuddUniqueInter(DdManager *unique, int index, DdNode *T, DdNode *E)
int cuddDestroySubtables(DdManager *unique, int n)
int cuddZddP(DdManager *zdd, DdNode *f)
DdNode * cuddZddComplement(DdManager *dd, DdNode *node)
int cuddHashTableInsert3(DdHashTable *hash, DdNode *f, DdNode *g, DdNode *h, DdNode *value, ptrint count)