232 static char rcsid[]
DD_UNUSED =
"$Id: cuddAPI.c,v 1.64 2012/02/05 01:07:18 fabio Exp $";
491 for (j = dd->
permZ[i] - 1; j >= 0; j--) {
542 if (multiplicity < 1)
return(0);
543 allnew = dd->
sizeZ == 0;
544 if (dd->
size * multiplicity > dd->
sizeZ) {
546 if (res == 0)
return(0);
550 for (i = 0; i < dd->
size; i++) {
551 for (j = 0; j < multiplicity; j++) {
552 dd->
permZ[i * multiplicity + j] =
553 dd->
perm[i] * multiplicity + j;
555 i * multiplicity + j;
558 for (i = 0; i < dd->
sizeZ; i++) {
563 if (permutation == NULL) {
567 for (i = 0; i < dd->
size; i++) {
568 for (j = 0; j < multiplicity; j++) {
569 permutation[i * multiplicity + j] =
570 dd->
invperm[i] * multiplicity + j;
573 for (i = dd->
size * multiplicity; i < dd->sizeZ; i++) {
578 if (res == 0)
return(0);
581 if (dd->
treeZ != NULL) {
584 if (dd->
tree != NULL) {
586 if (dd->
treeZ == NULL)
return(0);
587 }
else if (multiplicity > 1) {
589 if (dd->
treeZ == NULL)
return(0);
594 if (multiplicity > 1) {
607 for (i = 0; i < dd->
size; i++) {
608 vmask[i] = lmask[i] = 0;
613 if (res == 0)
return(0);
812 unsigned long elapsed;
840 unsigned long increase)
917 #ifndef DD_NO_DEATH_ROW 1256 return(i < dd->sizeZ ? dd->
univ[i] :
DD_ONE(dd));
1418 unsigned long used = 0;
1423 for (i = 0; i < slots; i++) {
1424 used += cache[i].
h != 0;
1427 return((
double)used / (
double) dd->
cacheSlots);
1490 return(dd->recursiveCalls);
1517 return((
unsigned int) (0.5 + 100 * dd->
minHit / (1 + dd->
minHit)));
1544 dd->
minHit = (double) hr / (100.0 - (
double) hr);
1591 lut = (
unsigned int) (datalimit / (
sizeof(
DdNode) *
1661 mc = (
unsigned int) (datalimit / (
sizeof(
DdCache) *
1746 unsigned long used = 0;
1748 int size = dd->
size;
1755 for (i = 0; i < size; i++) {
1758 for (j = 0; (unsigned) j < subtable->slots; j++) {
1760 if (node != sentinel) {
1769 for (i = 0; i < size; i++) {
1772 for (j = 0; (unsigned) j < subtable->slots; j++) {
1783 for (j = 0; (unsigned) j < subtable->slots; j++) {
1790 return((
double)used / (double) dd->
slots);
1816 int size = dd->
size;
1828 for (i = 0; i < size; i++) {
1830 empty += (double) subtable->
slots *
1831 exp(-(
double) subtable->
keys / (double) subtable->
slots);
1837 for (i = 0; i < size; i++) {
1839 empty += (double) subtable->
slots *
1840 exp(-(
double) subtable->
keys / (double) subtable->
slots);
1845 empty += (double) subtable->
slots *
1846 exp(-(
double) subtable->
keys / (double) subtable->
slots);
1848 return(1.0 - empty / (
double) dd->
slots);
2070 return(dd->nodesFreed);
2096 return(dd->nodesDropped);
2121 #ifdef DD_UNIQUE_PROFILE 2122 return(dd->uniqueLookUps);
2150 #ifdef DD_UNIQUE_PROFILE 2151 return(dd->uniqueLinks);
2438 if (dd->
tree != NULL) {
2442 if (tree == NULL)
return;
2465 if (dd->
tree != NULL) {
2510 if (dd->
treeZ != NULL) {
2514 if (tree == NULL)
return;
2537 if (dd->
treeZ != NULL) {
2588 if (i < 0 || i >= dd->
size)
return(-1);
2589 return(dd->
perm[i]);
2615 if (i < 0 || i >= dd->
sizeZ)
return(-1);
2616 return(dd->
permZ[i]);
2641 if (i < 0 || i >= dd->
size)
return(-1);
2667 if (i < 0 || i >= dd->
sizeZ)
return(-1);
2693 if (i < 0 || i > dd->
size)
return(NULL);
2694 return(dd->
vars[i]);
3223 unsigned int factor)
3271 retval = fprintf(fp,
"**** CUDD modifiable parameters ****\n");
3272 if (retval == EOF)
return(0);
3273 retval = fprintf(fp,
"Hard limit for cache size: %u\n",
3275 if (retval == EOF)
return(0);
3276 retval = fprintf(fp,
"Cache hit threshold for resizing: %u%%\n",
3278 if (retval == EOF)
return(0);
3279 retval = fprintf(fp,
"Garbage collection enabled: %s\n",
3281 if (retval == EOF)
return(0);
3282 retval = fprintf(fp,
"Limit for fast unique table growth: %u\n",
3284 if (retval == EOF)
return(0);
3285 retval = fprintf(fp,
3286 "Maximum number of variables sifted per reordering: %d\n",
3288 if (retval == EOF)
return(0);
3289 retval = fprintf(fp,
3290 "Maximum number of variable swaps per reordering: %d\n",
3292 if (retval == EOF)
return(0);
3293 retval = fprintf(fp,
"Maximum growth while sifting a variable: %g\n",
3295 if (retval == EOF)
return(0);
3296 retval = fprintf(fp,
"Dynamic reordering of BDDs enabled: %s\n",
3298 if (retval == EOF)
return(0);
3299 retval = fprintf(fp,
"Default BDD reordering method: %d\n",
3301 if (retval == EOF)
return(0);
3302 retval = fprintf(fp,
"Dynamic reordering of ZDDs enabled: %s\n",
3304 if (retval == EOF)
return(0);
3305 retval = fprintf(fp,
"Default ZDD reordering method: %d\n",
3307 if (retval == EOF)
return(0);
3308 retval = fprintf(fp,
"Realignment of ZDDs to BDDs enabled: %s\n",
3310 if (retval == EOF)
return(0);
3311 retval = fprintf(fp,
"Realignment of BDDs to ZDDs enabled: %s\n",
3313 if (retval == EOF)
return(0);
3314 retval = fprintf(fp,
"Dead nodes counted in triggering reordering: %s\n",
3316 if (retval == EOF)
return(0);
3317 retval = fprintf(fp,
"Group checking criterion: %d\n",
3319 if (retval == EOF)
return(0);
3320 retval = fprintf(fp,
"Recombination threshold: %d\n",
Cudd_ReadRecomb(dd));
3321 if (retval == EOF)
return(0);
3322 retval = fprintf(fp,
"Symmetry violation threshold: %d\n",
3324 if (retval == EOF)
return(0);
3325 retval = fprintf(fp,
"Arc violation threshold: %d\n",
3327 if (retval == EOF)
return(0);
3328 retval = fprintf(fp,
"GA population size: %d\n",
3330 if (retval == EOF)
return(0);
3331 retval = fprintf(fp,
"Number of crossovers for GA: %d\n",
3333 if (retval == EOF)
return(0);
3334 retval = fprintf(fp,
"Next reordering threshold: %u\n",
3336 if (retval == EOF)
return(0);
3339 retval = fprintf(fp,
"**** CUDD non-modifiable parameters ****\n");
3340 if (retval == EOF)
return(0);
3342 if (retval == EOF)
return(0);
3343 retval = fprintf(fp,
"Peak number of nodes: %ld\n",
3345 if (retval == EOF)
return(0);
3346 retval = fprintf(fp,
"Peak number of live nodes: %d\n",
3348 if (retval == EOF)
return(0);
3349 retval = fprintf(fp,
"Number of BDD variables: %d\n", dd->
size);
3350 if (retval == EOF)
return(0);
3351 retval = fprintf(fp,
"Number of ZDD variables: %d\n", dd->
sizeZ);
3352 if (retval == EOF)
return(0);
3353 retval = fprintf(fp,
"Number of cache entries: %u\n", dd->
cacheSlots);
3354 if (retval == EOF)
return(0);
3355 retval = fprintf(fp,
"Number of cache look-ups: %.0f\n",
3357 if (retval == EOF)
return(0);
3358 retval = fprintf(fp,
"Number of cache hits: %.0f\n",
3360 if (retval == EOF)
return(0);
3361 retval = fprintf(fp,
"Number of cache insertions: %.0f\n",
3363 if (retval == EOF)
return(0);
3364 retval = fprintf(fp,
"Number of cache collisions: %.0f\n",
3366 if (retval == EOF)
return(0);
3367 retval = fprintf(fp,
"Number of cache deletions: %.0f\n",
3369 if (retval == EOF)
return(0);
3371 if (retval == 0)
return(0);
3372 retval = fprintf(fp,
"Soft limit for cache size: %u\n",
3374 if (retval == EOF)
return(0);
3375 retval = fprintf(fp,
"Number of buckets in unique table: %u\n", dd->
slots);
3376 if (retval == EOF)
return(0);
3377 retval = fprintf(fp,
"Used buckets in unique table: %.2f%% (expected %.2f%%)\n",
3380 if (retval == EOF)
return(0);
3381 #ifdef DD_UNIQUE_PROFILE 3382 retval = fprintf(fp,
"Unique lookups: %.0f\n", dd->uniqueLookUps);
3383 if (retval == EOF)
return(0);
3384 retval = fprintf(fp,
"Unique links: %.0f (%g per lookup)\n",
3385 dd->uniqueLinks, dd->uniqueLinks / dd->uniqueLookUps);
3386 if (retval == EOF)
return(0);
3388 retval = fprintf(fp,
"Number of BDD and ADD nodes: %u\n", dd->
keys);
3389 if (retval == EOF)
return(0);
3390 retval = fprintf(fp,
"Number of ZDD nodes: %u\n", dd->
keysZ);
3391 if (retval == EOF)
return(0);
3392 retval = fprintf(fp,
"Number of dead BDD and ADD nodes: %u\n", dd->
dead);
3393 if (retval == EOF)
return(0);
3394 retval = fprintf(fp,
"Number of dead ZDD nodes: %u\n", dd->
deadZ);
3395 if (retval == EOF)
return(0);
3396 retval = fprintf(fp,
"Total number of nodes allocated: %.0f\n",
3398 if (retval == EOF)
return(0);
3399 retval = fprintf(fp,
"Total number of nodes reclaimed: %.0f\n",
3401 if (retval == EOF)
return(0);
3403 retval = fprintf(fp,
"Nodes freed: %.0f\n", dd->nodesFreed);
3404 if (retval == EOF)
return(0);
3405 retval = fprintf(fp,
"Nodes dropped: %.0f\n", dd->nodesDropped);
3406 if (retval == EOF)
return(0);
3409 retval = fprintf(fp,
"Number of recursive calls: %.0f\n",
3411 if (retval == EOF)
return(0);
3413 retval = fprintf(fp,
"Garbage collections so far: %d\n",
3415 if (retval == EOF)
return(0);
3416 retval = fprintf(fp,
"Time for garbage collection: %.2f sec\n",
3418 if (retval == EOF)
return(0);
3419 retval = fprintf(fp,
"Reorderings so far: %d\n", dd->
reorderings);
3420 if (retval == EOF)
return(0);
3421 retval = fprintf(fp,
"Time for reordering: %.2f sec\n",
3423 if (retval == EOF)
return(0);
3425 retval = fprintf(fp,
"Node swaps in reordering: %.0f\n",
3427 if (retval == EOF)
return(0);
3455 while (scan != NULL) {
3479 unsigned int live = dd->
keys - dd->
dead;
3510 #ifndef DD_NO_DEATH_ROW 3514 count = (long) (dd->
keys - dd->
dead);
3519 for (i=0; i < dd->
size; i++) {
3520 if (dd->
vars[i]->
ref == 1) count--;
3523 if (
DD_ZERO(dd)->ref == 1) count--;
3574 DdHook **hook, *nextHook, *newHook;
3595 while (nextHook != NULL) {
3596 if (nextHook->
f == f) {
3599 hook = &(nextHook->
next);
3600 nextHook = nextHook->
next;
3605 if (newHook == NULL) {
3609 newHook->
next = NULL;
3636 DdHook **hook, *nextHook;
3655 while (nextHook != NULL) {
3656 if (nextHook->
f == f) {
3657 *hook = nextHook->
next;
3661 hook = &(nextHook->
next);
3662 nextHook = nextHook->
next;
3708 while (hook != NULL) {
3741 retval = fprintf(dd->
out,
"%s reordering with ", str);
3742 if (retval == EOF)
return(0);
3751 retval = fprintf(dd->
out,
"converging ");
3752 if (retval == EOF)
return(0);
3760 retval = fprintf(dd->
out,
"random");
3764 retval = fprintf(dd->
out,
"sifting");
3768 retval = fprintf(dd->
out,
"symmetric sifting");
3771 retval = fprintf(dd->
out,
"lazy sifting");
3775 retval = fprintf(dd->
out,
"group sifting");
3783 retval = fprintf(dd->
out,
"window");
3786 retval = fprintf(dd->
out,
"annealing");
3789 retval = fprintf(dd->
out,
"genetic");
3793 retval = fprintf(dd->
out,
"linear sifting");
3796 retval = fprintf(dd->
out,
"exact");
3801 if (retval == EOF)
return(0);
3803 retval = fprintf(dd->
out,
": from %ld to ... ",
strcmp(str,
"BDD") == 0 ?
3805 if (retval == EOF)
return(0);
3831 unsigned long initialTime = (long) data;
3834 double totalTimeSec = (double)(finalTime - initialTime) / 1000.0;
3836 retval = fprintf(dd->
out,
"%ld nodes in %g sec\n",
strcmp(str,
"BDD") == 0 ?
3839 if (retval == EOF)
return(0);
3840 retval = fflush(dd->
out);
3841 if (retval == EOF)
return(0);
3944 int isBdd =
strcmp(str,
"ZDD");
3947 int size = isBdd ? dd->
size : dd->
sizeZ;
3950 for (i=0; i < size; i++) {
3951 retval = fprintf(dd->
out,
"%c%d", i==0 ?
'(' :
',', invperm[i]);
3952 if (retval == EOF)
return(0);
3954 retval = fprintf(dd->
out,
")\n");
3955 return (retval != EOF);
4244 return(dd->swapSteps);
4288 unsigned int maxLive)
4331 unsigned long maxMemory)
4356 if (index >= dd->
size || index < 0)
return(0);
4384 if (index >= dd->
size || index < 0)
return(0);
4411 if (index >= dd->
size || index < 0)
return(0);
4434 if (index >= dd->
size || index < 0)
return (0);
4458 if (index >= dd->
size || index < 0)
return (0);
4482 if (index >= dd->
size || index < 0)
return (0);
4507 if (index >= dd->
size || index < 0)
return -1;
4531 if (index >= dd->
size || index < 0)
return -1;
4555 if (index >= dd->
size || index < 0)
return -1;
4580 if (index >= dd->
size || index < 0)
return(0);
4605 if (index >= dd->
size || index < 0)
return -1;
4628 if (index >= dd->
size || index < 0)
return(0);
4655 if (index >= dd->
size || index < 0)
return(0);
4679 if (index >= dd->
size || index < 0)
return(0);
4706 if (index >= dd->
size || index < 0)
return(-1);
4732 if (index >= dd->
size || index < 0)
return(0);
4758 if (index >= dd->
size || index < 0)
return(-1);
4783 if (index >= dd->
size || index < 0)
return(-1);
4818 treenode->
low = ((int) treenode->
index < size) ?
4820 if (treenode->
child != NULL)
4822 if (treenode->
younger != NULL)
4862 int startV, stopV, startL;
4866 while (auxnode != NULL) {
4867 if (auxnode->
child != NULL) {
4871 startV = dd->
permZ[auxnode->
index] / multiplicity;
4872 startL = auxnode->
low / multiplicity;
4873 stopV = startV + auxnode->
size / multiplicity;
4875 for (i = startV, j = startL; i < stopV; i++) {
4876 if (vmask[i] == 0) {
4878 while (lmask[j] == 1) j++;
4879 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)
void Cudd_ResetStartTime(DdManager *unique)
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)
void Cudd_SetMaxCacheHard(DdManager *dd, unsigned int mc)
void Cudd_UnsetTimeLimit(DdManager *unique)
int Cudd_OrderingMonitoring(DdManager *dd)
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)
void Cudd_SetTimeLimit(DdManager *unique, unsigned long tl)
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)
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)
unsigned int Cudd_ReadOrderRandomization(DdManager *dd)
#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)
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)
int cuddCacheProfile(DdManager *table, FILE *fp)
void Mtr_FreeTree(MtrNode *node)
void Cudd_bddRealignEnable(DdManager *unique)
int Cudd_bddSetVarHardGroup(DdManager *dd, int index)
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)
int Cudd_DisableOrderingMonitoring(DdManager *dd)
Cudd_ErrorType Cudd_ReadErrorCode(DdManager *dd)
DdNode * Cudd_ReadMinusInfinity(DdManager *dd)
int Cudd_ReadArcviolation(DdManager *dd)
double Cudd_ReadUniqueLinks(DdManager *dd)
void Cudd_SetOrderRandomization(DdManager *dd, unsigned int factor)
void Cudd_UpdateTimeLimit(DdManager *unique)
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)
int Cudd_PrintGroupedOrder(DdManager *dd, const char *str, void *data)
void Cudd_AutodynEnable(DdManager *unique, Cudd_ReorderingType method)
unsigned int randomizeOrder
Cudd_VariableType varType
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_TimeLimited(DdManager *unique)
int Cudd_ReadReorderingCycle(DdManager *dd)
int Cudd_EnableOrderingMonitoring(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(* DD_HFP)(DdManager *, const char *, void *)
int Cudd_EnableReorderingReporting(DdManager *dd)
unsigned int Cudd_ReadMaxReorderings(DdManager *dd)
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)
unsigned long getSoftDataLimit(void)
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)
unsigned int Cudd_ReadReorderings(DdManager *dd)
void Cudd_AutodynDisableZdd(DdManager *unique)
int Cudd_bddIsVarToBeGrouped(DdManager *dd, int index)
unsigned int maxReorderings
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)
DdNode * Cudd_addIthVar(DdManager *dd, int i)
int Mtr_PrintGroupedOrder(MtrNode *root, int *invperm, FILE *fp)
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)
#define REALLOC(type, obj, num)
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)
unsigned long Cudd_ReadElapsedTime(DdManager *unique)
DdNode * Cudd_addConst(DdManager *dd, CUDD_VALUE_TYPE c)
int Cudd_DisableReorderingReporting(DdManager *dd)
void Cudd_SetMaxReorderings(DdManager *dd, unsigned int mr)
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)
static char rcsid [] DD_UNUSED
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)
unsigned long Cudd_ReadStartTime(DdManager *unique)
void Cudd_zddRealignEnable(DdManager *unique)
unsigned long Cudd_ReadTimeLimit(DdManager *unique)
int Cudd_ReadInvPerm(DdManager *dd, int i)
FILE * Cudd_ReadStderr(DdManager *dd)
void Cudd_IncreaseTimeLimit(DdManager *unique, unsigned long increase)
void Cudd_SetStartTime(DdManager *unique, unsigned long st)