cudd  3.0.0
The University of Colorado Decision Diagram Package
cudd.h
Go to the documentation of this file.
1 
53 #ifndef CUDD_H_
54 #define CUDD_H_
55 
56 /*---------------------------------------------------------------------------*/
57 /* Nested includes */
58 /*---------------------------------------------------------------------------*/
59 
60 #include <inttypes.h>
61 
62 /*---------------------------------------------------------------------------*/
63 /* Constant declarations */
64 /*---------------------------------------------------------------------------*/
65 
66 #define CUDD_TRUE 1
67 #define CUDD_FALSE 0
72 #define CUDD_OUT_OF_MEM -1
73 /* The sizes of the subtables and the cache must be powers of two. */
74 #define CUDD_UNIQUE_SLOTS 256
75 #define CUDD_CACHE_SLOTS 262144
77 /* Constants for residue functions. */
78 #define CUDD_RESIDUE_DEFAULT 0
79 #define CUDD_RESIDUE_MSB 1
80 #define CUDD_RESIDUE_TC 2
81 
82 /*---------------------------------------------------------------------------*/
83 /* Stucture declarations */
84 /*---------------------------------------------------------------------------*/
85 
86 
87 /*---------------------------------------------------------------------------*/
88 /* Type declarations */
89 /*---------------------------------------------------------------------------*/
90 
94 typedef enum {
95  CUDD_REORDER_SAME,
96  CUDD_REORDER_NONE,
97  CUDD_REORDER_RANDOM,
98  CUDD_REORDER_RANDOM_PIVOT,
99  CUDD_REORDER_SIFT,
100  CUDD_REORDER_SIFT_CONVERGE,
101  CUDD_REORDER_SYMM_SIFT,
102  CUDD_REORDER_SYMM_SIFT_CONV,
103  CUDD_REORDER_WINDOW2,
104  CUDD_REORDER_WINDOW3,
105  CUDD_REORDER_WINDOW4,
106  CUDD_REORDER_WINDOW2_CONV,
107  CUDD_REORDER_WINDOW3_CONV,
108  CUDD_REORDER_WINDOW4_CONV,
109  CUDD_REORDER_GROUP_SIFT,
110  CUDD_REORDER_GROUP_SIFT_CONV,
111  CUDD_REORDER_ANNEALING,
112  CUDD_REORDER_GENETIC,
113  CUDD_REORDER_LINEAR,
114  CUDD_REORDER_LINEAR_CONVERGE,
115  CUDD_REORDER_LAZY_SIFT,
116  CUDD_REORDER_EXACT
118 
119 
123 typedef enum {
124  CUDD_NO_CHECK,
125  CUDD_GROUP_CHECK,
126  CUDD_GROUP_CHECK2,
127  CUDD_GROUP_CHECK3,
128  CUDD_GROUP_CHECK4,
129  CUDD_GROUP_CHECK5,
130  CUDD_GROUP_CHECK6,
131  CUDD_GROUP_CHECK7,
132  CUDD_GROUP_CHECK8,
133  CUDD_GROUP_CHECK9
135 
136 
140 typedef enum {
141  CUDD_PRE_GC_HOOK,
142  CUDD_POST_GC_HOOK,
143  CUDD_PRE_REORDERING_HOOK,
144  CUDD_POST_REORDERING_HOOK
145 } Cudd_HookType;
146 
147 
151 typedef enum {
152  CUDD_NO_ERROR,
153  CUDD_MEMORY_OUT,
154  CUDD_TOO_MANY_NODES,
155  CUDD_MAX_MEM_EXCEEDED,
156  CUDD_TIMEOUT_EXPIRED,
157  CUDD_TERMINATION,
158  CUDD_INVALID_ARG,
159  CUDD_INTERNAL_ERROR
161 
162 
166 typedef enum {
167  CUDD_LAZY_NONE,
168  CUDD_LAZY_SOFT_GROUP,
169  CUDD_LAZY_HARD_GROUP,
170  CUDD_LAZY_UNGROUP
172 
173 
180 typedef enum {
181  CUDD_VAR_PRIMARY_INPUT,
182  CUDD_VAR_PRESENT_STATE,
183  CUDD_VAR_NEXT_STATE
185 
189 typedef double CUDD_VALUE_TYPE;
190 
194 typedef struct DdNode DdNode;
195 
199 typedef DdNode *DdNodePtr;
200 
204 typedef struct DdManager DdManager;
205 
209 typedef struct DdGen DdGen;
210 
214 typedef uint32_t DdApaDigit;
215 
220 
224 typedef DdApaDigit const * DdConstApaNumber;
225 
229 typedef struct DdTlcInfo DdTlcInfo;
230 
234 typedef int (*DD_HFP)(DdManager *, const char *, void *);
238 typedef DdNode * (*DD_PRFP)(DdManager * , int, DdNode **, DdNode **, DdNode **);
242 typedef DdNode * (*DD_AOP)(DdManager *, DdNode **, DdNode **);
246 typedef DdNode * (*DD_MAOP)(DdManager *, DdNode *);
250 typedef DdNode * (*DD_CTFP)(DdManager *, DdNode *, DdNode *);
254 typedef DdNode * (*DD_CTFP1)(DdManager *, DdNode *);
258 typedef void (*DD_OOMFP)(size_t);
262 typedef int (*DD_QSFP)(const void *, const void *);
266 typedef int (*DD_THFP)(const void *);
270 typedef void (*DD_TOHFP)(DdManager *, void *);
271 
272 /*---------------------------------------------------------------------------*/
273 /* Variable declarations */
274 /*---------------------------------------------------------------------------*/
275 
276 
277 /*---------------------------------------------------------------------------*/
278 /* Macro declarations */
279 /*---------------------------------------------------------------------------*/
280 
281 
293 #define Cudd_Not(node) ((DdNode *)((uintptr_t)(node) ^ (uintptr_t) 01))
294 
295 
308 #define Cudd_NotCond(node,c) ((DdNode *)((uintptr_t)(node) ^ (uintptr_t) (c)))
309 
310 
321 #define Cudd_Regular(node) ((DdNode *)((uintptr_t)(node) & ~(uintptr_t) 01))
322 
323 
334 #define Cudd_Complement(node) ((DdNode *)((uintptr_t)(node) | (uintptr_t) 01))
335 
336 
347 #define Cudd_IsComplement(node) ((int) ((uintptr_t) (node) & (uintptr_t) 01))
348 
349 
363 #define Cudd_ReadIndex(dd,index) (Cudd_ReadPerm(dd,index))
364 
365 
394 #define Cudd_ForeachCube(manager, f, gen, cube, value)\
395  for((gen) = Cudd_FirstCube(manager, f, &cube, &value);\
396  Cudd_IsGenEmpty(gen) ? Cudd_GenFree(gen) : CUDD_TRUE;\
397  (void) Cudd_NextCube(gen, &cube, &value))
398 
399 
425 #define Cudd_ForeachPrime(manager, l, u, gen, cube)\
426  for((gen) = Cudd_FirstPrime(manager, l, u, &cube);\
427  Cudd_IsGenEmpty(gen) ? Cudd_GenFree(gen) : CUDD_TRUE;\
428  (void) Cudd_NextPrime(gen, &cube))
429 
430 
458 #define Cudd_ForeachNode(manager, f, gen, node)\
459  for((gen) = Cudd_FirstNode(manager, f, &node);\
460  Cudd_IsGenEmpty(gen) ? Cudd_GenFree(gen) : CUDD_TRUE;\
461  (void) Cudd_NextNode(gen, &node))
462 
463 
491 #define Cudd_zddForeachPath(manager, f, gen, path)\
492  for((gen) = Cudd_zddFirstPath(manager, f, &path);\
493  Cudd_IsGenEmpty(gen) ? Cudd_GenFree(gen) : CUDD_TRUE;\
494  (void) Cudd_zddNextPath(gen, &path))
495 
496 
497 
498 /*---------------------------------------------------------------------------*/
499 /* Function prototypes */
500 /*---------------------------------------------------------------------------*/
501 
502 #ifdef __cplusplus
503 extern "C" {
504 #endif
505 
506 extern DdNode * Cudd_addNewVar(DdManager *dd);
507 extern DdNode * Cudd_addNewVarAtLevel(DdManager *dd, int level);
508 extern DdNode * Cudd_bddNewVar(DdManager *dd);
509 extern DdNode * Cudd_bddNewVarAtLevel(DdManager *dd, int level);
510 extern int Cudd_bddIsVar(DdManager * dd, DdNode * f);
511 extern DdNode * Cudd_addIthVar(DdManager *dd, int i);
512 extern DdNode * Cudd_bddIthVar(DdManager *dd, int i);
513 extern DdNode * Cudd_zddIthVar(DdManager *dd, int i);
514 extern int Cudd_zddVarsFromBddVars(DdManager *dd, int multiplicity);
515 extern unsigned int Cudd_ReadMaxIndex(void);
517 extern int Cudd_IsConstant(DdNode *node);
518 extern int Cudd_IsNonConstant(DdNode *f);
519 extern DdNode * Cudd_T(DdNode *node);
520 extern DdNode * Cudd_E(DdNode *node);
521 extern CUDD_VALUE_TYPE Cudd_V(DdNode *node);
522 extern unsigned long Cudd_ReadStartTime(DdManager *unique);
523 extern unsigned long Cudd_ReadElapsedTime(DdManager *unique);
524 extern void Cudd_SetStartTime(DdManager *unique, unsigned long st);
525 extern void Cudd_ResetStartTime(DdManager *unique);
526 extern unsigned long Cudd_ReadTimeLimit(DdManager *unique);
527 extern unsigned long Cudd_SetTimeLimit(DdManager *unique, unsigned long tl);
528 extern void Cudd_UpdateTimeLimit(DdManager * unique);
529 extern void Cudd_IncreaseTimeLimit(DdManager * unique, unsigned long increase);
530 extern void Cudd_UnsetTimeLimit(DdManager *unique);
531 extern int Cudd_TimeLimited(DdManager *unique);
532 extern void Cudd_RegisterTerminationCallback(DdManager *unique, DD_THFP callback, void * callback_arg);
533 extern void Cudd_UnregisterTerminationCallback(DdManager *unique);
535 extern void Cudd_UnregisterOutOfMemoryCallback(DdManager *unique);
536 extern void Cudd_RegisterTimeoutHandler(DdManager *unique, DD_TOHFP handler, void *arg);
537 extern DD_TOHFP Cudd_ReadTimeoutHandler(DdManager *unique, void **argp);
538 extern void Cudd_AutodynEnable(DdManager *unique, Cudd_ReorderingType method);
539 extern void Cudd_AutodynDisable(DdManager *unique);
540 extern int Cudd_ReorderingStatus(DdManager *unique, Cudd_ReorderingType *method);
541 extern void Cudd_AutodynEnableZdd(DdManager *unique, Cudd_ReorderingType method);
542 extern void Cudd_AutodynDisableZdd(DdManager *unique);
543 extern int Cudd_ReorderingStatusZdd(DdManager *unique, Cudd_ReorderingType *method);
544 extern int Cudd_zddRealignmentEnabled(DdManager *unique);
545 extern void Cudd_zddRealignEnable(DdManager *unique);
546 extern void Cudd_zddRealignDisable(DdManager *unique);
547 extern int Cudd_bddRealignmentEnabled(DdManager *unique);
548 extern void Cudd_bddRealignEnable(DdManager *unique);
549 extern void Cudd_bddRealignDisable(DdManager *unique);
550 extern DdNode * Cudd_ReadOne(DdManager *dd);
551 extern DdNode * Cudd_ReadZddOne(DdManager *dd, int i);
552 extern DdNode * Cudd_ReadZero(DdManager *dd);
553 extern DdNode * Cudd_ReadLogicZero(DdManager *dd);
556 extern DdNode * Cudd_ReadBackground(DdManager *dd);
557 extern void Cudd_SetBackground(DdManager *dd, DdNode *bck);
558 extern unsigned int Cudd_ReadCacheSlots(DdManager *dd);
559 extern double Cudd_ReadCacheUsedSlots(DdManager * dd);
560 extern double Cudd_ReadCacheLookUps(DdManager *dd);
561 extern double Cudd_ReadCacheHits(DdManager *dd);
562 extern double Cudd_ReadRecursiveCalls(DdManager * dd);
563 extern unsigned int Cudd_ReadMinHit(DdManager *dd);
564 extern void Cudd_SetMinHit(DdManager *dd, unsigned int hr);
565 extern unsigned int Cudd_ReadLooseUpTo(DdManager *dd);
566 extern void Cudd_SetLooseUpTo(DdManager *dd, unsigned int lut);
567 extern unsigned int Cudd_ReadMaxCache(DdManager *dd);
568 extern unsigned int Cudd_ReadMaxCacheHard(DdManager *dd);
569 extern void Cudd_SetMaxCacheHard(DdManager *dd, unsigned int mc);
570 extern int Cudd_ReadSize(DdManager *dd);
571 extern int Cudd_ReadZddSize(DdManager *dd);
572 extern unsigned int Cudd_ReadSlots(DdManager *dd);
573 extern double Cudd_ReadUsedSlots(DdManager * dd);
574 extern double Cudd_ExpectedUsedSlots(DdManager * dd);
575 extern unsigned int Cudd_ReadKeys(DdManager *dd);
576 extern unsigned int Cudd_ReadDead(DdManager *dd);
577 extern unsigned int Cudd_ReadMinDead(DdManager *dd);
578 extern unsigned int Cudd_ReadReorderings(DdManager *dd);
579 extern unsigned int Cudd_ReadMaxReorderings(DdManager *dd);
580 extern void Cudd_SetMaxReorderings(DdManager *dd, unsigned int mr);
581 extern long Cudd_ReadReorderingTime(DdManager * dd);
582 extern int Cudd_ReadGarbageCollections(DdManager * dd);
583 extern long Cudd_ReadGarbageCollectionTime(DdManager * dd);
584 extern double Cudd_ReadNodesFreed(DdManager * dd);
585 extern double Cudd_ReadNodesDropped(DdManager * dd);
586 extern double Cudd_ReadUniqueLookUps(DdManager * dd);
587 extern double Cudd_ReadUniqueLinks(DdManager * dd);
588 extern int Cudd_ReadSiftMaxVar(DdManager *dd);
589 extern void Cudd_SetSiftMaxVar(DdManager *dd, int smv);
590 extern int Cudd_ReadSiftMaxSwap(DdManager *dd);
591 extern void Cudd_SetSiftMaxSwap(DdManager *dd, int sms);
592 extern double Cudd_ReadMaxGrowth(DdManager *dd);
593 extern void Cudd_SetMaxGrowth(DdManager *dd, double mg);
594 extern double Cudd_ReadMaxGrowthAlternate(DdManager * dd);
595 extern void Cudd_SetMaxGrowthAlternate(DdManager * dd, double mg);
596 extern int Cudd_ReadReorderingCycle(DdManager * dd);
597 extern void Cudd_SetReorderingCycle(DdManager * dd, int cycle);
598 extern unsigned int Cudd_NodeReadIndex(DdNode *node);
599 extern int Cudd_ReadPerm(DdManager *dd, int i);
600 extern int Cudd_ReadPermZdd(DdManager *dd, int i);
601 extern int Cudd_ReadInvPerm(DdManager *dd, int i);
602 extern int Cudd_ReadInvPermZdd(DdManager *dd, int i);
603 extern DdNode * Cudd_ReadVars(DdManager *dd, int i);
605 extern void Cudd_SetEpsilon(DdManager *dd, CUDD_VALUE_TYPE ep);
609 extern void Cudd_EnableGarbageCollection(DdManager *dd);
611 extern int Cudd_DeadAreCounted(DdManager *dd);
612 extern void Cudd_TurnOnCountDead(DdManager *dd);
613 extern void Cudd_TurnOffCountDead(DdManager *dd);
614 extern int Cudd_ReadRecomb(DdManager *dd);
615 extern void Cudd_SetRecomb(DdManager *dd, int recomb);
616 extern int Cudd_ReadSymmviolation(DdManager *dd);
617 extern void Cudd_SetSymmviolation(DdManager *dd, int symmviolation);
618 extern int Cudd_ReadArcviolation(DdManager *dd);
619 extern void Cudd_SetArcviolation(DdManager *dd, int arcviolation);
620 extern int Cudd_ReadPopulationSize(DdManager *dd);
621 extern void Cudd_SetPopulationSize(DdManager *dd, int populationSize);
622 extern int Cudd_ReadNumberXovers(DdManager *dd);
623 extern void Cudd_SetNumberXovers(DdManager *dd, int numberXovers);
624 extern unsigned int Cudd_ReadOrderRandomization(DdManager * dd);
625 extern void Cudd_SetOrderRandomization(DdManager * dd, unsigned int factor);
626 extern size_t Cudd_ReadMemoryInUse(DdManager *dd);
627 extern int Cudd_PrintInfo(DdManager *dd, FILE *fp);
628 extern long Cudd_ReadPeakNodeCount(DdManager *dd);
629 extern int Cudd_ReadPeakLiveNodeCount(DdManager * dd);
630 extern long Cudd_ReadNodeCount(DdManager *dd);
631 extern long Cudd_zddReadNodeCount(DdManager *dd);
632 extern int Cudd_AddHook(DdManager *dd, DD_HFP f, Cudd_HookType where);
633 extern int Cudd_RemoveHook(DdManager *dd, DD_HFP f, Cudd_HookType where);
634 extern int Cudd_IsInHook(DdManager * dd, DD_HFP f, Cudd_HookType where);
635 extern int Cudd_StdPreReordHook(DdManager *dd, const char *str, void *data);
636 extern int Cudd_StdPostReordHook(DdManager *dd, const char *str, void *data);
639 extern int Cudd_ReorderingReporting(DdManager *dd);
640 extern int Cudd_PrintGroupedOrder(DdManager * dd, const char *str, void *data);
643 extern int Cudd_OrderingMonitoring(DdManager *dd);
644 extern void Cudd_SetApplicationHook(DdManager *dd, void * value);
645 extern void * Cudd_ReadApplicationHook(DdManager *dd);
647 extern void Cudd_ClearErrorCode(DdManager *dd);
649 extern FILE * Cudd_ReadStdout(DdManager *dd);
650 extern void Cudd_SetStdout(DdManager *dd, FILE *fp);
651 extern FILE * Cudd_ReadStderr(DdManager *dd);
652 extern void Cudd_SetStderr(DdManager *dd, FILE *fp);
653 extern unsigned int Cudd_ReadNextReordering(DdManager *dd);
654 extern void Cudd_SetNextReordering(DdManager *dd, unsigned int next);
655 extern double Cudd_ReadSwapSteps(DdManager *dd);
656 extern unsigned int Cudd_ReadMaxLive(DdManager *dd);
657 extern void Cudd_SetMaxLive(DdManager *dd, unsigned int maxLive);
658 extern size_t Cudd_ReadMaxMemory(DdManager *dd);
659 extern size_t Cudd_SetMaxMemory(DdManager *dd, size_t maxMemory);
660 extern int Cudd_bddBindVar(DdManager *dd, int index);
661 extern int Cudd_bddUnbindVar(DdManager *dd, int index);
662 extern int Cudd_bddVarIsBound(DdManager *dd, int index);
663 extern DdNode * Cudd_addExistAbstract(DdManager *manager, DdNode *f, DdNode *cube);
664 extern DdNode * Cudd_addUnivAbstract(DdManager *manager, DdNode *f, DdNode *cube);
665 extern DdNode * Cudd_addOrAbstract(DdManager *manager, DdNode *f, DdNode *cube);
666 extern DdNode * Cudd_addApply(DdManager *dd, DD_AOP op, DdNode *f, DdNode *g);
667 extern DdNode * Cudd_addPlus(DdManager *dd, DdNode **f, DdNode **g);
668 extern DdNode * Cudd_addTimes(DdManager *dd, DdNode **f, DdNode **g);
669 extern DdNode * Cudd_addThreshold(DdManager *dd, DdNode **f, DdNode **g);
670 extern DdNode * Cudd_addSetNZ(DdManager *dd, DdNode **f, DdNode **g);
671 extern DdNode * Cudd_addDivide(DdManager *dd, DdNode **f, DdNode **g);
672 extern DdNode * Cudd_addMinus(DdManager *dd, DdNode **f, DdNode **g);
673 extern DdNode * Cudd_addMinimum(DdManager *dd, DdNode **f, DdNode **g);
674 extern DdNode * Cudd_addMaximum(DdManager *dd, DdNode **f, DdNode **g);
675 extern DdNode * Cudd_addOneZeroMaximum(DdManager *dd, DdNode **f, DdNode **g);
676 extern DdNode * Cudd_addDiff(DdManager *dd, DdNode **f, DdNode **g);
677 extern DdNode * Cudd_addAgreement(DdManager *dd, DdNode **f, DdNode **g);
678 extern DdNode * Cudd_addOr(DdManager *dd, DdNode **f, DdNode **g);
679 extern DdNode * Cudd_addNand(DdManager *dd, DdNode **f, DdNode **g);
680 extern DdNode * Cudd_addNor(DdManager *dd, DdNode **f, DdNode **g);
681 extern DdNode * Cudd_addXor(DdManager *dd, DdNode **f, DdNode **g);
682 extern DdNode * Cudd_addXnor(DdManager *dd, DdNode **f, DdNode **g);
683 extern DdNode * Cudd_addMonadicApply(DdManager * dd, DD_MAOP op, DdNode * f);
684 extern DdNode * Cudd_addLog(DdManager * dd, DdNode * f);
685 extern DdNode * Cudd_addFindMax(DdManager *dd, DdNode *f);
686 extern DdNode * Cudd_addFindMin(DdManager *dd, DdNode *f);
687 extern DdNode * Cudd_addIthBit(DdManager *dd, DdNode *f, int bit);
688 extern DdNode * Cudd_addScalarInverse(DdManager *dd, DdNode *f, DdNode *epsilon);
689 extern DdNode * Cudd_addIte(DdManager *dd, DdNode *f, DdNode *g, DdNode *h);
690 extern DdNode * Cudd_addIteConstant(DdManager *dd, DdNode *f, DdNode *g, DdNode *h);
691 extern DdNode * Cudd_addEvalConst(DdManager *dd, DdNode *f, DdNode *g);
692 extern int Cudd_addLeq(DdManager * dd, DdNode * f, DdNode * g);
693 extern DdNode * Cudd_addCmpl(DdManager *dd, DdNode *f);
694 extern DdNode * Cudd_addNegate(DdManager *dd, DdNode *f);
695 extern DdNode * Cudd_addRoundOff(DdManager *dd, DdNode *f, int N);
696 extern DdNode * Cudd_addWalsh(DdManager *dd, DdNode **x, DdNode **y, int n);
697 extern DdNode * Cudd_addResidue(DdManager *dd, int n, int m, int options, int top);
698 extern DdNode * Cudd_bddAndAbstract(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube);
699 extern DdNode * Cudd_bddAndAbstractLimit(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube, unsigned int limit);
700 extern int Cudd_ApaNumberOfDigits(int binaryDigits);
701 extern DdApaNumber Cudd_NewApaNumber(int digits);
702 extern void Cudd_FreeApaNumber(DdApaNumber number);
703 extern void Cudd_ApaCopy(int digits, DdConstApaNumber source, DdApaNumber dest);
706 extern DdApaDigit Cudd_ApaShortDivision(int digits, DdConstApaNumber dividend, DdApaDigit divisor, DdApaNumber quotient);
707 extern unsigned int Cudd_ApaIntDivision(int digits, DdConstApaNumber dividend, unsigned int divisor, DdApaNumber quotient);
708 extern void Cudd_ApaShiftRight(int digits, DdApaDigit in, DdConstApaNumber a, DdApaNumber b);
709 extern void Cudd_ApaSetToLiteral(int digits, DdApaNumber number, DdApaDigit literal);
710 extern void Cudd_ApaPowerOfTwo(int digits, DdApaNumber number, int power);
711 extern int Cudd_ApaCompare(int digitsFirst, DdConstApaNumber first, int digitsSecond, DdConstApaNumber second);
712 extern int Cudd_ApaCompareRatios(int digitsFirst, DdConstApaNumber firstNum, unsigned int firstDen, int digitsSecond, DdConstApaNumber secondNum, unsigned int secondDen);
713 extern int Cudd_ApaPrintHex(FILE *fp, int digits, DdConstApaNumber number);
714 extern int Cudd_ApaPrintDecimal(FILE *fp, int digits, DdConstApaNumber number);
715 extern char * Cudd_ApaStringDecimal(int digits, DdConstApaNumber number);
716 extern int Cudd_ApaPrintExponential(FILE * fp, int digits, DdConstApaNumber number, int precision);
717 extern DdApaNumber Cudd_ApaCountMinterm(DdManager const *manager, DdNode *node, int nvars, int *digits);
718 extern int Cudd_ApaPrintMinterm(FILE *fp, DdManager const *dd, DdNode *node, int nvars);
719 extern int Cudd_ApaPrintMintermExp(FILE * fp, DdManager const * dd, DdNode *node, int nvars, int precision);
720 extern int Cudd_ApaPrintDensity(FILE * fp, DdManager * dd, DdNode * node, int nvars);
721 extern DdNode * Cudd_UnderApprox(DdManager *dd, DdNode *f, int numVars, int threshold, int safe, double quality);
722 extern DdNode * Cudd_OverApprox(DdManager *dd, DdNode *f, int numVars, int threshold, int safe, double quality);
723 extern DdNode * Cudd_RemapUnderApprox(DdManager *dd, DdNode *f, int numVars, int threshold, double quality);
724 extern DdNode * Cudd_RemapOverApprox(DdManager *dd, DdNode *f, int numVars, int threshold, double quality);
725 extern DdNode * Cudd_BiasedUnderApprox(DdManager *dd, DdNode *f, DdNode *b, int numVars, int threshold, double quality1, double quality0);
726 extern DdNode * Cudd_BiasedOverApprox(DdManager *dd, DdNode *f, DdNode *b, int numVars, int threshold, double quality1, double quality0);
727 extern DdNode * Cudd_bddExistAbstract(DdManager *manager, DdNode *f, DdNode *cube);
728 extern DdNode * Cudd_bddExistAbstractLimit(DdManager * manager, DdNode * f, DdNode * cube, unsigned int limit);
729 extern DdNode * Cudd_bddXorExistAbstract(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube);
730 extern DdNode * Cudd_bddUnivAbstract(DdManager *manager, DdNode *f, DdNode *cube);
731 extern DdNode * Cudd_bddBooleanDiff(DdManager *manager, DdNode *f, int x);
732 extern int Cudd_bddVarIsDependent(DdManager *dd, DdNode *f, DdNode *var);
733 extern double Cudd_bddCorrelation(DdManager *manager, DdNode *f, DdNode *g);
734 extern double Cudd_bddCorrelationWeights(DdManager *manager, DdNode *f, DdNode *g, double *prob);
735 extern DdNode * Cudd_bddIte(DdManager *dd, DdNode *f, DdNode *g, DdNode *h);
736 extern DdNode * Cudd_bddIteLimit(DdManager *dd, DdNode *f, DdNode *g, DdNode *h, unsigned int limit);
737 extern DdNode * Cudd_bddIteConstant(DdManager *dd, DdNode *f, DdNode *g, DdNode *h);
738 extern DdNode * Cudd_bddIntersect(DdManager *dd, DdNode *f, DdNode *g);
739 extern DdNode * Cudd_bddAnd(DdManager *dd, DdNode *f, DdNode *g);
740 extern DdNode * Cudd_bddAndLimit(DdManager *dd, DdNode *f, DdNode *g, unsigned int limit);
741 extern DdNode * Cudd_bddOr(DdManager *dd, DdNode *f, DdNode *g);
742 extern DdNode * Cudd_bddOrLimit(DdManager *dd, DdNode *f, DdNode *g, unsigned int limit);
743 extern DdNode * Cudd_bddNand(DdManager *dd, DdNode *f, DdNode *g);
744 extern DdNode * Cudd_bddNor(DdManager *dd, DdNode *f, DdNode *g);
745 extern DdNode * Cudd_bddXor(DdManager *dd, DdNode *f, DdNode *g);
746 extern DdNode * Cudd_bddXnor(DdManager *dd, DdNode *f, DdNode *g);
747 extern DdNode * Cudd_bddXnorLimit(DdManager *dd, DdNode *f, DdNode *g, unsigned int limit);
748 extern int Cudd_bddLeq(DdManager *dd, DdNode *f, DdNode *g);
752 extern DdNode * Cudd_addBddIthBit(DdManager *dd, DdNode *f, int bit);
753 extern DdNode * Cudd_BddToAdd(DdManager *dd, DdNode *B);
754 extern DdNode * Cudd_addBddPattern(DdManager *dd, DdNode *f);
755 extern DdNode * Cudd_bddTransfer(DdManager *ddSource, DdManager *ddDestination, DdNode *f);
756 extern int Cudd_DebugCheck(DdManager *table);
757 extern int Cudd_CheckKeys(DdManager *table);
758 extern DdNode * Cudd_bddClippingAnd(DdManager *dd, DdNode *f, DdNode *g, int maxDepth, int direction);
759 extern DdNode * Cudd_bddClippingAndAbstract(DdManager *dd, DdNode *f, DdNode *g, DdNode *cube, int maxDepth, int direction);
760 extern DdNode * Cudd_Cofactor(DdManager *dd, DdNode *f, DdNode *g);
761 extern int Cudd_CheckCube(DdManager *dd, DdNode *g);
762 extern int Cudd_VarsAreSymmetric(DdManager * dd, DdNode * f, int index1, int index2);
763 extern DdNode * Cudd_bddCompose(DdManager *dd, DdNode *f, DdNode *g, int v);
764 extern DdNode * Cudd_addCompose(DdManager *dd, DdNode *f, DdNode *g, int v);
765 extern DdNode * Cudd_addPermute(DdManager *manager, DdNode *node, int *permut);
766 extern DdNode * Cudd_addSwapVariables(DdManager *dd, DdNode *f, DdNode **x, DdNode **y, int n);
767 extern DdNode * Cudd_bddPermute(DdManager *manager, DdNode *node, int *permut);
768 extern DdNode * Cudd_bddVarMap(DdManager *manager, DdNode *f);
769 extern int Cudd_SetVarMap(DdManager *manager, DdNode **x, DdNode **y, int n);
770 extern DdNode * Cudd_bddSwapVariables(DdManager *dd, DdNode *f, DdNode **x, DdNode **y, int n);
771 extern DdNode * Cudd_bddAdjPermuteX(DdManager *dd, DdNode *B, DdNode **x, int n);
772 extern DdNode * Cudd_addVectorCompose(DdManager *dd, DdNode *f, DdNode **vector);
773 extern DdNode * Cudd_addGeneralVectorCompose(DdManager *dd, DdNode *f, DdNode **vectorOn, DdNode **vectorOff);
774 extern DdNode * Cudd_addNonSimCompose(DdManager *dd, DdNode *f, DdNode **vector);
775 extern DdNode * Cudd_bddVectorCompose(DdManager *dd, DdNode *f, DdNode **vector);
776 extern int Cudd_bddApproxConjDecomp(DdManager *dd, DdNode *f, DdNode ***conjuncts);
777 extern int Cudd_bddApproxDisjDecomp(DdManager *dd, DdNode *f, DdNode ***disjuncts);
778 extern int Cudd_bddIterConjDecomp(DdManager *dd, DdNode *f, DdNode ***conjuncts);
779 extern int Cudd_bddIterDisjDecomp(DdManager *dd, DdNode *f, DdNode ***disjuncts);
780 extern int Cudd_bddGenConjDecomp(DdManager *dd, DdNode *f, DdNode ***conjuncts);
781 extern int Cudd_bddGenDisjDecomp(DdManager *dd, DdNode *f, DdNode ***disjuncts);
782 extern int Cudd_bddVarConjDecomp(DdManager *dd, DdNode * f, DdNode ***conjuncts);
783 extern int Cudd_bddVarDisjDecomp(DdManager *dd, DdNode * f, DdNode ***disjuncts);
784 extern DdNode * Cudd_FindEssential(DdManager *dd, DdNode *f);
785 extern int Cudd_bddIsVarEssential(DdManager *manager, DdNode *f, int id, int phase);
787 extern int Cudd_PrintTwoLiteralClauses(DdManager * dd, DdNode * f, char **names, FILE *fp);
788 extern int Cudd_ReadIthClause(DdTlcInfo * tlc, int i, unsigned *var1, unsigned *var2, int *phase1, int *phase2);
789 extern void Cudd_tlcInfoFree(DdTlcInfo * t);
790 extern int Cudd_DumpBlif(DdManager *dd, int n, DdNode **f, char const * const *inames, char const * const *onames, char *mname, FILE *fp, int mv);
791 extern int Cudd_DumpBlifBody(DdManager *dd, int n, DdNode **f, char const * const *inames, char const * const *onames, FILE *fp, int mv);
792 extern int Cudd_DumpDot(DdManager *dd, int n, DdNode **f, char const * const *inames, char const * const *onames, FILE *fp);
793 extern int Cudd_DumpDaVinci(DdManager *dd, int n, DdNode **f, char const * const *inames, char const * const *onames, FILE *fp);
794 extern int Cudd_DumpDDcal(DdManager *dd, int n, DdNode **f, char const * const *inames, char const * const *onames, FILE *fp);
795 extern int Cudd_DumpFactoredForm(DdManager *dd, int n, DdNode **f, char const * const *inames, char const * const *onames, FILE *fp);
796 extern char * Cudd_FactoredFormString(DdManager *dd, DdNode *f, char const * const * inames);
797 extern DdNode * Cudd_bddConstrain(DdManager *dd, DdNode *f, DdNode *c);
798 extern DdNode * Cudd_bddRestrict(DdManager *dd, DdNode *f, DdNode *c);
799 extern DdNode * Cudd_bddNPAnd(DdManager *dd, DdNode *f, DdNode *c);
800 extern DdNode * Cudd_addConstrain(DdManager *dd, DdNode *f, DdNode *c);
802 extern DdNode * Cudd_addRestrict(DdManager *dd, DdNode *f, DdNode *c);
803 extern DdNode ** Cudd_bddCharToVect(DdManager *dd, DdNode *f);
804 extern DdNode * Cudd_bddLICompaction(DdManager *dd, DdNode *f, DdNode *c);
805 extern DdNode * Cudd_bddSqueeze(DdManager *dd, DdNode *l, DdNode *u);
806 extern DdNode * Cudd_bddInterpolate(DdManager * dd, DdNode * l, DdNode * u);
807 extern DdNode * Cudd_bddMinimize(DdManager *dd, DdNode *f, DdNode *c);
808 extern DdNode * Cudd_SubsetCompress(DdManager *dd, DdNode *f, int nvars, int threshold);
809 extern DdNode * Cudd_SupersetCompress(DdManager *dd, DdNode *f, int nvars, int threshold);
810 extern int Cudd_addHarwell(FILE *fp, DdManager *dd, DdNode **E, DdNode ***x, DdNode ***y, DdNode ***xn, DdNode ***yn_, int *nx, int *ny, int *m, int *n, int bx, int sx, int by, int sy, int pr);
811 extern DdManager * Cudd_Init(unsigned int numVars, unsigned int numVarsZ, unsigned int numSlots, unsigned int cacheSize, size_t maxMemory);
812 extern void Cudd_Quit(DdManager *unique);
813 extern int Cudd_PrintLinear(DdManager *table);
814 extern int Cudd_ReadLinear(DdManager *table, int x, int y);
816 extern DdNode * Cudd_addMatrixMultiply(DdManager *dd, DdNode *A, DdNode *B, DdNode **z, int nz);
817 extern DdNode * Cudd_addTimesPlus(DdManager *dd, DdNode *A, DdNode *B, DdNode **z, int nz);
818 extern DdNode * Cudd_addTriangle(DdManager *dd, DdNode *f, DdNode *g, DdNode **z, int nz);
819 extern DdNode * Cudd_addOuterSum(DdManager *dd, DdNode *M, DdNode *r, DdNode *c);
820 extern DdNode * Cudd_PrioritySelect(DdManager *dd, DdNode *R, DdNode **x, DdNode **y, DdNode **z, DdNode *Pi, int n, DD_PRFP PiFunc);
821 extern DdNode * Cudd_Xgty(DdManager *dd, int N, DdNode **z, DdNode **x, DdNode **y);
822 extern DdNode * Cudd_Xeqy(DdManager *dd, int N, DdNode **x, DdNode **y);
823 extern DdNode * Cudd_addXeqy(DdManager *dd, int N, DdNode **x, DdNode **y);
824 extern DdNode * Cudd_Dxygtdxz(DdManager *dd, int N, DdNode **x, DdNode **y, DdNode **z);
825 extern DdNode * Cudd_Dxygtdyz(DdManager *dd, int N, DdNode **x, DdNode **y, DdNode **z);
826 extern DdNode * Cudd_Inequality(DdManager * dd, int N, int c, DdNode ** x, DdNode ** y);
827 extern DdNode * Cudd_Disequality(DdManager * dd, int N, int c, DdNode ** x, DdNode ** y);
828 extern DdNode * Cudd_bddInterval(DdManager * dd, int N, DdNode ** x, unsigned int lowerB, unsigned int upperB);
829 extern DdNode * Cudd_CProjection(DdManager *dd, DdNode *R, DdNode *Y);
830 extern DdNode * Cudd_addHamming(DdManager *dd, DdNode **xVars, DdNode **yVars, int nVars);
831 extern int Cudd_MinHammingDist(DdManager *dd, DdNode *f, int *minterm, int upperBound);
832 extern DdNode * Cudd_bddClosestCube(DdManager *dd, DdNode * f, DdNode *g, int *distance);
833 extern int Cudd_addRead(FILE *fp, DdManager *dd, DdNode **E, DdNode ***x, DdNode ***y, DdNode ***xn, DdNode ***yn_, int *nx, int *ny, int *m, int *n, int bx, int sx, int by, int sy);
834 extern int Cudd_bddRead(FILE *fp, DdManager *dd, DdNode **E, DdNode ***x, DdNode ***y, int *nx, int *ny, int *m, int *n, int bx, int sx, int by, int sy);
835 extern void Cudd_Ref(DdNode *n);
836 extern void Cudd_RecursiveDeref(DdManager *table, DdNode *n);
837 extern void Cudd_IterDerefBdd(DdManager *table, DdNode *n);
838 extern void Cudd_DelayedDerefBdd(DdManager * table, DdNode * n);
839 extern void Cudd_RecursiveDerefZdd(DdManager *table, DdNode *n);
840 extern void Cudd_Deref(DdNode *node);
841 extern int Cudd_CheckZeroRef(DdManager *manager);
842 extern int Cudd_ReduceHeap(DdManager *table, Cudd_ReorderingType heuristic, int minsize);
843 extern int Cudd_ShuffleHeap(DdManager *table, int *permutation);
844 extern DdNode * Cudd_Eval(DdManager *dd, DdNode *f, int *inputs);
845 extern DdNode * Cudd_ShortestPath(DdManager *manager, DdNode *f, int *weight, int *support, int *length);
846 extern DdNode * Cudd_LargestCube(DdManager *manager, DdNode *f, int *length);
847 extern int Cudd_ShortestLength(DdManager *manager, DdNode *f, int *weight);
848 extern DdNode * Cudd_Decreasing(DdManager *dd, DdNode *f, int i);
849 extern DdNode * Cudd_Increasing(DdManager *dd, DdNode *f, int i);
850 extern int Cudd_EquivDC(DdManager *dd, DdNode *F, DdNode *G, DdNode *D);
851 extern int Cudd_bddLeqUnless(DdManager *dd, DdNode *f, DdNode *g, DdNode *D);
852 extern int Cudd_EqualSupNorm(DdManager *dd, DdNode *f, DdNode *g, CUDD_VALUE_TYPE tolerance, int pr);
853 extern DdNode * Cudd_bddMakePrime(DdManager *dd, DdNode *cube, DdNode *f);
854 extern DdNode * Cudd_bddMaximallyExpand(DdManager *dd, DdNode *lb, DdNode *ub, DdNode *f);
855 extern DdNode * Cudd_bddLargestPrimeUnate(DdManager *dd , DdNode *f, DdNode *phaseBdd);
856 extern double * Cudd_CofMinterm(DdManager *dd, DdNode *node);
857 extern DdNode * Cudd_SolveEqn(DdManager * bdd, DdNode *F, DdNode *Y, DdNode **G, int **yIndex, int n);
858 extern DdNode * Cudd_VerifySol(DdManager * bdd, DdNode *F, DdNode **G, int *yIndex, int n);
859 extern DdNode * Cudd_SplitSet(DdManager *manager, DdNode *S, DdNode **xVars, int n, double m);
860 extern DdNode * Cudd_SubsetHeavyBranch(DdManager *dd, DdNode *f, int numVars, int threshold);
861 extern DdNode * Cudd_SupersetHeavyBranch(DdManager *dd, DdNode *f, int numVars, int threshold);
862 extern DdNode * Cudd_SubsetShortPaths(DdManager *dd, DdNode *f, int numVars, int threshold, int hardlimit);
863 extern DdNode * Cudd_SupersetShortPaths(DdManager *dd, DdNode *f, int numVars, int threshold, int hardlimit);
864 extern void Cudd_SymmProfile(DdManager *table, int lower, int upper);
865 extern unsigned int Cudd_Prime(unsigned int p);
866 extern int Cudd_Reserve(DdManager *manager, int amount);
867 extern int Cudd_PrintMinterm(DdManager *manager, DdNode *node);
868 extern int Cudd_bddPrintCover(DdManager *dd, DdNode *l, DdNode *u);
869 extern int Cudd_PrintDebug(DdManager *dd, DdNode *f, int n, int pr);
870 extern int Cudd_PrintSummary(DdManager * dd, DdNode * f, int n, int mode);
871 extern int Cudd_DagSize(DdNode *node);
872 extern int Cudd_EstimateCofactor(DdManager *dd, DdNode * node, int i, int phase);
873 extern int Cudd_EstimateCofactorSimple(DdNode * node, int i);
874 extern int Cudd_SharingSize(DdNode **nodeArray, int n);
875 extern double Cudd_CountMinterm(DdManager *manager, DdNode *node, int nvars);
876 #ifdef EPD_H_
877 extern int Cudd_EpdCountMinterm(DdManager const *manager, DdNode *node, int nvars, EpDouble *epd);
878 #endif
879 extern long double Cudd_LdblCountMinterm(DdManager const *manager, DdNode *node, int nvars);
880 extern int Cudd_EpdPrintMinterm(DdManager const * dd, DdNode * node, int nvars);
881 extern double Cudd_CountPath(DdNode *node);
882 extern double Cudd_CountPathsToNonZero(DdNode *node);
883 extern int Cudd_SupportIndices(DdManager * dd, DdNode * f, int **indices);
884 extern DdNode * Cudd_Support(DdManager *dd, DdNode *f);
885 extern int * Cudd_SupportIndex(DdManager *dd, DdNode *f);
886 extern int Cudd_SupportSize(DdManager *dd, DdNode *f);
887 extern int Cudd_VectorSupportIndices(DdManager * dd, DdNode ** F, int n, int **indices);
888 extern DdNode * Cudd_VectorSupport(DdManager *dd, DdNode **F, int n);
889 extern int * Cudd_VectorSupportIndex(DdManager *dd, DdNode **F, int n);
890 extern int Cudd_VectorSupportSize(DdManager *dd, DdNode **F, int n);
891 extern int Cudd_ClassifySupport(DdManager *dd, DdNode *f, DdNode *g, DdNode **common, DdNode **onlyF, DdNode **onlyG);
892 extern int Cudd_CountLeaves(DdNode *node);
893 extern int Cudd_bddPickOneCube(DdManager *ddm, DdNode *node, char *string);
894 extern DdNode * Cudd_bddPickOneMinterm(DdManager *dd, DdNode *f, DdNode **vars, int n);
895 extern DdNode ** Cudd_bddPickArbitraryMinterms(DdManager *dd, DdNode *f, DdNode **vars, int n, int k);
896 extern DdNode * Cudd_SubsetWithMaskVars(DdManager *dd, DdNode *f, DdNode **vars, int nvars, DdNode **maskVars, int mvars);
897 extern DdGen * Cudd_FirstCube(DdManager *dd, DdNode *f, int **cube, CUDD_VALUE_TYPE *value);
898 extern int Cudd_NextCube(DdGen *gen, int **cube, CUDD_VALUE_TYPE *value);
899 extern DdGen * Cudd_FirstPrime(DdManager *dd, DdNode *l, DdNode *u, int **cube);
900 extern int Cudd_NextPrime(DdGen *gen, int **cube);
901 extern DdNode * Cudd_bddComputeCube(DdManager *dd, DdNode **vars, int *phase, int n);
902 extern DdNode * Cudd_addComputeCube(DdManager *dd, DdNode **vars, int *phase, int n);
903 extern DdNode * Cudd_CubeArrayToBdd(DdManager *dd, int *array);
904 extern int Cudd_BddToCubeArray(DdManager *dd, DdNode *cube, int *array);
905 extern DdGen * Cudd_FirstNode(DdManager *dd, DdNode *f, DdNode **node);
906 extern int Cudd_NextNode(DdGen *gen, DdNode **node);
907 extern int Cudd_GenFree(DdGen *gen);
908 extern int Cudd_IsGenEmpty(DdGen *gen);
909 extern DdNode * Cudd_IndicesToCube(DdManager *dd, int *array, int n);
910 extern void Cudd_PrintVersion(FILE *fp);
911 extern double Cudd_AverageDistance(DdManager *dd);
912 extern int32_t Cudd_Random(DdManager * dd);
913 extern void Cudd_Srandom(DdManager * dd, int32_t seed);
914 extern double Cudd_Density(DdManager *dd, DdNode *f, int nvars);
915 extern void Cudd_OutOfMem(size_t size);
916 extern void Cudd_OutOfMemSilent(size_t size);
917 extern int Cudd_zddCount(DdManager *zdd, DdNode *P);
918 extern double Cudd_zddCountDouble(DdManager *zdd, DdNode *P);
919 extern DdNode * Cudd_zddProduct(DdManager *dd, DdNode *f, DdNode *g);
920 extern DdNode * Cudd_zddUnateProduct(DdManager *dd, DdNode *f, DdNode *g);
921 extern DdNode * Cudd_zddWeakDiv(DdManager *dd, DdNode *f, DdNode *g);
922 extern DdNode * Cudd_zddDivide(DdManager *dd, DdNode *f, DdNode *g);
923 extern DdNode * Cudd_zddWeakDivF(DdManager *dd, DdNode *f, DdNode *g);
924 extern DdNode * Cudd_zddDivideF(DdManager *dd, DdNode *f, DdNode *g);
925 extern DdNode * Cudd_zddComplement(DdManager *dd, DdNode *node);
926 extern DdNode * Cudd_zddIsop(DdManager *dd, DdNode *L, DdNode *U, DdNode **zdd_I);
927 extern DdNode * Cudd_bddIsop(DdManager *dd, DdNode *L, DdNode *U);
928 extern DdNode * Cudd_MakeBddFromZddCover(DdManager *dd, DdNode *node);
929 extern int Cudd_zddDagSize(DdNode *p_node);
930 extern double Cudd_zddCountMinterm(DdManager *zdd, DdNode *node, int path);
931 extern void Cudd_zddPrintSubtable(DdManager *table);
932 extern DdNode * Cudd_zddPortFromBdd(DdManager *dd, DdNode *B);
933 extern DdNode * Cudd_zddPortToBdd(DdManager *dd, DdNode *f);
934 extern int Cudd_zddReduceHeap(DdManager *table, Cudd_ReorderingType heuristic, int minsize);
935 extern int Cudd_zddShuffleHeap(DdManager *table, int *permutation);
936 extern DdNode * Cudd_zddIte(DdManager *dd, DdNode *f, DdNode *g, DdNode *h);
937 extern DdNode * Cudd_zddUnion(DdManager *dd, DdNode *P, DdNode *Q);
938 extern DdNode * Cudd_zddIntersect(DdManager *dd, DdNode *P, DdNode *Q);
939 extern DdNode * Cudd_zddDiff(DdManager *dd, DdNode *P, DdNode *Q);
940 extern DdNode * Cudd_zddDiffConst(DdManager *zdd, DdNode *P, DdNode *Q);
941 extern DdNode * Cudd_zddSubset1(DdManager *dd, DdNode *P, int var);
942 extern DdNode * Cudd_zddSubset0(DdManager *dd, DdNode *P, int var);
943 extern DdNode * Cudd_zddChange(DdManager *dd, DdNode *P, int var);
944 extern void Cudd_zddSymmProfile(DdManager *table, int lower, int upper);
945 extern int Cudd_zddPrintMinterm(DdManager *zdd, DdNode *node);
946 extern int Cudd_zddPrintCover(DdManager *zdd, DdNode *node);
947 extern int Cudd_zddPrintDebug(DdManager *zdd, DdNode *f, int n, int pr);
948 extern DdGen * Cudd_zddFirstPath(DdManager *zdd, DdNode *f, int **path);
949 extern int Cudd_zddNextPath(DdGen *gen, int **path);
950 extern char * Cudd_zddCoverPathToString(DdManager *zdd, int *path, char *str);
951 extern DdNode * Cudd_zddSupport(DdManager * dd, DdNode * f);
952 extern int Cudd_zddDumpDot(DdManager *dd, int n, DdNode **f, char const * const *inames, char const * const *onames, FILE *fp);
953 extern int Cudd_bddSetPiVar(DdManager *dd, int index);
954 extern int Cudd_bddSetPsVar(DdManager *dd, int index);
955 extern int Cudd_bddSetNsVar(DdManager *dd, int index);
956 extern int Cudd_bddIsPiVar(DdManager *dd, int index);
957 extern int Cudd_bddIsPsVar(DdManager *dd, int index);
958 extern int Cudd_bddIsNsVar(DdManager *dd, int index);
959 extern int Cudd_bddSetPairIndex(DdManager *dd, int index, int pairIndex);
960 extern int Cudd_bddReadPairIndex(DdManager *dd, int index);
961 extern int Cudd_bddSetVarToBeGrouped(DdManager *dd, int index);
962 extern int Cudd_bddSetVarHardGroup(DdManager *dd, int index);
963 extern int Cudd_bddResetVarToBeGrouped(DdManager *dd, int index);
964 extern int Cudd_bddIsVarToBeGrouped(DdManager *dd, int index);
965 extern int Cudd_bddSetVarToBeUngrouped(DdManager *dd, int index);
966 extern int Cudd_bddIsVarToBeUngrouped(DdManager *dd, int index);
967 extern int Cudd_bddIsVarHardGroup(DdManager *dd, int index);
968 #ifdef MTR_H_
969 extern MtrNode * Cudd_ReadTree(DdManager *dd);
970 extern void Cudd_SetTree(DdManager *dd, MtrNode *tree);
971 extern void Cudd_FreeTree(DdManager *dd);
972 extern MtrNode * Cudd_ReadZddTree(DdManager *dd);
973 extern void Cudd_SetZddTree(DdManager *dd, MtrNode *tree);
974 extern void Cudd_FreeZddTree(DdManager *dd);
975 extern MtrNode * Cudd_MakeTreeNode(DdManager *dd, unsigned int low, unsigned int size, unsigned int type);
976 extern MtrNode * Cudd_MakeZddTreeNode(DdManager *dd, unsigned int low, unsigned int size, unsigned int type);
977 #endif
978 
979 #ifdef __cplusplus
980 } /* end of extern "C" */
981 #endif
982 
983 #endif /* CUDD_H_ */
void Cudd_UnsetTimeLimit(DdManager *unique)
Unsets the time limit for the manager.
Definition: cuddAPI.c:825
int Cudd_ReadLinear(DdManager *table, int x, int y)
Reads an entry of the linear transform matrix.
Definition: cuddLinear.c:145
void Cudd_IterDerefBdd(DdManager *table, DdNode *n)
Decreases the reference count of BDD node n.
Definition: cuddRef.c:181
DdApaDigit Cudd_ApaShortDivision(int digits, DdConstApaNumber dividend, DdApaDigit divisor, DdApaNumber quotient)
Divides an arbitrary precision integer by a digit.
Definition: cuddApa.c:269
void Cudd_OutOfMemSilent(size_t size)
Doesn not warn that a memory allocation failed.
Definition: cuddUtil.c:2919
int Cudd_bddApproxDisjDecomp(DdManager *dd, DdNode *f, DdNode ***disjuncts)
Performs two-way disjunctive decomposition of a BDD.
Definition: cuddDecomp.c:250
int Cudd_bddSetVarHardGroup(DdManager *dd, int index)
Sets a variable to be a hard group.
Definition: cuddAPI.c:4539
DdNode * Cudd_SubsetHeavyBranch(DdManager *dd, DdNode *f, int numVars, int threshold)
Extracts a dense subset from a BDD with the heavy branch heuristic.
Definition: cuddSubsetHB.c:180
void Cudd_SetOrderRandomization(DdManager *dd, unsigned int factor)
Sets the order randomization factor.
Definition: cuddAPI.c:3115
DdNode * Cudd_addBddThreshold(DdManager *dd, DdNode *f, CUDD_VALUE_TYPE value)
Converts an ADD to a BDD.
Definition: cuddBridge.c:110
void Cudd_tlcInfoFree(DdTlcInfo *t)
Frees a DdTlcInfo Structure.
Definition: cuddEssent.c:420
unsigned int Cudd_ReadMaxIndex(void)
Returns the maximum possible index for a variable.
Definition: cuddAPI.c:511
DdNode *(* DD_MAOP)(DdManager *, DdNode *)
Type of monadic apply operator.
Definition: cudd.h:246
unsigned long Cudd_ReadTimeLimit(DdManager *unique)
Returns the time limit for the manager.
Definition: cuddAPI.c:727
DdNode * Cudd_addOrAbstract(DdManager *manager, DdNode *f, DdNode *cube)
Disjunctively abstracts all the variables in cube from the 0-1 ADD f.
Definition: cuddAddAbs.c:184
int Cudd_bddSetVarToBeUngrouped(DdManager *dd, int index)
Sets a variable to be ungrouped.
Definition: cuddAPI.c:4612
DdNode * Cudd_bddNPAnd(DdManager *dd, DdNode *f, DdNode *c)
Computes f non-polluting-and g.
Definition: cuddGenCof.c:257
DdApaNumber Cudd_NewApaNumber(int digits)
Allocates memory for an arbitrary precision integer.
Definition: cuddApa.c:160
double Cudd_AverageDistance(DdManager *dd)
Computes the average distance between adjacent nodes in the manager.
Definition: cuddUtil.c:2673
DdNode * Cudd_addMonadicApply(DdManager *dd, DD_MAOP op, DdNode *f)
Applies op to the discriminants of f.
Definition: cuddAddApply.c:690
MtrNode * Cudd_ReadZddTree(DdManager *dd)
Returns the variable group tree of the manager.
Definition: cuddAPI.c:2441
DdNode * Cudd_SubsetWithMaskVars(DdManager *dd, DdNode *f, DdNode **vars, int nvars, DdNode **maskVars, int mvars)
Extracts a subset from a BDD.
Definition: cuddUtil.c:1685
void Cudd_RecursiveDerefZdd(DdManager *table, DdNode *n)
Decreases the reference count of ZDD node n.
Definition: cuddRef.c:347
void Cudd_SetNumberXovers(DdManager *dd, int numberXovers)
Sets the number of crossovers used by the genetic algorithm for variable reordering.
Definition: cuddAPI.c:3076
DdNode * Cudd_bddNewVar(DdManager *dd)
Returns a new BDD variable.
Definition: cuddAPI.c:180
unsigned int Cudd_ReadMaxCache(DdManager *dd)
Returns the soft limit for the cache size.
Definition: cuddAPI.c:1631
long Cudd_zddReadNodeCount(DdManager *dd)
Reports the number of nodes in ZDDs.
Definition: cuddAPI.c:3424
DdManager * Cudd_Init(unsigned int numVars, unsigned int numVarsZ, unsigned int numSlots, unsigned int cacheSize, size_t maxMemory)
Creates a new DD manager.
Definition: cuddInit.c:102
DdNode * Cudd_FindEssential(DdManager *dd, DdNode *f)
Finds the essential variables of a DD.
Definition: cuddEssent.c:174
void Cudd_FreeApaNumber(DdApaNumber number)
Frees an arbitrary precision integer.
Definition: cuddApa.c:176
int Cudd_bddSetPiVar(DdManager *dd, int index)
Sets a variable type to primary input.
Definition: cuddAPI.c:4322
DdNode * Cudd_bddUnivAbstract(DdManager *manager, DdNode *f, DdNode *cube)
Universally abstracts all the variables in cube from f.
Definition: cuddBddAbs.c:226
DdNode * Cudd_CProjection(DdManager *dd, DdNode *R, DdNode *Y)
Computes the compatible projection of R w.r.t. cube Y.
Definition: cuddPriority.c:1151
DdNode * Cudd_Xeqy(DdManager *dd, int N, DdNode **x, DdNode **y)
Generates a BDD for the function x==y.
Definition: cuddPriority.c:303
int Cudd_ReadIthClause(DdTlcInfo *tlc, int i, unsigned *var1, unsigned *var2, int *phase1, int *phase2)
Accesses the i-th clause of a DD.
Definition: cuddEssent.c:328
int Cudd_bddVarConjDecomp(DdManager *dd, DdNode *f, DdNode ***conjuncts)
Performs two-way conjunctive decomposition of a BDD.
Definition: cuddDecomp.c:590
int Cudd_CheckCube(DdManager *dd, DdNode *g)
Checks whether g is the BDD of a cube.
Definition: cuddCof.c:140
DD_TOHFP Cudd_ReadTimeoutHandler(DdManager *unique, void **argp)
Read the current timeout handler function.
Definition: cuddAPI.c:964
DdNode * Cudd_VerifySol(DdManager *bdd, DdNode *F, DdNode **G, int *yIndex, int n)
Checks the solution of F(x,y) = 0.
Definition: cuddSolve.c:148
int Cudd_ApaPrintDecimal(FILE *fp, int digits, DdConstApaNumber number)
Prints an arbitrary precision integer in decimal format.
Definition: cuddApa.c:526
double * Cudd_CofMinterm(DdManager *dd, DdNode *node)
Computes the fraction of minterms in the on-set of all the positive cofactors of a BDD or ADD...
Definition: cuddSign.c:101
int Cudd_ReorderingStatusZdd(DdManager *unique, Cudd_ReorderingType *method)
Reports the status of automatic dynamic reordering of ZDDs.
Definition: cuddAPI.c:1123
DdNode * Cudd_addConstrain(DdManager *dd, DdNode *f, DdNode *c)
Computes f constrain c for ADDs.
Definition: cuddGenCof.c:297
unsigned int Cudd_ReadCacheSlots(DdManager *dd)
Reads the number of slots in the cache.
Definition: cuddAPI.c:1433
DdNode * Cudd_addScalarInverse(DdManager *dd, DdNode *f, DdNode *epsilon)
Computes the scalar inverse of an ADD.
Definition: cuddAddInv.c:102
Cudd_AggregationType
Type of aggregation methods.
Definition: cudd.h:123
DdNode * Cudd_addSwapVariables(DdManager *dd, DdNode *f, DdNode **x, DdNode **y, int n)
Swaps two sets of variables of the same size (x and y) in the ADD f.
Definition: cuddCompose.c:241
DdNode * Cudd_bddPickOneMinterm(DdManager *dd, DdNode *f, DdNode **vars, int n)
Picks one on-set minterm randomly from the given DD.
Definition: cuddUtil.c:1379
DdNode * Cudd_zddDiffConst(DdManager *zdd, DdNode *P, DdNode *Q)
Performs the inclusion test for ZDDs (P implies Q).
Definition: cuddZddSetop.c:217
void Cudd_RegisterTerminationCallback(DdManager *unique, DD_THFP callback, void *callback_arg)
Installs a termination callback.
Definition: cuddAPI.c:863
void Cudd_SetMaxCacheHard(DdManager *dd, unsigned int mc)
Sets the maxCacheHard parameter of the manager.
Definition: cuddAPI.c:1671
DdNode * Cudd_zddPortFromBdd(DdManager *dd, DdNode *B)
Converts a BDD into a ZDD.
Definition: cuddZddPort.c:107
DdNode * Cudd_bddComputeCube(DdManager *dd, DdNode **vars, int *phase, int n)
Computes the cube of an array of BDD variables.
Definition: cuddUtil.c:2272
void Cudd_RecursiveDeref(DdManager *table, DdNode *n)
Decreases the reference count of node n.
Definition: cuddRef.c:120
int Cudd_bddIsVarHardGroup(DdManager *dd, int index)
Checks whether a variable is set to be in a hard group.
Definition: cuddAPI.c:4663
double Cudd_CountMinterm(DdManager *manager, DdNode *node, int nvars)
Counts the minterms of an ADD or BDD.
Definition: cuddUtil.c:581
Decision diagram node.
Definition: cuddInt.h:261
DdNode * Cudd_bddMaximallyExpand(DdManager *dd, DdNode *lb, DdNode *ub, DdNode *f)
Expands lb to prime implicants of (f and ub).
Definition: cuddSat.c:872
DdNode * Cudd_addLog(DdManager *dd, DdNode *f)
Natural logarithm of an ADD.
Definition: cuddAddApply.c:723
DdNode * Cudd_Dxygtdyz(DdManager *dd, int N, DdNode **x, DdNode **y, DdNode **z)
Generates a BDD for the function d(x,y) > d(y,z).
Definition: cuddPriority.c:575
int Cudd_IsNonConstant(DdNode *f)
Returns 1 if a DD node is not constant.
Definition: cuddAPI.c:572
int Cudd_ReadSymmviolation(DdManager *dd)
Returns the current value of the symmviolation parameter used in group sifting.
Definition: cuddAPI.c:2906
int Cudd_EpdCountMinterm(DdManager const *manager, DdNode *node, int nvars, EpDouble *epd)
Counts the minterms of an ADD or BDD with extended range.
Definition: cuddUtil.c:673
int Cudd_bddIterDisjDecomp(DdManager *dd, DdNode *f, DdNode ***disjuncts)
Performs two-way disjunctive decomposition of a BDD.
Definition: cuddDecomp.c:432
DdNode * Cudd_zddComplement(DdManager *dd, DdNode *node)
Computes a complement cover for a ZDD node.
Definition: cuddZddFuncs.c:299
void Cudd_ResetStartTime(DdManager *unique)
Resets the start time of the manager.
Definition: cuddAPI.c:706
unsigned int Cudd_ReadMinDead(DdManager *dd)
Reads the minDead parameter of the manager.
Definition: cuddAPI.c:1908
int(* DD_QSFP)(const void *, const void *)
Type of comparison function for qsort.
Definition: cudd.h:262
DdNode * Cudd_addCmpl(DdManager *dd, DdNode *f)
Computes the complement of an ADD a la C language.
Definition: cuddAddIte.c:324
DdNode * Cudd_ShortestPath(DdManager *manager, DdNode *f, int *weight, int *support, int *length)
Finds a shortest path in a DD.
Definition: cuddSat.c:164
int Cudd_SupportIndices(DdManager *dd, DdNode *f, int **indices)
Finds the variables on which a DD depends.
Definition: cuddUtil.c:833
DdNode ** Cudd_bddConstrainDecomp(DdManager *dd, DdNode *f)
BDD conjunctive decomposition as in McMillan&#39;s CAV96 paper.
Definition: cuddGenCof.c:334
DdNode * Cudd_addOr(DdManager *dd, DdNode **f, DdNode **g)
Disjunction of two 0-1 ADDs.
Definition: cuddAddApply.c:534
void Cudd_SetTree(DdManager *dd, MtrNode *tree)
Sets the variable group tree of the manager.
Definition: cuddAPI.c:2395
int Cudd_bddPickOneCube(DdManager *ddm, DdNode *node, char *string)
Picks one on-set cube randomly from the given DD.
Definition: cuddUtil.c:1308
DdNode * Cudd_zddSubset1(DdManager *dd, DdNode *P, int var)
Computes the positive cofactor of a ZDD w.r.t. a variable.
Definition: cuddZddSetop.c:280
MtrNode * Cudd_MakeTreeNode(DdManager *dd, unsigned int low, unsigned int size, unsigned int type)
Creates a new variable group.
Definition: cuddGroup.c:136
DdGen * Cudd_FirstNode(DdManager *dd, DdNode *f, DdNode **node)
Finds the first node of a decision diagram.
Definition: cuddUtil.c:2476
unsigned int Cudd_ReadMaxCacheHard(DdManager *dd)
Reads the maxCacheHard parameter of the manager.
Definition: cuddAPI.c:1648
int Cudd_ApaPrintDensity(FILE *fp, DdManager *dd, DdNode *node, int nvars)
Prints the density of a BDD or ADD using arbitrary precision arithmetic.
Definition: cuddApa.c:906
DdNode * Cudd_Support(DdManager *dd, DdNode *f)
Finds the variables on which a DD depends.
Definition: cuddUtil.c:876
void Cudd_RegisterTimeoutHandler(DdManager *unique, DD_TOHFP handler, void *arg)
Register a timeout handler function.
Definition: cuddAPI.c:944
void Cudd_Deref(DdNode *node)
Decreases the reference count of node.
Definition: cuddRef.c:399
DdNode * Cudd_addNewVarAtLevel(DdManager *dd, int level)
Returns a new ADD variable at a specified level.
Definition: cuddAPI.c:141
int Cudd_EquivDC(DdManager *dd, DdNode *F, DdNode *G, DdNode *D)
Tells whether F and G are identical wherever D is 0.
Definition: cuddSat.c:496
DdNode * Cudd_Xgty(DdManager *dd, int N, DdNode **z, DdNode **x, DdNode **y)
Generates a BDD for the function x > y.
Definition: cuddPriority.c:239
DdNode * Cudd_addComputeCube(DdManager *dd, DdNode **vars, int *phase, int n)
Computes the cube of an array of ADD variables.
Definition: cuddUtil.c:2322
int Cudd_NextPrime(DdGen *gen, int **cube)
Generates the next prime of a Boolean function.
Definition: cuddUtil.c:2206
DdNode * Cudd_addConst(DdManager *dd, CUDD_VALUE_TYPE c)
Returns the ADD for constant c.
Definition: cuddAPI.c:532
void Cudd_SetStdout(DdManager *dd, FILE *fp)
Sets the stdout of a manager.
Definition: cuddAPI.c:4035
DdNode * Cudd_bddAdjPermuteX(DdManager *dd, DdNode *B, DdNode **x, int n)
Rearranges a set of variables in the BDD B.
Definition: cuddCompose.c:475
DdNode * Cudd_bddIteLimit(DdManager *dd, DdNode *f, DdNode *g, DdNode *h, unsigned int limit)
Implements ITE(f,g,h) unless too many nodes are required.
Definition: cuddBddIte.c:137
int Cudd_bddVarIsBound(DdManager *dd, int index)
Tells whether a variable can be sifted.
Definition: cuddAPI.c:4299
int Cudd_Reserve(DdManager *manager, int amount)
Expand manager without creating variables.
Definition: cuddTable.c:189
DdNode * Cudd_addBddPattern(DdManager *dd, DdNode *f)
Converts an ADD to a BDD.
Definition: cuddBridge.c:348
unsigned int Cudd_ApaIntDivision(int digits, DdConstApaNumber dividend, unsigned int divisor, DdApaNumber quotient)
Divides an arbitrary precision integer by an integer.
Definition: cuddApa.c:313
int Cudd_PrintTwoLiteralClauses(DdManager *dd, DdNode *f, char **names, FILE *fp)
Prints the one- and two-literal clauses of a DD.
Definition: cuddEssent.c:362
double Cudd_zddCountMinterm(DdManager *zdd, DdNode *node, int path)
Counts the number of minterms of a ZDD.
Definition: cuddZddMisc.c:134
unsigned int Cudd_ReadNextReordering(DdManager *dd)
Returns the threshold for the next dynamic reordering.
Definition: cuddAPI.c:4097
multi-way tree node.
Definition: mtrInt.h:109
void Cudd_TurnOffCountDead(DdManager *dd)
Causes the dead nodes not to be counted towards triggering reordering.
Definition: cuddAPI.c:2835
int Cudd_bddResetVarToBeGrouped(DdManager *dd, int index)
Resets a variable not to be grouped.
Definition: cuddAPI.c:4563
DdNode * Cudd_RemapOverApprox(DdManager *dd, DdNode *f, int numVars, int threshold, double quality)
Extracts a dense superset from a BDD with the remapping underapproximation method.
Definition: cuddApprox.c:342
int Cudd_NextNode(DdGen *gen, DdNode **node)
Finds the next node of a decision diagram.
Definition: cuddUtil.c:2533
long double Cudd_LdblCountMinterm(DdManager const *manager, DdNode *node, int nvars)
Returns the number of minterms of aa ADD or BDD as a long double.
Definition: cuddUtil.c:721
Cudd_ErrorType
Type of error codes.
Definition: cudd.h:151
DdNode * Cudd_ReadLogicZero(DdManager *dd)
Returns the logic zero constant of the manager.
Definition: cuddAPI.c:1352
int Cudd_zddDagSize(DdNode *p_node)
Counts the number of nodes in a ZDD.
Definition: cuddZddMisc.c:102
DdNode * Cudd_addEvalConst(DdManager *dd, DdNode *f, DdNode *g)
Checks whether ADD g is constant whenever ADD f is 1.
Definition: cuddAddIte.c:237
DdNode ** Cudd_bddPickArbitraryMinterms(DdManager *dd, DdNode *f, DdNode **vars, int n, int k)
Picks k on-set minterms evenly distributed from given DD.
Definition: cuddUtil.c:1479
DdNode * Cudd_bddExistAbstract(DdManager *manager, DdNode *f, DdNode *cube)
Existentially abstracts all the variables in cube from f.
Definition: cuddBddAbs.c:101
void Cudd_AutodynDisableZdd(DdManager *unique)
Disables automatic dynamic reordering of ZDDs.
Definition: cuddAPI.c:1098
DdNode * Cudd_bddNor(DdManager *dd, DdNode *f, DdNode *g)
Computes the NOR of two BDDs f and g.
Definition: cuddBddIte.c:487
DdNode * Cudd_addNor(DdManager *dd, DdNode **f, DdNode **g)
NOR of two 0-1 ADDs.
Definition: cuddAddApply.c:596
unsigned int Cudd_ReadMinHit(DdManager *dd)
Reads the hit rate that causes resizinig of the computed table.
Definition: cuddAPI.c:1540
DdNode * Cudd_zddWeakDivF(DdManager *dd, DdNode *f, DdNode *g)
Modified version of Cudd_zddWeakDiv.
Definition: cuddZddFuncs.c:237
void Cudd_SetRecomb(DdManager *dd, int recomb)
Sets the value of the recombination parameter used in group sifting.
Definition: cuddAPI.c:2880
void Cudd_SetZddTree(DdManager *dd, MtrNode *tree)
Sets the ZDD variable group tree of the manager.
Definition: cuddAPI.c:2458
DdNode * Cudd_ReadPlusInfinity(DdManager *dd)
Reads the plus-infinity constant from the manager.
Definition: cuddAPI.c:1367
unsigned int Cudd_ReadMaxReorderings(DdManager *dd)
Returns the maximum number of times reordering may be invoked.
Definition: cuddAPI.c:1949
DdNode * Cudd_Decreasing(DdManager *dd, DdNode *f, int i)
Checks whether a BDD is negative unate in a variable.
Definition: cuddSat.c:392
void Cudd_SetStartTime(DdManager *unique, unsigned long st)
Sets the start time of the manager.
Definition: cuddAPI.c:688
DdNode * Cudd_BiasedOverApprox(DdManager *dd, DdNode *f, DdNode *b, int numVars, int threshold, double quality1, double quality0)
Extracts a dense superset from a BDD with the biased underapproximation method.
Definition: cuddApprox.c:443
int Cudd_SetVarMap(DdManager *manager, DdNode **x, DdNode **y, int n)
Registers a variable mapping with the manager.
Definition: cuddCompose.c:380
DdNode * Cudd_addFindMin(DdManager *dd, DdNode *f)
Finds the minimum discriminant of f.
Definition: cuddAddFind.c:138
DdApaDigit Cudd_ApaAdd(int digits, DdConstApaNumber a, DdConstApaNumber b, DdApaNumber sum)
Adds two arbitrary precision integers.
Definition: cuddApa.c:214
DdNode * Cudd_OverApprox(DdManager *dd, DdNode *f, int numVars, int threshold, int safe, double quality)
Extracts a dense superset from a BDD with Shiple&#39;s underapproximation method.
Definition: cuddApprox.c:247
void Cudd_SetBackground(DdManager *dd, DdNode *bck)
Sets the background constant of the manager.
Definition: cuddAPI.c:1415
void Cudd_SetMaxGrowthAlternate(DdManager *dd, double mg)
Sets the maxGrowthAlt parameter of the manager.
Definition: cuddAPI.c:2317
int Cudd_ShortestLength(DdManager *manager, DdNode *f, int *weight)
Find the length of the shortest path(s) in a DD.
Definition: cuddSat.c:331
DdNode * Cudd_CubeArrayToBdd(DdManager *dd, int *array)
Builds the BDD of a cube from a positional array.
Definition: cuddUtil.c:2375
int Cudd_bddSetVarToBeGrouped(DdManager *dd, int index)
Sets a variable to be grouped.
Definition: cuddAPI.c:4512
size_t Cudd_ReadMaxMemory(DdManager *dd)
Reads the maximum allowed memory.
Definition: cuddAPI.c:4198
void Cudd_FreeZddTree(DdManager *dd)
Frees the variable group tree of the manager.
Definition: cuddAPI.c:2483
DdNode * Cudd_zddPortToBdd(DdManager *dd, DdNode *f)
Converts a ZDD into a BDD.
Definition: cuddZddPort.c:138
int Cudd_zddRealignmentEnabled(DdManager *unique)
Tells whether the realignment of ZDD order to BDD order is enabled.
Definition: cuddAPI.c:1147
int Cudd_bddIsNsVar(DdManager *dd, int index)
Checks whether a variable is next state.
Definition: cuddAPI.c:4440
DdNode * Cudd_bddLargestPrimeUnate(DdManager *dd, DdNode *f, DdNode *phaseBdd)
Find a largest prime implicant of a unate function.
Definition: cuddSat.c:910
int Cudd_PrintSummary(DdManager *dd, DdNode *f, int n, int mode)
Prints a one-line summary of an ADD or BDD to the manager stdout.
Definition: cuddUtil.c:375
double Cudd_ReadNodesDropped(DdManager *dd)
Returns the number of nodes dropped.
Definition: cuddAPI.c:2076
Specialized DD symbol table.
Definition: cuddInt.h:399
Cudd_AggregationType Cudd_ReadGroupcheck(DdManager *dd)
Reads the groupcheck parameter of the manager.
Definition: cuddAPI.c:2688
DdNode * Cudd_bddAndAbstractLimit(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube, unsigned int limit)
Takes the AND of two BDDs and simultaneously abstracts variables unless too many nodes are needed...
Definition: cuddAndAbs.c:140
int Cudd_TimeLimited(DdManager *unique)
Returns true if the time limit for the manager is set.
Definition: cuddAPI.c:843
DdNode * Cudd_addIteConstant(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
Implements ITEconstant for ADDs.
Definition: cuddAddIte.c:140
int Cudd_ApaPrintHex(FILE *fp, int digits, DdConstApaNumber number)
Prints an arbitrary precision integer in hexadecimal format.
Definition: cuddApa.c:498
DdNode * Cudd_SupersetShortPaths(DdManager *dd, DdNode *f, int numVars, int threshold, int hardlimit)
Extracts a dense superset from a BDD with the shortest paths heuristic.
Definition: cuddSubsetSP.c:238
int Cudd_ReorderingReporting(DdManager *dd)
Returns 1 if reporting of reordering stats is enabled; 0 otherwise.
Definition: cuddAPI.c:3786
DdNode * Cudd_zddDiff(DdManager *dd, DdNode *P, DdNode *Q)
Computes the difference of two ZDDs.
Definition: cuddZddSetop.c:184
int Cudd_addHarwell(FILE *fp, DdManager *dd, DdNode **E, DdNode ***x, DdNode ***y, DdNode ***xn, DdNode ***yn_, int *nx, int *ny, int *m, int *n, int bx, int sx, int by, int sy, int pr)
Reads in a matrix in the format of the Harwell-Boeing benchmark suite.
Definition: cuddHarwell.c:109
DdNode * Cudd_bddAndLimit(DdManager *dd, DdNode *f, DdNode *g, unsigned int limit)
Computes the conjunction of two BDDs f and g unless too many nodes are required.
Definition: cuddBddIte.c:347
DdNode * Cudd_bddSwapVariables(DdManager *dd, DdNode *f, DdNode **x, DdNode **y, int n)
Swaps two sets of variables of the same size (x and y) in the BDD f.
Definition: cuddCompose.c:428
DdNode * Cudd_addMaximum(DdManager *dd, DdNode **f, DdNode **g)
Integer and floating point max.
Definition: cuddAddApply.c:388
CUDD generator.
Definition: cuddInt.h:274
DdNode * Cudd_ReadZero(DdManager *dd)
Returns the zero constant of the manager.
Definition: cuddAPI.c:1332
int32_t Cudd_Random(DdManager *dd)
Portable random number generator.
Definition: cuddUtil.c:2761
int Cudd_IsGenEmpty(DdGen *gen)
Queries the status of a generator.
Definition: cuddUtil.c:2601
DdNode * Cudd_bddLICompaction(DdManager *dd, DdNode *f, DdNode *c)
Performs safe minimization of a BDD.
Definition: cuddGenCof.c:541
DdNode * Cudd_bddClosestCube(DdManager *dd, DdNode *f, DdNode *g, int *distance)
Finds a cube of f at minimum Hamming distance from the minterms of g.
Definition: cuddPriority.c:1311
void Cudd_OutOfMem(size_t size)
Warns that a memory allocation failed.
Definition: cuddUtil.c:2894
int Cudd_bddGenConjDecomp(DdManager *dd, DdNode *f, DdNode ***conjuncts)
Performs two-way conjunctive decomposition of a BDD.
Definition: cuddDecomp.c:471
DdNode * Cudd_bddIte(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
Implements ITE(f,g,h).
Definition: cuddBddIte.c:104
DdNode * Cudd_addResidue(DdManager *dd, int n, int m, int options, int top)
Builds an ADD for the residue modulo m of an n-bit number.
Definition: cuddAddWalsh.c:141
DdNode * Cudd_bddOrLimit(DdManager *dd, DdNode *f, DdNode *g, unsigned int limit)
Computes the disjunction of two BDDs f and g unless too many nodes are required.
Definition: cuddBddIte.c:417
DdNode * Cudd_addXor(DdManager *dd, DdNode **f, DdNode **g)
XOR of two 0-1 ADDs.
Definition: cuddAddApply.c:626
size_t Cudd_ReadMemoryInUse(DdManager *dd)
Returns the memory in use by the manager measured in bytes.
Definition: cuddAPI.c:3131
DdNode * Cudd_PrioritySelect(DdManager *dd, DdNode *R, DdNode **x, DdNode **y, DdNode **z, DdNode *Pi, int n, DD_PRFP PiFunc)
Selects pairs from R using a priority function.
Definition: cuddPriority.c:135
DdNode * Cudd_zddDivide(DdManager *dd, DdNode *f, DdNode *g)
Computes the quotient of two unate covers.
Definition: cuddZddFuncs.c:207
int Cudd_CountLeaves(DdNode *node)
Counts the number of leaves in a DD.
Definition: cuddUtil.c:1282
DdNode * Cudd_SolveEqn(DdManager *bdd, DdNode *F, DdNode *Y, DdNode **G, int **yIndex, int n)
Implements the solution of F(x,y) = 0.
Definition: cuddSolve.c:104
void Cudd_SetApplicationHook(DdManager *dd, void *value)
Sets the application hook.
Definition: cuddAPI.c:3924
DdNode * Cudd_MakeBddFromZddCover(DdManager *dd, DdNode *node)
Converts a ZDD cover to a BDD.
Definition: cuddZddIsop.c:182
DdNode * Cudd_zddChange(DdManager *dd, DdNode *P, int var)
Substitutes a variable with its complement in a ZDD.
Definition: cuddZddSetop.c:343
DdNode * Cudd_BiasedUnderApprox(DdManager *dd, DdNode *f, DdNode *b, int numVars, int threshold, double quality1, double quality0)
Extracts a dense subset from a BDD with the biased underapproximation method.
Definition: cuddApprox.c:391
int Cudd_ReadPeakLiveNodeCount(DdManager *dd)
Reports the peak number of live nodes.
Definition: cuddAPI.c:3358
int Cudd_zddNextPath(DdGen *gen, int **path)
Generates the next path of a ZDD.
Definition: cuddZddUtil.c:350
int Cudd_DeadAreCounted(DdManager *dd)
Tells whether dead nodes are counted towards triggering reordering.
Definition: cuddAPI.c:2792
void Cudd_SetLooseUpTo(DdManager *dd, unsigned int lut)
Sets the looseUpTo parameter of the manager.
Definition: cuddAPI.c:1608
DdNode * Cudd_zddIntersect(DdManager *dd, DdNode *P, DdNode *Q)
Computes the intersection of two ZDDs.
Definition: cuddZddSetop.c:156
void Cudd_SetSiftMaxVar(DdManager *dd, int smv)
Sets the siftMaxVar parameter of the manager.
Definition: cuddAPI.c:2176
DdNode * Cudd_ReadVars(DdManager *dd, int i)
Returns the i-th element of the vars array.
Definition: cuddAPI.c:2625
long Cudd_ReadGarbageCollectionTime(DdManager *dd)
Returns the time spent in garbage collection.
Definition: cuddAPI.c:2029
DdNode * Cudd_SubsetCompress(DdManager *dd, DdNode *f, int nvars, int threshold)
Find a dense subset of BDD f.
Definition: cuddGenCof.c:711
int Cudd_bddRead(FILE *fp, DdManager *dd, DdNode **E, DdNode ***x, DdNode ***y, int *nx, int *ny, int *m, int *n, int bx, int sx, int by, int sy)
Reads in a graph (without labels) given as a list of arcs.
Definition: cuddRead.c:375
int Cudd_ReadSize(DdManager *dd)
Returns the number of BDD variables in existance.
Definition: cuddAPI.c:1694
DdNode * Cudd_addDivide(DdManager *dd, DdNode **f, DdNode **g)
Integer and floating point division.
Definition: cuddAddApply.c:272
DdNode * Cudd_bddInterval(DdManager *dd, int N, DdNode **x, unsigned int lowerB, unsigned int upperB)
Generates a BDD for the function lowerB ≤ x ≤ upperB.
Definition: cuddPriority.c:1072
DdNode * Cudd_addAgreement(DdManager *dd, DdNode **f, DdNode **g)
f if f==g; background if f!=g.
Definition: cuddAddApply.c:506
int Cudd_NextCube(DdGen *gen, int **cube, CUDD_VALUE_TYPE *value)
Generates the next cube of a decision diagram onset.
Definition: cuddUtil.c:1996
Cudd_VariableType
Variable type.
Definition: cudd.h:180
int Cudd_ReadInvPerm(DdManager *dd, int i)
Returns the index of the variable currently in the i-th position of the order.
Definition: cuddAPI.c:2575
int Cudd_bddIsVarEssential(DdManager *manager, DdNode *f, int id, int phase)
Determines whether a given variable is essential with a given phase in a BDD.
Definition: cuddEssent.c:205
CUDD_VALUE_TYPE Cudd_V(DdNode *node)
Returns the value of a constant node.
Definition: cuddAPI.c:630
DdNode * Cudd_zddIte(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
Computes the ITE of three ZDDs.
Definition: cuddZddSetop.c:99
DdGen * Cudd_zddFirstPath(DdManager *zdd, DdNode *f, int **path)
Finds the first path of a ZDD.
Definition: cuddZddUtil.c:238
DdNode * Cudd_bddTransfer(DdManager *ddSource, DdManager *ddDestination, DdNode *f)
Convert a BDD from a manager to another one.
Definition: cuddBridge.c:379
DdNode * Cudd_T(DdNode *node)
Returns the then child of an internal node.
Definition: cuddAPI.c:592
DdNode * Cudd_zddProduct(DdManager *dd, DdNode *f, DdNode *g)
Computes the product of two covers represented by ZDDs.
Definition: cuddZddFuncs.c:103
int Cudd_DumpDDcal(DdManager *dd, int n, DdNode **f, char const *const *inames, char const *const *onames, FILE *fp)
Writes a DDcal file representing the argument BDDs.
Definition: cuddExport.c:707
DdNode * Cudd_bddVectorCompose(DdManager *dd, DdNode *f, DdNode **vector)
Composes a BDD with a vector of BDDs.
Definition: cuddCompose.c:764
long Cudd_ReadReorderingTime(DdManager *dd)
Returns the time spent in reordering.
Definition: cuddAPI.c:1989
DdNode * Cudd_addNonSimCompose(DdManager *dd, DdNode *f, DdNode **vector)
Composes an ADD with a vector of 0-1 ADDs.
Definition: cuddCompose.c:652
DdNode * Cudd_LargestCube(DdManager *manager, DdNode *f, int *length)
Finds a largest cube in a DD.
Definition: cuddSat.c:252
unsigned long Cudd_ReadElapsedTime(DdManager *unique)
Returns the time elapsed since the start time of the manager.
Definition: cuddAPI.c:668
DdApaDigit const * DdConstApaNumber
Type of a const-qualified arbitrary precision integer.
Definition: cudd.h:224
DdNode * Cudd_bddNand(DdManager *dd, DdNode *f, DdNode *g)
Computes the NAND of two BDDs f and g.
Definition: cuddBddIte.c:454
DdNode * Cudd_ReadBackground(DdManager *dd)
Reads the background constant of the manager.
Definition: cuddAPI.c:1397
DdNode * Cudd_addCompose(DdManager *dd, DdNode *f, DdNode *g, int v)
Substitutes g for x_v in the ADD for f.
Definition: cuddCompose.c:155
int Cudd_addLeq(DdManager *dd, DdNode *f, DdNode *g)
Determines whether f is less than or equal to g.
Definition: cuddAddIte.c:356
DdNode * Cudd_bddIteConstant(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
Implements ITEconstant(f,g,h).
Definition: cuddBddIte.c:175
void Cudd_ClearErrorCode(DdManager *dd)
Clear the error code of a manager.
Definition: cuddAPI.c:3978
DdNode * Cudd_addApply(DdManager *dd, DD_AOP op, DdNode *f, DdNode *g)
Applies op to the corresponding discriminants of f and g.
Definition: cuddAddApply.c:100
DdNode * Cudd_bddMinimize(DdManager *dd, DdNode *f, DdNode *c)
Finds a small BDD that agrees with f over c.
Definition: cuddGenCof.c:665
DdApaDigit Cudd_ApaSubtract(int digits, DdConstApaNumber a, DdConstApaNumber b, DdApaNumber diff)
Subtracts two arbitrary precision integers.
Definition: cuddApa.c:242
DdNode * Cudd_zddUnion(DdManager *dd, DdNode *P, DdNode *Q)
Computes the union of two ZDDs.
Definition: cuddZddSetop.c:128
DdNode * Cudd_addBddIthBit(DdManager *dd, DdNode *f, int bit)
Converts an ADD to a BDD by extracting the i-th bit from the leaves.
Definition: cuddBridge.c:273
DdNode * Cudd_addRoundOff(DdManager *dd, DdNode *f, int N)
Rounds off the discriminants of an ADD.
Definition: cuddAddNeg.c:128
void Cudd_UnregisterOutOfMemoryCallback(DdManager *unique)
Unregister an out-of-memory callback.
Definition: cuddAPI.c:926
void(* DD_TOHFP)(DdManager *, void *)
Type of timeout handler.
Definition: cudd.h:270
double Cudd_ReadNodesFreed(DdManager *dd)
Returns the number of nodes freed.
Definition: cuddAPI.c:2050
void Cudd_SetReorderingCycle(DdManager *dd, int cycle)
Sets the reordCycle parameter of the manager.
Definition: cuddAPI.c:2360
void(* DD_OOMFP)(size_t)
Type of memory-out function.
Definition: cudd.h:258
int Cudd_EpdPrintMinterm(DdManager const *dd, DdNode *node, int nvars)
Prints the number of minterms of an ADD or BDD with extended range.
Definition: cuddUtil.c:769
int Cudd_ReadNumberXovers(DdManager *dd)
Reads the current number of crossovers used by the genetic algorithm for variable reordering...
Definition: cuddAPI.c:3052
void Cudd_UnregisterTerminationCallback(DdManager *unique)
Unregisters a termination callback.
Definition: cuddAPI.c:883
DdNode * Cudd_Eval(DdManager *dd, DdNode *f, int *inputs)
Returns the value of a DD for a given variable assignment.
Definition: cuddSat.c:119
int Cudd_bddIsPiVar(DdManager *dd, int index)
Checks whether a variable is primary input.
Definition: cuddAPI.c:4394
DdNode * Cudd_bddVarMap(DdManager *manager, DdNode *f)
Remaps the variables of a BDD using the default variable map.
Definition: cuddCompose.c:333
DdNode * Cudd_addThreshold(DdManager *dd, DdNode **f, DdNode **g)
f if f≥g; 0 if f<g.
Definition: cuddAddApply.c:212
DdNode * Cudd_bddLiteralSetIntersection(DdManager *dd, DdNode *f, DdNode *g)
Computes the intesection of two sets of literals represented as BDDs.
Definition: cuddLiteral.c:100
int Cudd_bddBindVar(DdManager *dd, int index)
Prevents sifting of a variable.
Definition: cuddAPI.c:4244
DdNode * Cudd_IndicesToCube(DdManager *dd, int *array, int n)
Builds a cube of BDD variables from an array of indices.
Definition: cuddUtil.c:2621
void Cudd_EnableGarbageCollection(DdManager *dd)
Enables garbage collection.
Definition: cuddAPI.c:2749
DdNode * Cudd_addPermute(DdManager *manager, DdNode *node, int *permut)
Permutes the variables of an ADD.
Definition: cuddCompose.c:197
int Cudd_EstimateCofactorSimple(DdNode *node, int i)
Estimates the number of nodes in a cofactor of a DD.
Definition: cuddUtil.c:515
DdGen * Cudd_FirstPrime(DdManager *dd, DdNode *l, DdNode *u, int **cube)
Finds the first prime of a Boolean function.
Definition: cuddUtil.c:2107
int Cudd_DumpFactoredForm(DdManager *dd, int n, DdNode **f, char const *const *inames, char const *const *onames, FILE *fp)
Writes factored forms representing the argument BDDs.
Definition: cuddExport.c:867
DD_OOMFP Cudd_InstallOutOfMemoryHandler(DD_OOMFP newHandler)
Installs a handler for failed memory allocations.
Definition: cuddAPI.c:3995
void Cudd_SetEpsilon(DdManager *dd, CUDD_VALUE_TYPE ep)
Sets the epsilon parameter of the manager to ep.
Definition: cuddAPI.c:2667
void Cudd_ApaShiftRight(int digits, DdApaDigit in, DdConstApaNumber a, DdApaNumber b)
Shifts right an arbitrary precision integer by one binary place.
Definition: cuddApa.c:346
DdNode * Cudd_addIthVar(DdManager *dd, int i)
Returns the ADD variable with index i.
Definition: cuddAPI.c:263
DdNode * Cudd_bddMakePrime(DdManager *dd, DdNode *cube, DdNode *f)
Expands cube to a prime implicant of f.
Definition: cuddSat.c:833
int Cudd_zddShuffleHeap(DdManager *table, int *permutation)
Reorders ZDD variables according to given permutation.
Definition: cuddZddReord.c:259
DdNode * Cudd_SupersetHeavyBranch(DdManager *dd, DdNode *f, int numVars, int threshold)
Extracts a dense superset from a BDD with the heavy branch heuristic.
Definition: cuddSubsetHB.c:231
Cudd_HookType
Type of hooks.
Definition: cudd.h:140
DdNode * Cudd_addXnor(DdManager *dd, DdNode **f, DdNode **g)
XNOR of two 0-1 ADDs.
Definition: cuddAddApply.c:658
DdNode * Cudd_Cofactor(DdManager *dd, DdNode *f, DdNode *g)
Computes the cofactor of f with respect to g.
Definition: cuddCof.c:103
DdNode * Cudd_bddExistAbstractLimit(DdManager *manager, DdNode *f, DdNode *cube, unsigned int limit)
Existentially abstracts all the variables in cube from f.
Definition: cuddBddAbs.c:141
int Cudd_ReadPerm(DdManager *dd, int i)
Returns the current position of the i-th variable in the order.
Definition: cuddAPI.c:2527
size_t Cudd_SetMaxMemory(DdManager *dd, size_t maxMemory)
Sets the maximum allowed memory.
Definition: cuddAPI.c:4219
int Cudd_PrintLinear(DdManager *table)
Prints the linear transform matrix.
Definition: cuddLinear.c:112
DdNode * Cudd_bddNewVarAtLevel(DdManager *dd, int level)
Returns a new BDD variable at a specified level.
Definition: cuddAPI.c:210
int Cudd_ShuffleHeap(DdManager *table, int *permutation)
Reorders variables according to given permutation.
Definition: cuddReorder.c:293
int Cudd_ReorderingStatus(DdManager *unique, Cudd_ReorderingType *method)
Reports the status of automatic dynamic reordering of BDDs and ADDs.
Definition: cuddAPI.c:1050
int Cudd_PrintInfo(DdManager *dd, FILE *fp)
Prints out statistics and settings for a CUDD manager.
Definition: cuddAPI.c:3148
DdNode * Cudd_bddConstrain(DdManager *dd, DdNode *f, DdNode *c)
Computes f constrain c.
Definition: cuddGenCof.c:134
DdNode * Cudd_zddSubset0(DdManager *dd, DdNode *P, int var)
Computes the negative cofactor of a ZDD w.r.t. a variable.
Definition: cuddZddSetop.c:314
double Cudd_bddCorrelation(DdManager *manager, DdNode *f, DdNode *g)
Computes the correlation of f and g.
Definition: cuddBddCorr.c:117
DdNode * Cudd_bddPermute(DdManager *manager, DdNode *node, int *permut)
Permutes the variables of a BDD.
Definition: cuddCompose.c:290
int Cudd_ApaPrintMintermExp(FILE *fp, DdManager const *dd, DdNode *node, int nvars, int precision)
Prints the number of minterms of a BDD or ADD in exponential format using arbitrary precision arithme...
Definition: cuddApa.c:872
int Cudd_bddGenDisjDecomp(DdManager *dd, DdNode *f, DdNode ***disjuncts)
Performs two-way disjunctive decomposition of a BDD.
Definition: cuddDecomp.c:550
DdNode * Cudd_bddCompose(DdManager *dd, DdNode *f, DdNode *g, int v)
Substitutes g for x_v in the BDD for f.
Definition: cuddCompose.c:116
void Cudd_Srandom(DdManager *dd, int32_t seed)
Initializer for the portable random number generator.
Definition: cuddUtil.c:2821
void Cudd_ApaSetToLiteral(int digits, DdApaNumber number, DdApaDigit literal)
Sets an arbitrary precision integer to a one-digit literal.
Definition: cuddApa.c:369
DdNode * Cudd_addVectorCompose(DdManager *dd, DdNode *f, DdNode **vector)
Composes an ADD with a vector of 0-1 ADDs.
Definition: cuddCompose.c:526
void Cudd_bddRealignEnable(DdManager *unique)
Enables realignment of BDD order to ZDD order.
Definition: cuddAPI.c:1247
double Cudd_ReadCacheHits(DdManager *dd)
Returns the number of cache hits.
Definition: cuddAPI.c:1498
int Cudd_bddLeqUnless(DdManager *dd, DdNode *f, DdNode *g, DdNode *D)
Tells whether f is less than of equal to G unless D is 1.
Definition: cuddSat.c:595
int Cudd_ReadInvPermZdd(DdManager *dd, int i)
Returns the index of the ZDD variable currently in the i-th position of the order.
Definition: cuddAPI.c:2599
double Cudd_CountPath(DdNode *node)
Counts the paths of a DD.
Definition: cuddUtil.c:638
unsigned long Cudd_SetTimeLimit(DdManager *unique, unsigned long tl)
Sets the time limit for the manager.
Definition: cuddAPI.c:749
DdTlcInfo * Cudd_FindTwoLiteralClauses(DdManager *dd, DdNode *f)
Finds the two literal clauses of a DD.
Definition: cuddEssent.c:244
int Cudd_zddPrintDebug(DdManager *zdd, DdNode *f, int n, int pr)
Prints to the standard output a ZDD and its statistics.
Definition: cuddZddUtil.c:178
int Cudd_bddIsVar(DdManager *dd, DdNode *f)
Returns 1 if the given node is a BDD variable; 0 otherwise.
Definition: cuddAPI.c:236
void Cudd_SetNextReordering(DdManager *dd, unsigned int next)
Sets the threshold for the next dynamic reordering.
Definition: cuddAPI.c:4119
int Cudd_PrintMinterm(DdManager *manager, DdNode *node)
Prints a disjoint sum of products.
Definition: cuddUtil.c:141
int(* DD_HFP)(DdManager *, const char *, void *)
Type of hook function.
Definition: cudd.h:234
double Cudd_ReadUsedSlots(DdManager *dd)
Reads the fraction of used slots in the unique table.
Definition: cuddAPI.c:1749
DdNode * Cudd_addPlus(DdManager *dd, DdNode **f, DdNode **g)
Integer and floating point addition.
Definition: cuddAddApply.c:132
void Cudd_SymmProfile(DdManager *table, int lower, int upper)
Prints statistics on symmetric variables.
Definition: cuddSymmetry.c:106
double Cudd_ReadCacheUsedSlots(DdManager *dd)
Reads the fraction of used slots in the cache.
Definition: cuddAPI.c:1454
DdNode * Cudd_addBddInterval(DdManager *dd, DdNode *f, CUDD_VALUE_TYPE lower, CUDD_VALUE_TYPE upper)
Converts an ADD to a BDD.
Definition: cuddBridge.c:207
int Cudd_ReadZddSize(DdManager *dd)
Returns the number of ZDD variables in existance.
Definition: cuddAPI.c:1711
DdNode * Cudd_RemapUnderApprox(DdManager *dd, DdNode *f, int numVars, int threshold, double quality)
Extracts a dense subset from a BDD with the remapping underapproximation method.
Definition: cuddApprox.c:294
int Cudd_bddIsPsVar(DdManager *dd, int index)
Checks whether a variable is present state.
Definition: cuddAPI.c:4417
DdNode * Cudd_addIthBit(DdManager *dd, DdNode *f, int bit)
Extracts the i-th bit from an ADD.
Definition: cuddAddFind.c:190
void Cudd_zddRealignEnable(DdManager *unique)
Enables realignment of ZDD order to BDD order.
Definition: cuddAPI.c:1176
int Cudd_bddSetNsVar(DdManager *dd, int index)
Sets a variable type to next state.
Definition: cuddAPI.c:4370
int Cudd_ReadRecomb(DdManager *dd)
Returns the current value of the recombination parameter used in group sifting.
Definition: cuddAPI.c:2857
DdNode * Cudd_E(DdNode *node)
Returns the else child of an internal node.
Definition: cuddAPI.c:611
DdNode * Cudd_BddToAdd(DdManager *dd, DdNode *B)
Converts a BDD to a 0-1 ADD.
Definition: cuddBridge.c:318
Cudd_ErrorType Cudd_ReadErrorCode(DdManager *dd)
Returns the code of the last error.
Definition: cuddAPI.c:3961
DdNode * Cudd_zddWeakDiv(DdManager *dd, DdNode *f, DdNode *g)
Applies weak division to two covers.
Definition: cuddZddFuncs.c:173
DdNode * Cudd_bddXorExistAbstract(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube)
Takes the exclusive OR of two BDDs and simultaneously abstracts the variables in cube.
Definition: cuddBddAbs.c:187
MtrNode * Cudd_MakeZddTreeNode(DdManager *dd, unsigned int low, unsigned int size, unsigned int type)
Creates a new ZDD variable group.
Definition: cuddZddGroup.c:118
int Cudd_StdPreReordHook(DdManager *dd, const char *str, void *data)
Sample hook function to call before reordering.
Definition: cuddAPI.c:3611
int Cudd_zddCount(DdManager *zdd, DdNode *P)
Counts the number of minterms in a ZDD.
Definition: cuddZddCount.c:103
int Cudd_ClassifySupport(DdManager *dd, DdNode *f, DdNode *g, DdNode **common, DdNode **onlyF, DdNode **onlyG)
Classifies the variables in the support of two DDs.
Definition: cuddUtil.c:1183
int Cudd_DebugCheck(DdManager *table)
Checks for inconsistencies in the DD heap.
Definition: cuddCheck.c:117
int Cudd_bddVarDisjDecomp(DdManager *dd, DdNode *f, DdNode ***disjuncts)
Performs two-way disjunctive decomposition of a BDD.
Definition: cuddDecomp.c:711
int Cudd_IsConstant(DdNode *node)
Returns 1 if the node is a constant node.
Definition: cuddAPI.c:550
DdNode * Cudd_zddIsop(DdManager *dd, DdNode *L, DdNode *U, DdNode **zdd_I)
Computes an ISOP in ZDD form from BDDs.
Definition: cuddZddIsop.c:111
DdNode * Cudd_addSetNZ(DdManager *dd, DdNode **f, DdNode **g)
This operator sets f to the value of g wherever g != 0.
Definition: cuddAddApply.c:244
void Cudd_ApaPowerOfTwo(int digits, DdApaNumber number, int power)
Sets an arbitrary precision integer to a power of two.
Definition: cuddApa.c:393
DdNode * Cudd_bddAndAbstract(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube)
Takes the AND of two BDDs and simultaneously abstracts the variables in cube.
Definition: cuddAndAbs.c:104
void Cudd_SetMaxReorderings(DdManager *dd, unsigned int mr)
Sets the maximum number of times reordering may be invoked.
Definition: cuddAPI.c:1968
int Cudd_addRead(FILE *fp, DdManager *dd, DdNode **E, DdNode ***x, DdNode ***y, DdNode ***xn, DdNode ***yn_, int *nx, int *ny, int *m, int *n, int bx, int sx, int by, int sy)
Reads in a sparse matrix.
Definition: cuddRead.c:132
DdNode * Cudd_bddClippingAnd(DdManager *dd, DdNode *f, DdNode *g, int maxDepth, int direction)
Approximates the conjunction of two BDDs f and g.
Definition: cuddClip.c:102
double Cudd_ReadSwapSteps(DdManager *dd)
Reads the number of elementary reordering steps.
Definition: cuddAPI.c:4135
DdNode * Cudd_bddRestrict(DdManager *dd, DdNode *f, DdNode *c)
BDD restrict according to Coudert and Madre&#39;s algorithm (ICCAD90).
Definition: cuddGenCof.c:168
DdNode * DdNodePtr
Type of a pointer to a decision diagram node.
Definition: cudd.h:199
DdNode * Cudd_bddBooleanDiff(DdManager *manager, DdNode *f, int x)
Computes the boolean difference of f with respect to x.
Definition: cuddBddAbs.c:267
void Cudd_SetMinHit(DdManager *dd, unsigned int hr)
Sets the hit rate that causes resizinig of the computed table.
Definition: cuddAPI.c:1565
DdNode * Cudd_bddInterpolate(DdManager *dd, DdNode *l, DdNode *u)
Finds an interpolant of two functions.
Definition: cuddGenCof.c:635
DdNode * Cudd_bddXnor(DdManager *dd, DdNode *f, DdNode *g)
Computes the exclusive NOR of two BDDs f and g.
Definition: cuddBddIte.c:551
void Cudd_AutodynEnableZdd(DdManager *unique, Cudd_ReorderingType method)
Enables automatic dynamic reordering of ZDDs.
Definition: cuddAPI.c:1075
DdNode * Cudd_bddOr(DdManager *dd, DdNode *f, DdNode *g)
Computes the disjunction of two BDDs f and g.
Definition: cuddBddIte.c:383
void Cudd_SetPopulationSize(DdManager *dd, int populationSize)
Sets the size of the population used by the genetic algorithm for variable reordering.
Definition: cuddAPI.c:3027
int Cudd_bddIsVarToBeUngrouped(DdManager *dd, int index)
Checks whether a variable is set to be ungrouped.
Definition: cuddAPI.c:4638
DdNode * Cudd_addNegate(DdManager *dd, DdNode *f)
Computes the additive inverse of an ADD.
Definition: cuddAddNeg.c:98
int Cudd_EnableOrderingMonitoring(DdManager *dd)
Enables monitoring of ordering.
Definition: cuddAPI.c:3846
void Cudd_SetArcviolation(DdManager *dd, int arcviolation)
Sets the value of the arcviolation parameter used in group sifting.
Definition: cuddAPI.c:2980
void Cudd_SetSymmviolation(DdManager *dd, int symmviolation)
Sets the value of the symmviolation parameter used in group sifting.
Definition: cuddAPI.c:2931
int Cudd_EqualSupNorm(DdManager *dd, DdNode *f, DdNode *g, CUDD_VALUE_TYPE tolerance, int pr)
Compares two ADDs for equality within tolerance.
Definition: cuddSat.c:766
int Cudd_EstimateCofactor(DdManager *dd, DdNode *node, int i, int phase)
Estimates the number of nodes in a cofactor of a DD.
Definition: cuddUtil.c:471
void Cudd_UpdateTimeLimit(DdManager *unique)
Updates the time limit for the manager.
Definition: cuddAPI.c:773
DdNode * Cudd_Increasing(DdManager *dd, DdNode *f, int i)
Checks whether a BDD is positive unate in a variable.
Definition: cuddSat.c:472
int Cudd_bddVarIsDependent(DdManager *dd, DdNode *f, DdNode *var)
Checks whether a variable is dependent on others in a function.
Definition: cuddBddAbs.c:305
char * Cudd_ApaStringDecimal(int digits, DdConstApaNumber number)
converts an arbitrary precision integer to a string in decimal format.
Definition: cuddApa.c:581
void Cudd_zddPrintSubtable(DdManager *table)
Prints the ZDD table for debugging purposes.
Definition: cuddZddMisc.c:155
unsigned int Cudd_ReadOrderRandomization(DdManager *dd)
Returns the order randomization factor.
Definition: cuddAPI.c:3098
DdApaNumber Cudd_ApaCountMinterm(DdManager const *manager, DdNode *node, int nvars, int *digits)
Counts the number of minterms of a DD.
Definition: cuddApa.c:762
int Cudd_PrintDebug(DdManager *dd, DdNode *f, int n, int pr)
Prints to the manager standard output a DD and its statistics.
Definition: cuddUtil.c:306
DdApaDigit * DdApaNumber
Type of an arbitrary precision intger, which is an array of digits.
Definition: cudd.h:219
int Cudd_RemoveHook(DdManager *dd, DD_HFP f, Cudd_HookType where)
Removes a function from a hook.
Definition: cuddAPI.c:3510
Extended precision double to keep very large value.
Definition: epdInt.h:129
DdNode * Cudd_bddClippingAndAbstract(DdManager *dd, DdNode *f, DdNode *g, DdNode *cube, int maxDepth, int direction)
Approximates the conjunction of two BDDs f and g and simultaneously abstracts the variables in cube...
Definition: cuddClip.c:138
int Cudd_bddPrintCover(DdManager *dd, DdNode *l, DdNode *u)
Prints a sum of prime implicants of a BDD.
Definition: cuddUtil.c:177
int Cudd_CheckZeroRef(DdManager *manager)
Checks the unique table for nodes with non-zero reference counts.
Definition: cuddRef.c:425
void Cudd_AutodynDisable(DdManager *unique)
Disables automatic dynamic reordering.
Definition: cuddAPI.c:1024
DdNode * Cudd_zddUnateProduct(DdManager *dd, DdNode *f, DdNode *g)
Computes the product of two unate covers represented as ZDDs.
Definition: cuddZddFuncs.c:136
int Cudd_ApaPrintMinterm(FILE *fp, DdManager const *dd, DdNode *node, int nvars)
Prints the number of minterms of a BDD or ADD using arbitrary precision arithmetic.
Definition: cuddApa.c:834
DdNode ** Cudd_bddCharToVect(DdManager *dd, DdNode *f)
Computes a vector of BDDs whose image equals a non-zero function.
Definition: cuddGenCof.c:480
DdNode * Cudd_ReadZddOne(DdManager *dd, int i)
Returns the ZDD for the constant 1 function.
Definition: cuddAPI.c:1308
DdNode * Cudd_addGeneralVectorCompose(DdManager *dd, DdNode *f, DdNode **vectorOn, DdNode **vectorOff)
Composes an ADD with a vector of ADDs.
Definition: cuddCompose.c:588
unsigned int Cudd_ReadLooseUpTo(DdManager *dd)
Reads the looseUpTo parameter of the manager.
Definition: cuddAPI.c:1585
unsigned long Cudd_ReadStartTime(DdManager *unique)
Returns the start time of the manager.
Definition: cuddAPI.c:649
int(* DD_THFP)(const void *)
Type of termination handler.
Definition: cudd.h:266
DdNode * Cudd_bddIsop(DdManager *dd, DdNode *L, DdNode *U)
Computes a BDD in the interval between L and U with a simple sum-of-product cover.
Definition: cuddZddIsop.c:151
int Cudd_VarsAreSymmetric(DdManager *dd, DdNode *f, int index1, int index2)
Checks whether two variables are symmetric in a BDD.
Definition: cuddCof.c:174
int Cudd_zddReduceHeap(DdManager *table, Cudd_ReorderingType heuristic, int minsize)
Main dynamic reordering routine for ZDDs.
Definition: cuddZddReord.c:127
DdNode * Cudd_Dxygtdxz(DdManager *dd, int N, DdNode **x, DdNode **y, DdNode **z)
Generates a BDD for the function d(x,y) > d(x,z).
Definition: cuddPriority.c:449
int Cudd_EnableReorderingReporting(DdManager *dd)
Enables reporting of reordering stats.
Definition: cuddAPI.c:3736
int Cudd_bddIsVarToBeGrouped(DdManager *dd, int index)
Checks whether a variable is set to be grouped.
Definition: cuddAPI.c:4586
DdNode * Cudd_ReadOne(DdManager *dd)
Returns the one constant of the manager.
Definition: cuddAPI.c:1286
int Cudd_bddLeq(DdManager *dd, DdNode *f, DdNode *g)
Checks whether f is less than or equal to g.
Definition: cuddBddIte.c:620
long Cudd_ReadNodeCount(DdManager *dd)
Reports the number of nodes in BDDs and ADDs.
Definition: cuddAPI.c:3384
int Cudd_ApaCompare(int digitsFirst, DdConstApaNumber first, int digitsSecond, DdConstApaNumber second)
Compares two arbitrary precision integers.
Definition: cuddApa.c:421
double Cudd_ReadUniqueLinks(DdManager *dd)
Returns the number of links followed in the unique table.
Definition: cuddAPI.c:2131
DdNode * Cudd_ReadMinusInfinity(DdManager *dd)
Reads the minus-infinity constant from the manager.
Definition: cuddAPI.c:1382
double Cudd_CountPathsToNonZero(DdNode *node)
Counts the paths to a non-zero terminal of a DD.
Definition: cuddUtil.c:801
DdNode * Cudd_addIte(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
Implements ITE(f,g,h).
Definition: cuddAddIte.c:103
DdNode * Cudd_Inequality(DdManager *dd, int N, int c, DdNode **x, DdNode **y)
Generates a BDD for the function x - y ≥ c.
Definition: cuddPriority.c:697
DdNode * Cudd_addFindMax(DdManager *dd, DdNode *f)
Finds the maximum discriminant of f.
Definition: cuddAddFind.c:97
uint32_t DdApaDigit
Type of an arbitrary precision integer "digit.".
Definition: cudd.h:214
void Cudd_DisableGarbageCollection(DdManager *dd)
Disables garbage collection.
Definition: cuddAPI.c:2772
DdNode * Cudd_zddDivideF(DdManager *dd, DdNode *f, DdNode *g)
Modified version of Cudd_zddDivide.
Definition: cuddZddFuncs.c:265
double Cudd_ReadCacheLookUps(DdManager *dd)
Returns the number of cache look-ups.
Definition: cuddAPI.c:1480
int Cudd_bddApproxConjDecomp(DdManager *dd, DdNode *f, DdNode ***conjuncts)
Performs two-way conjunctive decomposition of a BDD.
Definition: cuddDecomp.c:152
FILE * Cudd_ReadStderr(DdManager *dd)
Reads the stderr of a manager.
Definition: cuddAPI.c:4057
DdNode * Cudd_addRestrict(DdManager *dd, DdNode *f, DdNode *c)
ADD restrict according to Coudert and Madre&#39;s algorithm (ICCAD90).
Definition: cuddGenCof.c:396
This structure holds the set of clauses for a node.
Definition: cuddEssent.c:94
DdNode * Cudd_addTriangle(DdManager *dd, DdNode *f, DdNode *g, DdNode **z, int nz)
Performs the triangulation step for the shortest path computation.
Definition: cuddMatMult.c:224
DdNode * Cudd_SubsetShortPaths(DdManager *dd, DdNode *f, int numVars, int threshold, int hardlimit)
Extracts a dense subset from a BDD with the shortest paths heuristic.
Definition: cuddSubsetSP.c:186
DdNode * Cudd_addMinus(DdManager *dd, DdNode **f, DdNode **g)
Integer and floating point subtraction.
Definition: cuddAddApply.c:307
int Cudd_bddSetPsVar(DdManager *dd, int index)
Sets a variable type to present state.
Definition: cuddAPI.c:4346
double Cudd_Density(DdManager *dd, DdNode *f, int nvars)
Computes the density of a BDD or ADD.
Definition: cuddUtil.c:2860
DD_OOMFP Cudd_RegisterOutOfMemoryCallback(DdManager *unique, DD_OOMFP callback)
Installs an out-of-memory callback.
Definition: cuddAPI.c:906
unsigned int Cudd_ReadMaxLive(DdManager *dd)
Reads the maximum allowed number of live nodes.
Definition: cuddAPI.c:4159
MtrNode * Cudd_ReadTree(DdManager *dd)
Returns the variable group tree of the manager.
Definition: cuddAPI.c:2378
DdNode * Cudd_UnderApprox(DdManager *dd, DdNode *f, int numVars, int threshold, int safe, double quality)
Extracts a dense subset from a BDD with Shiple&#39;s underapproximation method.
Definition: cuddApprox.c:198
unsigned int Cudd_NodeReadIndex(DdNode *node)
Returns the index of the node.
Definition: cuddAPI.c:2506
unsigned int Cudd_Prime(unsigned int p)
Returns the next prime ≥ p.
Definition: cuddTable.c:143
int Cudd_zddPrintMinterm(DdManager *zdd, DdNode *node)
Prints a disjoint sum of product form for a ZDD.
Definition: cuddZddUtil.c:104
int Cudd_AddHook(DdManager *dd, DD_HFP f, Cudd_HookType where)
Adds a function to a hook.
Definition: cuddAPI.c:3448
int Cudd_ReadReorderingCycle(DdManager *dd)
Reads the reordCycle parameter of the manager.
Definition: cuddAPI.c:2339
int Cudd_VectorSupportIndices(DdManager *dd, DdNode **F, int n, int **indices)
Finds the variables on which a set of DDs depends.
Definition: cuddUtil.c:996
DdNode * Cudd_bddIthVar(DdManager *dd, int i)
Returns the BDD variable with index i.
Definition: cuddAPI.c:301
int Cudd_bddSetPairIndex(DdManager *dd, int index, int pairIndex)
Sets a corresponding pair index for a given index.
Definition: cuddAPI.c:4463
void * Cudd_ReadApplicationHook(DdManager *dd)
Reads the application hook.
Definition: cuddAPI.c:3942
void Cudd_IncreaseTimeLimit(DdManager *unique, unsigned long increase)
Increases the time limit for the manager.
Definition: cuddAPI.c:801
int Cudd_CheckKeys(DdManager *table)
Checks for several conditions that should not occur.
Definition: cuddCheck.c:431
DdNode * Cudd_bddXor(DdManager *dd, DdNode *f, DdNode *g)
Computes the exclusive OR of two BDDs f and g.
Definition: cuddBddIte.c:519
unsigned int Cudd_ReadReorderings(DdManager *dd)
Returns the number of times reordering has occurred.
Definition: cuddAPI.c:1932
DdNode * Cudd_addOuterSum(DdManager *dd, DdNode *M, DdNode *r, DdNode *c)
Takes the minimum of a matrix and the outer sum of two vectors.
Definition: cuddMatMult.c:278
void Cudd_SetGroupcheck(DdManager *dd, Cudd_AggregationType gc)
Sets the parameter groupcheck of the manager to gc.
Definition: cuddAPI.c:2708
int Cudd_GenFree(DdGen *gen)
Frees a CUDD generator.
Definition: cuddUtil.c:2563
DdNode * Cudd_addTimesPlus(DdManager *dd, DdNode *A, DdNode *B, DdNode **z, int nz)
Calculates the product of two matrices represented as ADDs.
Definition: cuddMatMult.c:166
DdNode *(* DD_AOP)(DdManager *, DdNode **, DdNode **)
Type of apply operator.
Definition: cudd.h:242
void Cudd_bddRealignDisable(DdManager *unique)
Disables realignment of ZDD order to BDD order.
Definition: cuddAPI.c:1266
DdGen * Cudd_FirstCube(DdManager *dd, DdNode *f, int **cube, CUDD_VALUE_TYPE *value)
Finds the first cube of a decision diagram.
Definition: cuddUtil.c:1881
int * Cudd_SupportIndex(DdManager *dd, DdNode *f)
Finds the variables on which a DD depends.
Definition: cuddUtil.c:927
int Cudd_VectorSupportSize(DdManager *dd, DdNode **F, int n)
Counts the variables on which a set of DDs depends.
Definition: cuddUtil.c:1145
unsigned int Cudd_ReadKeys(DdManager *dd)
Returns the number of nodes in the unique table.
Definition: cuddAPI.c:1869
void Cudd_SetMaxGrowth(DdManager *dd, double mg)
Sets the maxGrowth parameter of the manager.
Definition: cuddAPI.c:2270
int Cudd_IsInHook(DdManager *dd, DD_HFP f, Cudd_HookType where)
Checks whether a function is in a hook.
Definition: cuddAPI.c:3563
int Cudd_bddUnbindVar(DdManager *dd, int index)
Allows the sifting of a variable.
Definition: cuddAPI.c:4272
int Cudd_bddReadPairIndex(DdManager *dd, int index)
Reads a corresponding pair index for a given index.
Definition: cuddAPI.c:4489
int Cudd_ApaPrintExponential(FILE *fp, int digits, DdConstApaNumber number, int precision)
Prints an arbitrary precision integer in exponential format.
Definition: cuddApa.c:643
DdNode * Cudd_bddAnd(DdManager *dd, DdNode *f, DdNode *g)
Computes the conjunction of two BDDs f and g.
Definition: cuddBddIte.c:314
int Cudd_bddRealignmentEnabled(DdManager *unique)
Tells whether the realignment of BDD order to ZDD order is enabled.
Definition: cuddAPI.c:1218
void Cudd_DelayedDerefBdd(DdManager *table, DdNode *n)
Decreases the reference count of BDD node n.
Definition: cuddRef.c:237
DdNode * Cudd_zddIthVar(DdManager *dd, int i)
Returns the ZDD variable with index i.
Definition: cuddAPI.c:336
int Cudd_ReadPopulationSize(DdManager *dd)
Reads the current size of the population used by the genetic algorithm for variable reordering...
Definition: cuddAPI.c:3004
int Cudd_DumpDaVinci(DdManager *dd, int n, DdNode **f, char const *const *inames, char const *const *onames, FILE *fp)
Writes a daVinci file representing the argument BDDs.
Definition: cuddExport.c:592
int Cudd_PrintGroupedOrder(DdManager *dd, const char *str, void *data)
Hook function to print the current variable order.
Definition: cuddAPI.c:3809
DdNode * Cudd_addDiff(DdManager *dd, DdNode **f, DdNode **g)
Returns plusinfinity if f=g; returns min(f,g) if f!=g.
Definition: cuddAddApply.c:467
void Cudd_zddSymmProfile(DdManager *table, int lower, int upper)
Prints statistics on symmetric ZDD variables.
Definition: cuddZddSymm.c:104
DdNode * Cudd_SupersetCompress(DdManager *dd, DdNode *f, int nvars, int threshold)
Find a dense superset of BDD f.
Definition: cuddGenCof.c:760
DdNode *(* DD_PRFP)(DdManager *, int, DdNode **, DdNode **, DdNode **)
Type of priority function.
Definition: cudd.h:238
int Cudd_zddVarsFromBddVars(DdManager *dd, int multiplicity)
Creates one or more ZDD variables for each BDD variable.
Definition: cuddAPI.c:415
void Cudd_FreeTree(DdManager *dd)
Frees the variable group tree of the manager.
Definition: cuddAPI.c:2420
int Cudd_zddPrintCover(DdManager *zdd, DdNode *node)
Prints a sum of products from a ZDD representing a cover.
Definition: cuddZddUtil.c:136
int * Cudd_VectorSupportIndex(DdManager *dd, DdNode **F, int n)
Finds the variables on which a set of DDs depends.
Definition: cuddUtil.c:1099
int Cudd_DumpBlif(DdManager *dd, int n, DdNode **f, char const *const *inames, char const *const *onames, char *mname, FILE *fp, int mv)
Writes a blif file representing the argument BDDs.
Definition: cuddExport.c:110
int Cudd_ReadPermZdd(DdManager *dd, int i)
Returns the current position of the i-th ZDD variable in the order.
Definition: cuddAPI.c:2551
void Cudd_ApaCopy(int digits, DdConstApaNumber source, DdApaNumber dest)
Makes a copy of an arbitrary precision integer.
Definition: cuddApa.c:191
double Cudd_zddCountDouble(DdManager *zdd, DdNode *P)
Counts the number of minterms of a ZDD.
Definition: cuddZddCount.c:141
void Cudd_Quit(DdManager *unique)
Deletes resources associated with a DD manager.
Definition: cuddInit.c:196
int Cudd_ReduceHeap(DdManager *table, Cudd_ReorderingType heuristic, int minsize)
Main dynamic reordering routine.
Definition: cuddReorder.c:127
void Cudd_AutodynEnable(DdManager *unique, Cudd_ReorderingType method)
Enables automatic dynamic reordering of BDDs and ADDs.
Definition: cuddAPI.c:988
double Cudd_ReadMaxGrowthAlternate(DdManager *dd)
Reads the maxGrowthAlt parameter of the manager.
Definition: cuddAPI.c:2294
DdNode * Cudd_addExistAbstract(DdManager *manager, DdNode *f, DdNode *cube)
Existentially Abstracts all the variables in cube from f.
Definition: cuddAddAbs.c:103
int Cudd_ApaNumberOfDigits(int binaryDigits)
Returns the number of digits for an arbitrary precision integer.
Definition: cuddApa.c:136
DdNode * Cudd_addUnivAbstract(DdManager *manager, DdNode *f, DdNode *cube)
Universally Abstracts all the variables in cube from f.
Definition: cuddAddAbs.c:143
void Cudd_TurnOnCountDead(DdManager *dd)
Causes the dead nodes to be counted towards triggering reordering.
Definition: cuddAPI.c:2813
double Cudd_bddCorrelationWeights(DdManager *manager, DdNode *f, DdNode *g, double *prob)
Computes the correlation of f and g for given input probabilities.
Definition: cuddBddCorr.c:157
DdNode * Cudd_addHamming(DdManager *dd, DdNode **xVars, DdNode **yVars, int nVars)
Computes the Hamming distance ADD.
Definition: cuddPriority.c:1207
int Cudd_ApaCompareRatios(int digitsFirst, DdConstApaNumber firstNum, unsigned int firstDen, int digitsSecond, DdConstApaNumber secondNum, unsigned int secondDen)
Compares the ratios of two arbitrary precision integers to two unsigned ints.
Definition: cuddApa.c:457
long Cudd_ReadPeakNodeCount(DdManager *dd)
Reports the peak number of nodes.
Definition: cuddAPI.c:3334
void Cudd_Ref(DdNode *n)
Increases the reference count of a node, if it is not saturated.
Definition: cuddRef.c:96
static char const * onames[]
Definition: ntr.c:67
DdNode * Cudd_addMatrixMultiply(DdManager *dd, DdNode *A, DdNode *B, DdNode **z, int nz)
Calculates the product of two matrices represented as ADDs.
Definition: cuddMatMult.c:110
int Cudd_ReadSiftMaxSwap(DdManager *dd)
Reads the siftMaxSwap parameter of the manager.
Definition: cuddAPI.c:2200
DdNode * Cudd_addNand(DdManager *dd, DdNode **f, DdNode **g)
NAND of two 0-1 ADDs.
Definition: cuddAddApply.c:566
unsigned int Cudd_ReadDead(DdManager *dd)
Returns the number of dead nodes in the unique table.
Definition: cuddAPI.c:1886
DdNode * Cudd_addTimes(DdManager *dd, DdNode **f, DdNode **g)
Integer and floating point multiplication.
Definition: cuddAddApply.c:172
int Cudd_StdPostReordHook(DdManager *dd, const char *str, void *data)
Sample hook function to call after reordering.
Definition: cuddAPI.c:3703
DdNode * Cudd_addNewVar(DdManager *dd)
Returns a new ADD variable.
Definition: cuddAPI.c:105
int Cudd_DisableOrderingMonitoring(DdManager *dd)
Disables monitoring of ordering.
Definition: cuddAPI.c:3878
int Cudd_ReadSiftMaxVar(DdManager *dd)
Reads the siftMaxVar parameter of the manager.
Definition: cuddAPI.c:2156
double Cudd_ReadMaxGrowth(DdManager *dd)
Reads the maxGrowth parameter of the manager.
Definition: cuddAPI.c:2247
int Cudd_GarbageCollectionEnabled(DdManager *dd)
Tells whether garbage collection is enabled.
Definition: cuddAPI.c:2728
Cudd_ReorderingType
Type of reordering algorithm.
Definition: cudd.h:94
int Cudd_SupportSize(DdManager *dd, DdNode *f)
Counts the variables on which a DD depends.
Definition: cuddUtil.c:966
void Cudd_SetSiftMaxSwap(DdManager *dd, int sms)
Sets the siftMaxSwap parameter of the manager.
Definition: cuddAPI.c:2223
unsigned int Cudd_ReadSlots(DdManager *dd)
Returns the total number of slots of the unique table.
Definition: cuddAPI.c:1728
int Cudd_MinHammingDist(DdManager *dd, DdNode *f, int *minterm, int upperBound)
Returns the minimum Hamming distance between f and minterm.
Definition: cuddPriority.c:1271
FILE * Cudd_ReadStdout(DdManager *dd)
Reads the stdout of a manager.
Definition: cuddAPI.c:4018
DdNode * Cudd_SplitSet(DdManager *manager, DdNode *S, DdNode **xVars, int n, double m)
Returns m minterms from a BDD.
Definition: cuddSplit.c:106
DdNode * Cudd_bddIntersect(DdManager *dd, DdNode *f, DdNode *g)
Returns a function included in the intersection of f and g.
Definition: cuddBddIte.c:281
DdNode * Cudd_addWalsh(DdManager *dd, DdNode **x, DdNode **y, int n)
Generates a Walsh matrix in ADD form.
Definition: cuddAddWalsh.c:100
int Cudd_SharingSize(DdNode **nodeArray, int n)
Counts the number of nodes in an array of DDs.
Definition: cuddUtil.c:542
DdNode * Cudd_Disequality(DdManager *dd, int N, int c, DdNode **x, DdNode **y)
Generates a BDD for the function x - y != c.
Definition: cuddPriority.c:884
DdNode * Cudd_addMinimum(DdManager *dd, DdNode **f, DdNode **g)
Integer and floating point min.
Definition: cuddAddApply.c:343
Cudd_LazyGroupType
Group type for lazy sifting.
Definition: cudd.h:166
void Cudd_SetMaxLive(DdManager *dd, unsigned int maxLive)
Sets the maximum allowed number of live nodes.
Definition: cuddAPI.c:4178
void Cudd_SetStderr(DdManager *dd, FILE *fp)
Sets the stderr of a manager.
Definition: cuddAPI.c:4074
int Cudd_ReadGarbageCollections(DdManager *dd)
Returns the number of times garbage collection has occurred.
Definition: cuddAPI.c:2009
CUDD_VALUE_TYPE Cudd_ReadEpsilon(DdManager *dd)
Reads the epsilon parameter of the manager.
Definition: cuddAPI.c:2647
DdNode * Cudd_zddSupport(DdManager *dd, DdNode *f)
Finds the variables on which a ZDD depends.
Definition: cuddZddUtil.c:495
int Cudd_DumpBlifBody(DdManager *dd, int n, DdNode **f, char const *const *inames, char const *const *onames, FILE *fp, int mv)
Writes a blif body representing the argument BDDs.
Definition: cuddExport.c:226
double CUDD_VALUE_TYPE
Type of the value of a terminal node.
Definition: cudd.h:189
int Cudd_DumpDot(DdManager *dd, int n, DdNode **f, char const *const *inames, char const *const *onames, FILE *fp)
Writes a dot file representing the argument DDs.
Definition: cuddExport.c:309
DdNode * Cudd_addOneZeroMaximum(DdManager *dd, DdNode **f, DdNode **g)
Returns 1 if f > g and 0 otherwise.
Definition: cuddAddApply.c:433
DdNode * Cudd_addBddStrictThreshold(DdManager *dd, DdNode *f, CUDD_VALUE_TYPE value)
Converts an ADD to a BDD.
Definition: cuddBridge.c:158
void Cudd_zddRealignDisable(DdManager *unique)
Disables realignment of ZDD order to BDD order.
Definition: cuddAPI.c:1195
DdNode * Cudd_VectorSupport(DdManager *dd, DdNode **F, int n)
Finds the variables on which a set of DDs depends.
Definition: cuddUtil.c:1048
int Cudd_DisableReorderingReporting(DdManager *dd)
Disables reporting of reordering stats.
Definition: cuddAPI.c:3762
double Cudd_ExpectedUsedSlots(DdManager *dd)
Computes the expected fraction of used slots in the unique table.
Definition: cuddAPI.c:1816
DdNode * Cudd_bddSqueeze(DdManager *dd, DdNode *l, DdNode *u)
Finds a small BDD in a function interval.
Definition: cuddGenCof.c:575
int Cudd_BddToCubeArray(DdManager *dd, DdNode *cube, int *array)
Builds a positional array from the BDD of a cube.
Definition: cuddUtil.c:2422
int Cudd_bddIterConjDecomp(DdManager *dd, DdNode *f, DdNode ***conjuncts)
Performs two-way conjunctive decomposition of a BDD.
Definition: cuddDecomp.c:289
DdNode * Cudd_addXeqy(DdManager *dd, int N, DdNode **x, DdNode **y)
Generates an ADD for the function x==y.
Definition: cuddPriority.c:364
int Cudd_DagSize(DdNode *node)
Counts the number of nodes in a DD.
Definition: cuddUtil.c:436
DdNode * Cudd_bddXnorLimit(DdManager *dd, DdNode *f, DdNode *g, unsigned int limit)
Computes the exclusive NOR of two BDDs f and g unless too many nodes are required.
Definition: cuddBddIte.c:584
char * Cudd_zddCoverPathToString(DdManager *zdd, int *path, char *str)
Converts a path of a ZDD representing a cover to a string.
Definition: cuddZddUtil.c:437
int Cudd_OrderingMonitoring(DdManager *dd)
Returns 1 if monitoring of ordering is enabled; 0 otherwise.
Definition: cuddAPI.c:3907
double Cudd_ReadUniqueLookUps(DdManager *dd)
Returns the number of look-ups in the unique table.
Definition: cuddAPI.c:2102
int Cudd_zddDumpDot(DdManager *dd, int n, DdNode **f, char const *const *inames, char const *const *onames, FILE *fp)
Writes a dot file representing the argument ZDDs.
Definition: cuddZddUtil.c:584
void Cudd_PrintVersion(FILE *fp)
Prints the package version number.
Definition: cuddUtil.c:2655
char * Cudd_FactoredFormString(DdManager *dd, DdNode *f, char const *const *inames)
Returns a string with the factored form of the argument BDDs.
Definition: cuddExport.c:932
double Cudd_ReadRecursiveCalls(DdManager *dd)
Returns the number of recursive calls.
Definition: cuddAPI.c:1516
int Cudd_ReadArcviolation(DdManager *dd)
Returns the current value of the arcviolation parameter used in group sifting.
Definition: cuddAPI.c:2956