218 static char rcsid[]
DD_UNUSED =
"$Id: cuddAPI.c,v 1.59 2009/02/19 16:14:14 fabio Exp $";
477 for (j = dd->
permZ[i] - 1; j >= 0; j--) {
528 if (multiplicity < 1)
return(0);
529 allnew = dd->
sizeZ == 0;
530 if (dd->
size * multiplicity > dd->
sizeZ) {
532 if (res == 0)
return(0);
536 for (i = 0; i < dd->
size; i++) {
537 for (j = 0; j < multiplicity; j++) {
538 dd->
permZ[i * multiplicity + j] =
539 dd->
perm[i] * multiplicity + j;
541 i * multiplicity + j;
544 for (i = 0; i < dd->
sizeZ; i++) {
549 if (permutation == NULL) {
553 for (i = 0; i < dd->
size; i++) {
554 for (j = 0; j < multiplicity; j++) {
555 permutation[i * multiplicity + j] =
556 dd->
invperm[i] * multiplicity + j;
559 for (i = dd->
size * multiplicity; i < dd->sizeZ; i++) {
564 if (res == 0)
return(0);
567 if (dd->
treeZ != NULL) {
570 if (dd->
tree != NULL) {
572 if (dd->
treeZ == NULL)
return(0);
573 }
else if (multiplicity > 1) {
575 if (dd->
treeZ == NULL)
return(0);
580 if (multiplicity > 1) {
593 for (i = 0; i < dd->
size; i++) {
594 vmask[i] = lmask[i] = 0;
599 if (res == 0)
return(0);
677 #ifndef DD_NO_DEATH_ROW
1016 return(i < dd->sizeZ ? dd->
univ[i] :
DD_ONE(dd));
1178 unsigned long used = 0;
1183 for (i = 0; i < slots; i++) {
1184 used += cache[i].
h != 0;
1187 return((
double)used / (
double) dd->
cacheSlots);
1250 return(dd->recursiveCalls);
1277 return((
unsigned int) (0.5 + 100 * dd->
minHit / (1 + dd->
minHit)));
1304 dd->
minHit = (double) hr / (100.0 - (
double) hr);
1351 lut = (
unsigned int) (datalimit / (
sizeof(
DdNode) *
1421 mc = (
unsigned int) (datalimit / (
sizeof(
DdCache) *
1506 unsigned long used = 0;
1515 for (i = 0; i <
size; i++) {
1518 for (j = 0; (unsigned) j < subtable->slots; j++) {
1520 if (node != sentinel) {
1529 for (i = 0; i <
size; i++) {
1532 for (j = 0; (unsigned) j < subtable->slots; j++) {
1543 for (j = 0; (unsigned) j < subtable->slots; j++) {
1550 return((
double)used / (double) dd->
slots);
1588 for (i = 0; i <
size; i++) {
1590 empty += (double) subtable->
slots *
1591 exp(-(
double) subtable->
keys / (double) subtable->
slots);
1597 for (i = 0; i <
size; i++) {
1599 empty += (double) subtable->
slots *
1600 exp(-(
double) subtable->
keys / (double) subtable->
slots);
1605 empty += (double) subtable->
slots *
1606 exp(-(
double) subtable->
keys / (double) subtable->
slots);
1608 return(1.0 - empty / (
double) dd->
slots);
1788 return(dd->nodesFreed);
1814 return(dd->nodesDropped);
1839 #ifdef DD_UNIQUE_PROFILE
1840 return(dd->uniqueLookUps);
1868 #ifdef DD_UNIQUE_PROFILE
1869 return(dd->uniqueLinks);
2156 if (dd->
tree != NULL) {
2160 if (tree == NULL)
return;
2183 if (dd->
tree != NULL) {
2228 if (dd->
treeZ != NULL) {
2232 if (tree == NULL)
return;
2255 if (dd->
treeZ != NULL) {
2306 if (i < 0 || i >= dd->
size)
return(-1);
2307 return(dd->
perm[i]);
2333 if (i < 0 || i >= dd->
sizeZ)
return(-1);
2334 return(dd->
permZ[i]);
2359 if (i < 0 || i >= dd->
size)
return(-1);
2385 if (i < 0 || i >= dd->
sizeZ)
return(-1);
2411 if (i < 0 || i > dd->
size)
return(NULL);
2412 return(dd->
vars[i]);
2945 retval = fprintf(fp,
"**** CUDD modifiable parameters ****\n");
2946 if (retval == EOF)
return(0);
2947 retval = fprintf(fp,
"Hard limit for cache size: %u\n",
2949 if (retval == EOF)
return(0);
2950 retval = fprintf(fp,
"Cache hit threshold for resizing: %u%%\n",
2952 if (retval == EOF)
return(0);
2953 retval = fprintf(fp,
"Garbage collection enabled: %s\n",
2955 if (retval == EOF)
return(0);
2956 retval = fprintf(fp,
"Limit for fast unique table growth: %u\n",
2958 if (retval == EOF)
return(0);
2959 retval = fprintf(fp,
2960 "Maximum number of variables sifted per reordering: %d\n",
2962 if (retval == EOF)
return(0);
2963 retval = fprintf(fp,
2964 "Maximum number of variable swaps per reordering: %d\n",
2966 if (retval == EOF)
return(0);
2967 retval = fprintf(fp,
"Maximum growth while sifting a variable: %g\n",
2969 if (retval == EOF)
return(0);
2970 retval = fprintf(fp,
"Dynamic reordering of BDDs enabled: %s\n",
2972 if (retval == EOF)
return(0);
2973 retval = fprintf(fp,
"Default BDD reordering method: %d\n",
2975 if (retval == EOF)
return(0);
2976 retval = fprintf(fp,
"Dynamic reordering of ZDDs enabled: %s\n",
2978 if (retval == EOF)
return(0);
2979 retval = fprintf(fp,
"Default ZDD reordering method: %d\n",
2981 if (retval == EOF)
return(0);
2982 retval = fprintf(fp,
"Realignment of ZDDs to BDDs enabled: %s\n",
2984 if (retval == EOF)
return(0);
2985 retval = fprintf(fp,
"Realignment of BDDs to ZDDs enabled: %s\n",
2987 if (retval == EOF)
return(0);
2988 retval = fprintf(fp,
"Dead nodes counted in triggering reordering: %s\n",
2990 if (retval == EOF)
return(0);
2991 retval = fprintf(fp,
"Group checking criterion: %d\n",
2993 if (retval == EOF)
return(0);
2994 retval = fprintf(fp,
"Recombination threshold: %d\n",
Cudd_ReadRecomb(dd));
2995 if (retval == EOF)
return(0);
2996 retval = fprintf(fp,
"Symmetry violation threshold: %d\n",
2998 if (retval == EOF)
return(0);
2999 retval = fprintf(fp,
"Arc violation threshold: %d\n",
3001 if (retval == EOF)
return(0);
3002 retval = fprintf(fp,
"GA population size: %d\n",
3004 if (retval == EOF)
return(0);
3005 retval = fprintf(fp,
"Number of crossovers for GA: %d\n",
3007 if (retval == EOF)
return(0);
3008 retval = fprintf(fp,
"Next reordering threshold: %u\n",
3010 if (retval == EOF)
return(0);
3013 retval = fprintf(fp,
"**** CUDD non-modifiable parameters ****\n");
3014 if (retval == EOF)
return(0);
3016 if (retval == EOF)
return(0);
3017 retval = fprintf(fp,
"Peak number of nodes: %ld\n",
3019 if (retval == EOF)
return(0);
3020 retval = fprintf(fp,
"Peak number of live nodes: %d\n",
3022 if (retval == EOF)
return(0);
3023 retval = fprintf(fp,
"Number of BDD variables: %d\n", dd->
size);
3024 if (retval == EOF)
return(0);
3025 retval = fprintf(fp,
"Number of ZDD variables: %d\n", dd->
sizeZ);
3026 if (retval == EOF)
return(0);
3027 retval = fprintf(fp,
"Number of cache entries: %u\n", dd->
cacheSlots);
3028 if (retval == EOF)
return(0);
3029 retval = fprintf(fp,
"Number of cache look-ups: %.0f\n",
3031 if (retval == EOF)
return(0);
3032 retval = fprintf(fp,
"Number of cache hits: %.0f\n",
3034 if (retval == EOF)
return(0);
3035 retval = fprintf(fp,
"Number of cache insertions: %.0f\n",
3037 if (retval == EOF)
return(0);
3038 retval = fprintf(fp,
"Number of cache collisions: %.0f\n",
3040 if (retval == EOF)
return(0);
3041 retval = fprintf(fp,
"Number of cache deletions: %.0f\n",
3043 if (retval == EOF)
return(0);
3045 if (retval == 0)
return(0);
3046 retval = fprintf(fp,
"Soft limit for cache size: %u\n",
3048 if (retval == EOF)
return(0);
3049 retval = fprintf(fp,
"Number of buckets in unique table: %u\n", dd->
slots);
3050 if (retval == EOF)
return(0);
3051 retval = fprintf(fp,
"Used buckets in unique table: %.2f%% (expected %.2f%%)\n",
3054 if (retval == EOF)
return(0);
3055 #ifdef DD_UNIQUE_PROFILE
3056 retval = fprintf(fp,
"Unique lookups: %.0f\n", dd->uniqueLookUps);
3057 if (retval == EOF)
return(0);
3058 retval = fprintf(fp,
"Unique links: %.0f (%g per lookup)\n",
3059 dd->uniqueLinks, dd->uniqueLinks / dd->uniqueLookUps);
3060 if (retval == EOF)
return(0);
3062 retval = fprintf(fp,
"Number of BDD and ADD nodes: %u\n", dd->
keys);
3063 if (retval == EOF)
return(0);
3064 retval = fprintf(fp,
"Number of ZDD nodes: %u\n", dd->
keysZ);
3065 if (retval == EOF)
return(0);
3066 retval = fprintf(fp,
"Number of dead BDD and ADD nodes: %u\n", dd->
dead);
3067 if (retval == EOF)
return(0);
3068 retval = fprintf(fp,
"Number of dead ZDD nodes: %u\n", dd->
deadZ);
3069 if (retval == EOF)
return(0);
3070 retval = fprintf(fp,
"Total number of nodes allocated: %d\n", (
int)dd->
allocated);
3071 if (retval == EOF)
return(0);
3072 retval = fprintf(fp,
"Total number of nodes reclaimed: %.0f\n",
3074 if (retval == EOF)
return(0);
3076 retval = fprintf(fp,
"Nodes freed: %.0f\n", dd->nodesFreed);
3077 if (retval == EOF)
return(0);
3078 retval = fprintf(fp,
"Nodes dropped: %.0f\n", dd->nodesDropped);
3079 if (retval == EOF)
return(0);
3082 retval = fprintf(fp,
"Number of recursive calls: %.0f\n",
3084 if (retval == EOF)
return(0);
3086 retval = fprintf(fp,
"Garbage collections so far: %d\n",
3088 if (retval == EOF)
return(0);
3089 retval = fprintf(fp,
"Time for garbage collection: %.2f sec\n",
3091 if (retval == EOF)
return(0);
3092 retval = fprintf(fp,
"Reorderings so far: %d\n", dd->
reorderings);
3093 if (retval == EOF)
return(0);
3094 retval = fprintf(fp,
"Time for reordering: %.2f sec\n",
3096 if (retval == EOF)
return(0);
3098 retval = fprintf(fp,
"Node swaps in reordering: %.0f\n",
3100 if (retval == EOF)
return(0);
3128 while (scan != NULL) {
3154 unsigned int live = dd->
keys - dd->
dead;
3185 #ifndef DD_NO_DEATH_ROW
3189 count = (long) (dd->
keys - dd->
dead);
3194 for (i=0; i < dd->
size; i++) {
3195 if (dd->
vars[i]->
ref == 1) count--;
3198 if (
DD_ZERO(dd)->ref == 1) count--;
3249 DdHook **hook, *nextHook, *newHook;
3270 while (nextHook != NULL) {
3271 if (nextHook->
f == f) {
3274 hook = &(nextHook->
next);
3275 nextHook = nextHook->
next;
3280 if (newHook == NULL) {
3284 newHook->
next = NULL;
3311 DdHook **hook, *nextHook;
3330 while (nextHook != NULL) {
3331 if (nextHook->
f == f) {
3332 *hook = nextHook->
next;
3336 hook = &(nextHook->
next);
3337 nextHook = nextHook->
next;
3383 while (hook != NULL) {
3416 retval = fprintf(dd->
out,
"%s reordering with ", str);
3417 if (retval == EOF)
return(0);
3426 retval = fprintf(dd->
out,
"converging ");
3427 if (retval == EOF)
return(0);
3435 retval = fprintf(dd->
out,
"random");
3439 retval = fprintf(dd->
out,
"sifting");
3443 retval = fprintf(dd->
out,
"symmetric sifting");
3446 retval = fprintf(dd->
out,
"lazy sifting");
3450 retval = fprintf(dd->
out,
"group sifting");
3458 retval = fprintf(dd->
out,
"window");
3461 retval = fprintf(dd->
out,
"annealing");
3464 retval = fprintf(dd->
out,
"genetic");
3468 retval = fprintf(dd->
out,
"linear sifting");
3471 retval = fprintf(dd->
out,
"exact");
3476 if (retval == EOF)
return(0);
3478 retval = fprintf(dd->
out,
": from %ld to ... ",
strcmp(str,
"BDD") == 0 ?
3480 if (retval == EOF)
return(0);
3506 long initialTime = (long) data;
3509 double totalTimeSec = (double)(finalTime - initialTime) / 1000.0;
3511 retval = fprintf(dd->
out,
"%ld nodes in %g sec\n",
strcmp(str,
"BDD") == 0 ?
3514 if (retval == EOF)
return(0);
3515 retval = fflush(dd->
out);
3516 if (retval == EOF)
return(0);
3791 return(dd->swapSteps);
3835 unsigned int maxLive)
3878 unsigned long maxMemory)
3903 if (index >= dd->
size || index < 0)
return(0);
3931 if (index >= dd->
size || index < 0)
return(0);
3958 if (index >= dd->
size || index < 0)
return(0);
3981 if (index >= dd->
size || index < 0)
return (0);
4005 if (index >= dd->
size || index < 0)
return (0);
4029 if (index >= dd->
size || index < 0)
return (0);
4054 if (index >= dd->
size || index < 0)
return -1;
4078 if (index >= dd->
size || index < 0)
return -1;
4102 if (index >= dd->
size || index < 0)
return -1;
4127 if (index >= dd->
size || index < 0)
return(0);
4152 if (index >= dd->
size || index < 0)
return -1;
4175 if (index >= dd->
size || index < 0)
return(0);
4202 if (index >= dd->
size || index < 0)
return(0);
4226 if (index >= dd->
size || index < 0)
return(0);
4253 if (index >= dd->
size || index < 0)
return(-1);
4279 if (index >= dd->
size || index < 0)
return(0);
4305 if (index >= dd->
size || index < 0)
return(-1);
4330 if (index >= dd->
size || index < 0)
return(-1);
4365 treenode->
low = ((int) treenode->
index < size) ?
4367 if (treenode->
child != NULL)
4369 if (treenode->
younger != NULL)
4409 int startV, stopV, startL;
4413 while (auxnode != NULL) {
4414 if (auxnode->
child != NULL) {
4418 startV = dd->
permZ[auxnode->
index] / multiplicity;
4419 startL = auxnode->
low / multiplicity;
4420 stopV = startV + auxnode->
size / multiplicity;
4422 for (i = startV, j = startL; i < stopV; i++) {
4423 if (vmask[i] == 0) {
4425 while (lmask[j] == 1) j++;
4426 node =
Mtr_MakeGroup(auxnode, j * multiplicity, multiplicity,
int Cudd_bddIsPiVar(DdManager *dd, int index)
long Cudd_ReadNodeCount(DdManager *dd)
int Cudd_bddResetVarToBeGrouped(DdManager *dd, int index)
DdNode * Cudd_bddNewVarAtLevel(DdManager *dd, int level)
Cudd_AggregationType groupcheck
MtrNode * Cudd_ReadZddTree(DdManager *dd)
void Cudd_RecursiveDerefZdd(DdManager *table, DdNode *n)
DdNode * Cudd_ReadZero(DdManager *dd)
unsigned int Cudd_ReadDead(DdManager *dd)
DdNode * Cudd_ReadZddOne(DdManager *dd, int i)
void Cudd_SetMinHit(DdManager *dd, unsigned int hr)
void Cudd_SetStdout(DdManager *dd, FILE *fp)
int(* DD_HFP)(DdManager *, const char *, void *)
void Cudd_SetMaxCacheHard(DdManager *dd, unsigned int mc)
int Cudd_StdPostReordHook(DdManager *dd, const char *str, void *data)
int Cudd_bddIsPsVar(DdManager *dd, int index)
Cudd_ReorderingType autoMethod
int Cudd_bddReadPairIndex(DdManager *dd, int index)
unsigned int peakLiveNodes
void Cudd_SetArcviolation(DdManager *dd, int arcviolation)
DdNode * Cudd_zddIthVar(DdManager *dd, int i)
int Cudd_bddUnbindVar(DdManager *dd, int index)
int Cudd_ReadSiftMaxSwap(DdManager *dd)
void Cudd_SetStderr(DdManager *dd, FILE *fp)
#define DD_MAX_CACHE_FRACTION
void Cudd_TurnOffCountDead(DdManager *dd)
DdNode * Cudd_ReadBackground(DdManager *dd)
void Cudd_SetMaxGrowth(DdManager *dd, double mg)
double Cudd_ExpectedUsedSlots(DdManager *dd)
void Cudd_SetBackground(DdManager *dd, DdNode *bck)
DdHook * preReorderingHook
void Cudd_SetTree(DdManager *dd, MtrNode *tree)
unsigned int Cudd_ReadMaxCache(DdManager *dd)
long Cudd_ReadPeakNodeCount(DdManager *dd)
DdNode * cuddUniqueConst(DdManager *unique, CUDD_VALUE_TYPE value)
int Cudd_ReorderingStatusZdd(DdManager *unique, Cudd_ReorderingType *method)
int Cudd_StdPreReordHook(DdManager *dd, const char *str, void *data)
#define ABC_REALLOC(type, obj, num)
int Cudd_ReadRecomb(DdManager *dd)
int Cudd_bddBindVar(DdManager *dd, int index)
int Cudd_bddSetPairIndex(DdManager *dd, int index, int pairIndex)
double Cudd_ReadSwapSteps(DdManager *dd)
#define Cudd_IsConstant(node)
unsigned int maxCacheHard
DdNode * Cudd_ReadLogicZero(DdManager *dd)
#define Cudd_Regular(node)
#define DD_MAX_LOOSE_FRACTION
int Cudd_bddSetNsVar(DdManager *dd, int index)
int Cudd_ReadZddSize(DdManager *dd)
void Cudd_SetZddTree(DdManager *dd, MtrNode *tree)
int Cudd_IsNonConstant(DdNode *f)
unsigned int Cudd_ReadCacheSlots(DdManager *dd)
int Cudd_AddHook(DdManager *dd, DD_HFP f, Cudd_HookType where)
Cudd_AggregationType Cudd_ReadGroupcheck(DdManager *dd)
unsigned int Cudd_ReadMaxCacheHard(DdManager *dd)
int Cudd_bddIsNsVar(DdManager *dd, int index)
static ABC_NAMESPACE_IMPL_START char rcsid[] DD_UNUSED
void Cudd_FreeZddTree(DdManager *dd)
double Cudd_ReadNodesDropped(DdManager *dd)
int Cudd_GarbageCollectionEnabled(DdManager *dd)
unsigned int Cudd_ReadMinHit(DdManager *dd)
int Cudd_DeadAreCounted(DdManager *dd)
void Mtr_FreeTree(MtrNode *node)
void Cudd_bddRealignEnable(DdManager *unique)
int Cudd_bddSetVarHardGroup(DdManager *dd, int index)
#define ABC_ALLOC(type, num)
unsigned int Cudd_ReadSlots(DdManager *dd)
unsigned long Cudd_ReadMemoryInUse(DdManager *dd)
void Cudd_AutodynDisable(DdManager *unique)
DdNode * Cudd_ReadVars(DdManager *dd, int i)
Cudd_ReorderingType autoMethodZ
void Cudd_bddRealignDisable(DdManager *unique)
void Cudd_ClearErrorCode(DdManager *dd)
DdNode * Cudd_addNewVar(DdManager *dd)
void Cudd_TurnOnCountDead(DdManager *dd)
int Cudd_IsInHook(DdManager *dd, DD_HFP f, Cudd_HookType where)
int Cudd_bddSetPsVar(DdManager *dd, int index)
Cudd_ErrorType Cudd_ReadErrorCode(DdManager *dd)
DdNode * Cudd_ReadMinusInfinity(DdManager *dd)
int Cudd_ReadArcviolation(DdManager *dd)
double Cudd_ReadUniqueLinks(DdManager *dd)
void Cudd_SetGroupcheck(DdManager *dd, Cudd_AggregationType gc)
#define DD_MINUS_INFINITY(dd)
DdNode * Cudd_bddIthVar(DdManager *dd, int i)
void Cudd_SetSiftMaxVar(DdManager *dd, int smv)
void Cudd_DisableGarbageCollection(DdManager *dd)
void Cudd_AutodynEnable(DdManager *unique, Cudd_ReorderingType method)
Cudd_VariableType varType
EXTERN long getSoftDataLimit()
unsigned int Cudd_ReadKeys(DdManager *dd)
void Cudd_AutodynEnableZdd(DdManager *unique, Cudd_ReorderingType method)
void Cudd_SetMaxMemory(DdManager *dd, unsigned long maxMemory)
int Cudd_zddShuffleHeap(DdManager *table, int *permutation)
DdHook * postReorderingHook
int Cudd_ReadReorderingCycle(DdManager *dd)
int cuddResizeTableZdd(DdManager *unique, int index)
int Cudd_ReadSymmviolation(DdManager *dd)
void Cudd_EnableGarbageCollection(DdManager *dd)
int Cudd_PrintInfo(DdManager *dd, FILE *fp)
DdNode * Cudd_addNewVarAtLevel(DdManager *dd, int level)
void Cudd_SetPopulationSize(DdManager *dd, int populationSize)
Cudd_LazyGroupType varToBeGrouped
int cuddInsertSubtables(DdManager *unique, int n, int level)
void Cudd_SetRecomb(DdManager *dd, int recomb)
static int addMultiplicityGroups(DdManager *dd, MtrNode *treenode, int multiplicity, char *vmask, char *lmask)
int Cudd_EnableReorderingReporting(DdManager *dd)
#define ABC_NAMESPACE_IMPL_END
DdNode * Cudd_bddNewVar(DdManager *dd)
unsigned int Cudd_ReadNextReordering(DdManager *dd)
void Cudd_SetSymmviolation(DdManager *dd, int symmviolation)
unsigned int Cudd_ReadMinDead(DdManager *dd)
double Cudd_ReadCacheLookUps(DdManager *dd)
void Cudd_SetMaxGrowthAlternate(DdManager *dd, double mg)
DdNode * Cudd_ReadPlusInfinity(DdManager *dd)
void Cudd_SetNumberXovers(DdManager *dd, int numberXovers)
int Cudd_ReadPopulationSize(DdManager *dd)
long Cudd_zddReadNodeCount(DdManager *dd)
double Cudd_ReadMaxGrowthAlternate(DdManager *dd)
int Cudd_bddRealignmentEnabled(DdManager *unique)
int Cudd_bddSetVarToBeUngrouped(DdManager *dd, int index)
DdNode * cuddUniqueInterZdd(DdManager *unique, int index, DdNode *T, DdNode *E)
int Cudd_ReadSize(DdManager *dd)
double Cudd_ReadCacheUsedSlots(DdManager *dd)
int Cudd_ReadPeakLiveNodeCount(DdManager *dd)
int Cudd_ReadPerm(DdManager *dd, int i)
void Cudd_SetReorderingCycle(DdManager *dd, int cycle)
void Cudd_SetMaxLive(DdManager *dd, unsigned int maxLive)
int Cudd_bddSetVarToBeGrouped(DdManager *dd, int index)
double Cudd_ReadUsedSlots(DdManager *dd)
void Cudd_SetNextReordering(DdManager *dd, unsigned int next)
int Cudd_bddVarIsBound(DdManager *dd, int index)
int Cudd_ReadReorderings(DdManager *dd)
#define ABC_NAMESPACE_IMPL_START
void Cudd_AutodynDisableZdd(DdManager *unique)
int Cudd_bddIsVarToBeGrouped(DdManager *dd, int index)
int Cudd_zddVarsFromBddVars(DdManager *dd, int multiplicity)
unsigned int Cudd_ReadMaxLive(DdManager *dd)
double Cudd_ReadCacheHits(DdManager *dd)
int Cudd_ReorderingReporting(DdManager *dd)
void Cudd_SetSiftMaxSwap(DdManager *dd, int sms)
int Cudd_zddRealignmentEnabled(DdManager *unique)
unsigned int Cudd_ReadLooseUpTo(DdManager *dd)
int cuddCacheProfile(DdManager *table, FILE *fp)
DdNode * Cudd_addIthVar(DdManager *dd, int i)
MtrNode * Mtr_InitGroupTree(int lower, int size)
int Cudd_ReadSiftMaxVar(DdManager *dd)
int Cudd_bddIsVarHardGroup(DdManager *dd, int index)
long Cudd_ReadReorderingTime(DdManager *dd)
double Cudd_ReadMaxGrowth(DdManager *dd)
int Cudd_ReadGarbageCollections(DdManager *dd)
int Cudd_ReadNumberXovers(DdManager *dd)
MtrNode * Cudd_ReadTree(DdManager *dd)
unsigned long Cudd_ReadMaxMemory(DdManager *dd)
void cuddClearDeathRow(DdManager *table)
int Cudd_ReadPermZdd(DdManager *dd, int i)
int Cudd_ReorderingStatus(DdManager *unique, Cudd_ReorderingType *method)
double Cudd_ReadUniqueLookUps(DdManager *dd)
int Cudd_ReadInvPermZdd(DdManager *dd, int i)
double Cudd_ReadNodesFreed(DdManager *dd)
void Cudd_SetLooseUpTo(DdManager *dd, unsigned int lut)
#define DD_PLUS_INFINITY(dd)
DdNode * Cudd_ReadOne(DdManager *dd)
DdNode * Cudd_addConst(DdManager *dd, CUDD_VALUE_TYPE c)
int Cudd_DisableReorderingReporting(DdManager *dd)
void Cudd_FreeTree(DdManager *dd)
void Cudd_zddRealignDisable(DdManager *unique)
int Cudd_bddSetPiVar(DdManager *dd, int index)
void Cudd_SetEpsilon(DdManager *dd, CUDD_VALUE_TYPE ep)
FILE * Cudd_ReadStdout(DdManager *dd)
MtrNode * Mtr_MakeGroup(MtrNode *root, unsigned int low, unsigned int high, unsigned int flags)
static void fixVarTree(MtrNode *treenode, int *perm, int size)
unsigned int Cudd_NodeReadIndex(DdNode *node)
MtrNode * Mtr_CopyTree(MtrNode *node, int expansion)
double Cudd_ReadRecursiveCalls(DdManager *dd)
long Cudd_ReadGarbageCollectionTime(DdManager *dd)
int Cudd_RemoveHook(DdManager *dd, DD_HFP f, Cudd_HookType where)
int Cudd_bddIsVarToBeUngrouped(DdManager *dd, int index)
DdNode * cuddUniqueInter(DdManager *unique, int index, DdNode *T, DdNode *E)
CUDD_VALUE_TYPE Cudd_ReadEpsilon(DdManager *dd)
void Cudd_zddRealignEnable(DdManager *unique)
int Cudd_ReadInvPerm(DdManager *dd, int i)
FILE * Cudd_ReadStderr(DdManager *dd)