57 #ifndef ABC__bdd__cudd__cudd_h
58 #define ABC__bdd__cudd__cudd_h
75 #define CUDD_VERSION "2.4.2"
78 #define SIZEOF_VOID_P 4
94 #define CUDD_VALUE_TYPE double
95 #define CUDD_OUT_OF_MEM -1
97 #define CUDD_UNIQUE_SLOTS 256
98 #define CUDD_CACHE_SLOTS 262144
101 #define CUDD_RESIDUE_DEFAULT 0
102 #define CUDD_RESIDUE_MSB 1
103 #define CUDD_RESIDUE_TC 2
109 #if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
110 #define CUDD_MAXINDEX (((DdHalfWord) ~0) >> 1)
112 #define CUDD_MAXINDEX ((DdHalfWord) ~0)
117 #define CUDD_CONST_INDEX CUDD_MAXINDEX
125 #define DD_APA_BITS 32
126 #define DD_APA_BASE (1L << DD_APA_BITS)
127 #define DD_APA_HEXPRINT "%08x"
129 #define DD_APA_BITS 16
130 #define DD_APA_BASE (1 << DD_APA_BITS)
131 #define DD_APA_HEXPRINT "%04x"
133 #define DD_APA_MASK (DD_APA_BASE - 1)
259 #if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
266 #pragma pointer_size save
267 #pragma pointer_size short
290 #pragma pointer_size restore
326 typedef int (*
DD_QSFP)(
const void *,
const void *);
352 #define Cudd_IsConstant(node) ((Cudd_Regular(node))->index == CUDD_CONST_INDEX)
367 #define Cudd_Not(node) ((DdNode *)((ptrint)(node) ^ 01))
383 #define Cudd_NotCond(node,c) ((DdNode *)((ptrint)(node) ^ (c)))
397 #define Cudd_Regular(node) ((DdNode *)((ptruint)(node) & ~01))
411 #define Cudd_Complement(node) ((DdNode *)((ptruint)(node) | 01))
425 #define Cudd_IsComplement(node) ((int) ((ptrint) (node) & 01))
440 #define Cudd_T(node) ((Cudd_Regular(node))->type.kids.T)
455 #define Cudd_E(node) ((Cudd_Regular(node))->type.kids.E)
470 #define Cudd_V(node) ((Cudd_Regular(node))->type.value)
487 #define Cudd_ReadIndex(dd,index) (Cudd_ReadPerm(dd,index))
519 #define Cudd_ForeachCube(manager, f, gen, cube, value)\
520 for((gen) = Cudd_FirstCube(manager, f, &cube, &value);\
521 Cudd_IsGenEmpty(gen) ? Cudd_GenFree(gen) : TRUE;\
522 (void) Cudd_NextCube(gen, &cube, &value))
551 #define Cudd_ForeachPrime(manager, l, u, gen, cube)\
552 for((gen) = Cudd_FirstPrime(manager, l, u, &cube);\
553 Cudd_IsGenEmpty(gen) ? Cudd_GenFree(gen) : TRUE;\
554 (void) Cudd_NextPrime(gen, &cube))
585 #define Cudd_ForeachNode(manager, f, gen, node)\
586 for((gen) = Cudd_FirstNode(manager, f, &node);\
587 Cudd_IsGenEmpty(gen) ? Cudd_GenFree(gen) : TRUE;\
588 (void) Cudd_NextNode(gen, &node))
619 #define Cudd_zddForeachPath(manager, f, gen, path)\
620 for((gen) = Cudd_zddFirstPath(manager, f, &path);\
621 Cudd_IsGenEmpty(gen) ? Cudd_GenFree(gen) : TRUE;\
622 (void) Cudd_zddNextPath(gen, &path))
900 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 );
901 extern DdManager *
Cudd_Init(
unsigned int numVars,
unsigned int numVarsZ,
unsigned int numSlots,
unsigned int cacheSize,
unsigned long maxMemory );
910 extern DdNode *
Cudd_PrioritySelect(
DdManager * dd,
DdNode * R,
DdNode ** x,
DdNode ** y,
DdNode ** z,
DdNode * Pi,
int n,
DdNode * ( * )(
DdManager * ,
int,
DdNode ** ,
DdNode ** ,
DdNode ** ) );
923 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 );
924 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 );
int Cudd_ReadLinear(DdManager *table, int x, int y)
void Cudd_IterDerefBdd(DdManager *table, DdNode *n)
int Cudd_bddApproxDisjDecomp(DdManager *dd, DdNode *f, DdNode ***disjuncts)
int Cudd_bddSetVarHardGroup(DdManager *dd, int index)
DdNode * Cudd_SubsetHeavyBranch(DdManager *dd, DdNode *f, int numVars, int threshold)
DdNode * Cudd_addBddThreshold(DdManager *dd, DdNode *f, CUDD_VALUE_TYPE value)
void Cudd_tlcInfoFree(DdTlcInfo *t)
DdNode * Cudd_addOrAbstract(DdManager *manager, DdNode *f, DdNode *cube)
int Cudd_bddSetVarToBeUngrouped(DdManager *dd, int index)
int Cudd_ReadIthClause(DdTlcInfo *tlc, int i, DdHalfWord *var1, DdHalfWord *var2, int *phase1, int *phase2)
DdNode * Cudd_bddNPAnd(DdManager *dd, DdNode *f, DdNode *c)
DdApaNumber Cudd_NewApaNumber(int digits)
double Cudd_AverageDistance(DdManager *dd)
DdNode * Cudd_SubsetWithMaskVars(DdManager *dd, DdNode *f, DdNode **vars, int nvars, DdNode **maskVars, int mvars)
void Cudd_RecursiveDerefZdd(DdManager *table, DdNode *n)
unsigned short DdHalfWord
void Cudd_SetNumberXovers(DdManager *dd, int numberXovers)
DdNode * Cudd_bddNewVar(DdManager *dd)
unsigned int Cudd_ReadMaxCache(DdManager *dd)
long Cudd_zddReadNodeCount(DdManager *dd)
DdNode * Cudd_FindEssential(DdManager *dd, DdNode *f)
int Cudd_bddSetPiVar(DdManager *dd, int index)
DdNode * Cudd_bddUnivAbstract(DdManager *manager, DdNode *f, DdNode *cube)
DdNode * Cudd_CProjection(DdManager *dd, DdNode *R, DdNode *Y)
DdNode * Cudd_Xeqy(DdManager *dd, int N, DdNode **x, DdNode **y)
int Cudd_bddVarConjDecomp(DdManager *dd, DdNode *f, DdNode ***conjuncts)
DdNode * Cudd_VerifySol(DdManager *bdd, DdNode *F, DdNode **G, int *yIndex, int n)
int(* DD_HFP)(DdManager *, const char *, void *)
double * Cudd_CofMinterm(DdManager *dd, DdNode *node)
int Cudd_ReorderingStatusZdd(DdManager *unique, Cudd_ReorderingType *method)
DdNode * Cudd_addConstrain(DdManager *dd, DdNode *f, DdNode *c)
unsigned int Cudd_ReadCacheSlots(DdManager *dd)
int Cudd_ApaCompare(int digitsFirst, DdApaNumber first, int digitsSecond, DdApaNumber second)
DdNode * Cudd_addScalarInverse(DdManager *dd, DdNode *f, DdNode *epsilon)
void Cudd_OutOfMem(long size)
DdNode * Cudd_addSwapVariables(DdManager *dd, DdNode *f, DdNode **x, DdNode **y, int n)
DdNode * Cudd_bddPickOneMinterm(DdManager *dd, DdNode *f, DdNode **vars, int n)
DdNode * Cudd_zddDiffConst(DdManager *zdd, DdNode *P, DdNode *Q)
void Cudd_SetMaxCacheHard(DdManager *dd, unsigned int mc)
DdNode * Cudd_zddPortFromBdd(DdManager *dd, DdNode *B)
DdNode * Cudd_bddComputeCube(DdManager *dd, DdNode **vars, int *phase, int n)
void Cudd_RecursiveDeref(DdManager *table, DdNode *n)
int Cudd_bddIsVarHardGroup(DdManager *dd, int index)
double Cudd_CountMinterm(DdManager *manager, DdNode *node, int nvars)
void Cudd_SetMaxMemory(DdManager *dd, unsigned long maxMemory)
DdNode * Cudd_addLog(DdManager *dd, DdNode *f)
DdNode * Cudd_Dxygtdyz(DdManager *dd, int N, DdNode **x, DdNode **y, DdNode **z)
int Cudd_IsNonConstant(DdNode *f)
int Cudd_ReadSymmviolation(DdManager *dd)
MtrNode * Cudd_MakeZddTreeNode(DdManager *dd, unsigned int low, unsigned int size, unsigned int type)
int Cudd_bddIterDisjDecomp(DdManager *dd, DdNode *f, DdNode ***disjuncts)
DdNode * Cudd_zddComplement(DdManager *dd, DdNode *node)
unsigned int Cudd_ReadMinDead(DdManager *dd)
DdNode * Cudd_addCmpl(DdManager *dd, DdNode *f)
DdNode * Cudd_ShortestPath(DdManager *manager, DdNode *f, int *weight, int *support, int *length)
DdNode ** Cudd_bddConstrainDecomp(DdManager *dd, DdNode *f)
DdNode * Cudd_addOr(DdManager *dd, DdNode **f, DdNode **g)
int Cudd_bddPickOneCube(DdManager *ddm, DdNode *node, char *string)
DdNode * Cudd_zddSubset1(DdManager *dd, DdNode *P, int var)
DdGen * Cudd_FirstNode(DdManager *dd, DdNode *f, DdNode **node)
unsigned int Cudd_ReadMaxCacheHard(DdManager *dd)
int Cudd_ApaPrintDensity(FILE *fp, DdManager *dd, DdNode *node, int nvars)
DdNode * Cudd_Support(DdManager *dd, DdNode *f)
void Cudd_Srandom(long seed)
void Cudd_Deref(DdNode *node)
DdNode * Cudd_addNewVarAtLevel(DdManager *dd, int level)
int Cudd_EquivDC(DdManager *dd, DdNode *F, DdNode *G, DdNode *D)
int Cudd_ReadReorderings(DdManager *dd)
DdNode * Cudd_Xgty(DdManager *dd, int N, DdNode **z, DdNode **x, DdNode **y)
DdNode * Cudd_addComputeCube(DdManager *dd, DdNode **vars, int *phase, int n)
int(* DD_QSFP)(const void *, const void *)
int Cudd_NextPrime(DdGen *gen, int **cube)
DdNode * Cudd_addConst(DdManager *dd, CUDD_VALUE_TYPE c)
void Cudd_SetStdout(DdManager *dd, FILE *fp)
DdNode * Cudd_bddAdjPermuteX(DdManager *dd, DdNode *B, DdNode **x, int n)
int Cudd_bddVarIsBound(DdManager *dd, int index)
DdNode * Cudd_addBddPattern(DdManager *dd, DdNode *f)
int Cudd_PrintTwoLiteralClauses(DdManager *dd, DdNode *f, char **names, FILE *fp)
double Cudd_zddCountMinterm(DdManager *zdd, DdNode *node, int path)
unsigned int Cudd_ReadNextReordering(DdManager *dd)
void Cudd_TurnOffCountDead(DdManager *dd)
int Cudd_bddResetVarToBeGrouped(DdManager *dd, int index)
DdNode * Cudd_RemapOverApprox(DdManager *dd, DdNode *f, int numVars, int threshold, double quality)
int Cudd_NextNode(DdGen *gen, DdNode **node)
DdNode * Cudd_ReadLogicZero(DdManager *dd)
int Cudd_zddDagSize(DdNode *p_node)
DdNode * Cudd_addEvalConst(DdManager *dd, DdNode *f, DdNode *g)
DdNode ** Cudd_bddPickArbitraryMinterms(DdManager *dd, DdNode *f, DdNode **vars, int n, int k)
unsigned long Cudd_ReadMaxMemory(DdManager *dd)
DdNode * Cudd_bddExistAbstract(DdManager *manager, DdNode *f, DdNode *cube)
void Cudd_AutodynDisableZdd(DdManager *unique)
DdNode * Cudd_addMonadicApply(DdManager *dd, DdNode *(*op)(DdManager *, DdNode *), DdNode *f)
DdNode * Cudd_bddNor(DdManager *dd, DdNode *f, DdNode *g)
DdNode * Cudd_addNor(DdManager *dd, DdNode **f, DdNode **g)
unsigned int Cudd_ReadMinHit(DdManager *dd)
DdNode * Cudd_zddWeakDivF(DdManager *dd, DdNode *f, DdNode *g)
void Cudd_SetRecomb(DdManager *dd, int recomb)
DdNode * Cudd_ReadPlusInfinity(DdManager *dd)
DdNode * Cudd_Decreasing(DdManager *dd, DdNode *f, int i)
DdNode * Cudd_BiasedOverApprox(DdManager *dd, DdNode *f, DdNode *b, int numVars, int threshold, double quality1, double quality0)
int Cudd_SetVarMap(DdManager *manager, DdNode **x, DdNode **y, int n)
DdNode * Cudd_addFindMin(DdManager *dd, DdNode *f)
DdNode * Cudd_OverApprox(DdManager *dd, DdNode *f, int numVars, int threshold, int safe, double quality)
void Cudd_SetBackground(DdManager *dd, DdNode *bck)
void Cudd_SetMaxGrowthAlternate(DdManager *dd, double mg)
int Cudd_ShortestLength(DdManager *manager, DdNode *f, int *weight)
DdNode * Cudd_CubeArrayToBdd(DdManager *dd, int *array)
int Cudd_bddSetVarToBeGrouped(DdManager *dd, int index)
DdNode * Cudd_zddPortToBdd(DdManager *dd, DdNode *f)
int Cudd_zddRealignmentEnabled(DdManager *unique)
int Cudd_bddIsNsVar(DdManager *dd, int index)
double Cudd_ReadNodesDropped(DdManager *dd)
Cudd_AggregationType Cudd_ReadGroupcheck(DdManager *dd)
DdNode * Cudd_bddAndAbstractLimit(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube, unsigned int limit)
DdNode * Cudd_addIteConstant(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
DdNode * Cudd_SupersetShortPaths(DdManager *dd, DdNode *f, int numVars, int threshold, int hardlimit)
int Cudd_ReorderingReporting(DdManager *dd)
DdNode * Cudd_addApply(DdManager *dd, DdNode *(*)(DdManager *, DdNode **, DdNode **), DdNode *f, DdNode *g)
DdNode * Cudd_zddDiff(DdManager *dd, DdNode *P, DdNode *Q)
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)
DdNode * Cudd_bddAndLimit(DdManager *dd, DdNode *f, DdNode *g, unsigned int limit)
DdNode * Cudd_bddSwapVariables(DdManager *dd, DdNode *f, DdNode **x, DdNode **y, int n)
DdNode * Cudd_addMaximum(DdManager *dd, DdNode **f, DdNode **g)
DdNode * Cudd_ReadZero(DdManager *dd)
unsigned short int DdApaDigit
int Cudd_IsGenEmpty(DdGen *gen)
DdNode * Cudd_bddLICompaction(DdManager *dd, DdNode *f, DdNode *c)
DdNode * Cudd_bddClosestCube(DdManager *dd, DdNode *f, DdNode *g, int *distance)
int Cudd_bddGenConjDecomp(DdManager *dd, DdNode *f, DdNode ***conjuncts)
DdNode * Cudd_bddIte(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
DdNode * Cudd_addResidue(DdManager *dd, int n, int m, int options, int top)
DdApaDigit Cudd_ApaAdd(int digits, DdApaNumber a, DdApaNumber b, DdApaNumber sum)
DdNode * Cudd_addXor(DdManager *dd, DdNode **f, DdNode **g)
DdNode * Cudd_zddDivide(DdManager *dd, DdNode *f, DdNode *g)
int Cudd_CountLeaves(DdNode *node)
DdNode * Cudd_SolveEqn(DdManager *bdd, DdNode *F, DdNode *Y, DdNode **G, int **yIndex, int n)
DdNode * Cudd_MakeBddFromZddCover(DdManager *dd, DdNode *node)
DdNode * Cudd_zddChange(DdManager *dd, DdNode *P, int var)
DdNode * Cudd_BiasedUnderApprox(DdManager *dd, DdNode *f, DdNode *b, int numVars, int threshold, double quality1, double quality0)
int Cudd_ReadPeakLiveNodeCount(DdManager *dd)
int Cudd_zddNextPath(DdGen *gen, int **path)
int Cudd_ApaPrintHex(FILE *fp, int digits, DdApaNumber number)
int Cudd_DeadAreCounted(DdManager *dd)
void Cudd_SetLooseUpTo(DdManager *dd, unsigned int lut)
DdNode * Cudd_zddIntersect(DdManager *dd, DdNode *P, DdNode *Q)
void Cudd_SetSiftMaxVar(DdManager *dd, int smv)
word M(word f1, word f2, int n)
DdNode * Cudd_ReadVars(DdManager *dd, int i)
long Cudd_ReadGarbageCollectionTime(DdManager *dd)
DdNode * Cudd_SubsetCompress(DdManager *dd, DdNode *f, int nvars, int threshold)
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)
int Cudd_ReadSize(DdManager *dd)
DdNode * Cudd_addDivide(DdManager *dd, DdNode **f, DdNode **g)
DdNode * Cudd_PrioritySelect(DdManager *dd, DdNode *R, DdNode **x, DdNode **y, DdNode **z, DdNode *Pi, int n, DdNode *(*)(DdManager *, int, DdNode **, DdNode **, DdNode **))
DdNode * Cudd_bddInterval(DdManager *dd, int N, DdNode **x, unsigned int lowerB, unsigned int upperB)
DdNode * Cudd_addAgreement(DdManager *dd, DdNode **f, DdNode **g)
int Cudd_NextCube(DdGen *gen, int **cube, CUDD_VALUE_TYPE *value)
int Cudd_ReadInvPerm(DdManager *dd, int i)
int Cudd_bddIsVarEssential(DdManager *manager, DdNode *f, int id, int phase)
DdNode * Cudd_zddIte(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
DdGen * Cudd_zddFirstPath(DdManager *zdd, DdNode *f, int **path)
DdNode * Cudd_bddTransfer(DdManager *ddSource, DdManager *ddDestination, DdNode *f)
void Cudd_FreeTree(DdManager *dd)
DdNode * Cudd_zddProduct(DdManager *dd, DdNode *f, DdNode *g)
DdNode * Cudd_bddVectorCompose(DdManager *dd, DdNode *f, DdNode **vector)
long Cudd_ReadReorderingTime(DdManager *dd)
void Cudd_SetZddTree(DdManager *dd, MtrNode *tree)
DdNode * Cudd_addNonSimCompose(DdManager *dd, DdNode *f, DdNode **vector)
DdNode * Cudd_LargestCube(DdManager *manager, DdNode *f, int *length)
DdNode * Cudd_bddNand(DdManager *dd, DdNode *f, DdNode *g)
static const char * onames[]
DdNode * Cudd_ReadBackground(DdManager *dd)
int Cudd_ApaPrintMintermExp(FILE *fp, DdManager *dd, DdNode *node, int nvars, int precision)
DdNode * Cudd_addCompose(DdManager *dd, DdNode *f, DdNode *g, int v)
int Cudd_addLeq(DdManager *dd, DdNode *f, DdNode *g)
DdNode * Cudd_bddIteConstant(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
void Cudd_ClearErrorCode(DdManager *dd)
DdNode * Cudd_bddMinimize(DdManager *dd, DdNode *f, DdNode *c)
DdNode * Cudd_zddUnion(DdManager *dd, DdNode *P, DdNode *Q)
DdNode * Cudd_addBddIthBit(DdManager *dd, DdNode *f, int bit)
DdNode * Cudd_addRoundOff(DdManager *dd, DdNode *f, int N)
int Cudd_ApaPrintExponential(FILE *fp, int digits, DdApaNumber number, int precision)
double Cudd_ReadNodesFreed(DdManager *dd)
void Cudd_SetReorderingCycle(DdManager *dd, int cycle)
MtrNode * Cudd_ReadZddTree(DdManager *dd)
int Cudd_DumpDDcal(DdManager *dd, int n, DdNode **f, char **inames, char **onames, FILE *fp)
int Cudd_ReadNumberXovers(DdManager *dd)
DdNode * Cudd_Eval(DdManager *dd, DdNode *f, int *inputs)
int Cudd_bddIsPiVar(DdManager *dd, int index)
DdNode * Cudd_bddVarMap(DdManager *manager, DdNode *f)
DdNode * Cudd_addThreshold(DdManager *dd, DdNode **f, DdNode **g)
DdNode * Cudd_bddLiteralSetIntersection(DdManager *dd, DdNode *f, DdNode *g)
int Cudd_bddBindVar(DdManager *dd, int index)
DdNode * Cudd_IndicesToCube(DdManager *dd, int *array, int n)
void Cudd_EnableGarbageCollection(DdManager *dd)
DdNode * Cudd_addPermute(DdManager *manager, DdNode *node, int *permut)
int Cudd_EstimateCofactorSimple(DdNode *node, int i)
DdGen * Cudd_FirstPrime(DdManager *dd, DdNode *l, DdNode *u, int **cube)
void Cudd_SetEpsilon(DdManager *dd, CUDD_VALUE_TYPE ep)
unsigned int DdApaDoubleDigit
DdNode * Cudd_addIthVar(DdManager *dd, int i)
DdNode * Cudd_bddMakePrime(DdManager *dd, DdNode *cube, DdNode *f)
int Cudd_zddShuffleHeap(DdManager *table, int *permutation)
DdNode * Cudd_SupersetHeavyBranch(DdManager *dd, DdNode *f, int numVars, int threshold)
DdNode * Cudd_addXnor(DdManager *dd, DdNode **f, DdNode **g)
DdNode * Cudd_Cofactor(DdManager *dd, DdNode *f, DdNode *g)
int Cudd_ReadPerm(DdManager *dd, int i)
int Cudd_PrintLinear(DdManager *table)
DdNode * Cudd_bddNewVarAtLevel(DdManager *dd, int level)
int Cudd_ShuffleHeap(DdManager *table, int *permutation)
int Cudd_ReorderingStatus(DdManager *unique, Cudd_ReorderingType *method)
int Cudd_PrintInfo(DdManager *dd, FILE *fp)
DdNode * Cudd_bddConstrain(DdManager *dd, DdNode *f, DdNode *c)
DdNode * Cudd_zddSubset0(DdManager *dd, DdNode *P, int var)
double Cudd_bddCorrelation(DdManager *manager, DdNode *f, DdNode *g)
DdNode * Cudd_bddPermute(DdManager *manager, DdNode *node, int *permut)
int Cudd_bddGenDisjDecomp(DdManager *dd, DdNode *f, DdNode ***disjuncts)
MtrNode * Cudd_ReadTree(DdManager *dd)
DdNode * Cudd_bddCompose(DdManager *dd, DdNode *f, DdNode *g, int v)
struct DdChildren DdChildren
void Cudd_ApaSetToLiteral(int digits, DdApaNumber number, DdApaDigit literal)
DdNode * Cudd_addVectorCompose(DdManager *dd, DdNode *f, DdNode **vector)
void Cudd_bddRealignEnable(DdManager *unique)
double Cudd_ReadCacheHits(DdManager *dd)
int Cudd_bddLeqUnless(DdManager *dd, DdNode *f, DdNode *g, DdNode *D)
int Cudd_ReadInvPermZdd(DdManager *dd, int i)
double Cudd_CountPath(DdNode *node)
DdTlcInfo * Cudd_FindTwoLiteralClauses(DdManager *dd, DdNode *f)
int Cudd_zddPrintDebug(DdManager *zdd, DdNode *f, int n, int pr)
void Cudd_SetNextReordering(DdManager *dd, unsigned int next)
int Cudd_PrintMinterm(DdManager *manager, DdNode *node)
double Cudd_ReadUsedSlots(DdManager *dd)
DdNode * Cudd_addPlus(DdManager *dd, DdNode **f, DdNode **g)
void Cudd_SymmProfile(DdManager *table, int lower, int upper)
double Cudd_ReadCacheUsedSlots(DdManager *dd)
DdNode * Cudd_addBddInterval(DdManager *dd, DdNode *f, CUDD_VALUE_TYPE lower, CUDD_VALUE_TYPE upper)
int Cudd_ReadZddSize(DdManager *dd)
DdManager * Cudd_Init(unsigned int numVars, unsigned int numVarsZ, unsigned int numSlots, unsigned int cacheSize, unsigned long maxMemory)
DdNode * Cudd_RemapUnderApprox(DdManager *dd, DdNode *f, int numVars, int threshold, double quality)
int Cudd_bddIsPsVar(DdManager *dd, int index)
DdNode * Cudd_addIthBit(DdManager *dd, DdNode *f, int bit)
void Cudd_zddRealignEnable(DdManager *unique)
int Cudd_bddSetNsVar(DdManager *dd, int index)
int Cudd_ReadRecomb(DdManager *dd)
DdNode * Cudd_BddToAdd(DdManager *dd, DdNode *B)
Cudd_ErrorType Cudd_ReadErrorCode(DdManager *dd)
DdNode * Cudd_zddWeakDiv(DdManager *dd, DdNode *f, DdNode *g)
DdNode * Cudd_bddXorExistAbstract(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube)
int Cudd_StdPreReordHook(DdManager *dd, const char *str, void *data)
int Cudd_zddCount(DdManager *zdd, DdNode *P)
int Cudd_ClassifySupport(DdManager *dd, DdNode *f, DdNode *g, DdNode **common, DdNode **onlyF, DdNode **onlyG)
int Cudd_DebugCheck(DdManager *table)
int Cudd_bddVarDisjDecomp(DdManager *dd, DdNode *f, DdNode ***disjuncts)
DdNode * Cudd_zddIsop(DdManager *dd, DdNode *L, DdNode *U, DdNode **zdd_I)
DdNode * Cudd_addSetNZ(DdManager *dd, DdNode **f, DdNode **g)
void Cudd_ApaPowerOfTwo(int digits, DdApaNumber number, int power)
DdNode * Cudd_bddAndAbstract(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube)
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)
DdNode * Cudd_bddClippingAnd(DdManager *dd, DdNode *f, DdNode *g, int maxDepth, int direction)
double Cudd_ReadSwapSteps(DdManager *dd)
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
DdNode * Cudd_bddRestrict(DdManager *dd, DdNode *f, DdNode *c)
DdNode * Cudd_bddBooleanDiff(DdManager *manager, DdNode *f, int x)
MtrNode * Cudd_MakeTreeNode(DdManager *dd, unsigned int low, unsigned int size, unsigned int type)
void Cudd_SetMinHit(DdManager *dd, unsigned int hr)
DdNode * Cudd_bddXnor(DdManager *dd, DdNode *f, DdNode *g)
void Cudd_AutodynEnableZdd(DdManager *unique, Cudd_ReorderingType method)
DdNode * Cudd_bddOr(DdManager *dd, DdNode *f, DdNode *g)
void Cudd_SetPopulationSize(DdManager *dd, int populationSize)
int Cudd_bddIsVarToBeUngrouped(DdManager *dd, int index)
DdNode * Cudd_addNegate(DdManager *dd, DdNode *f)
void Cudd_SetArcviolation(DdManager *dd, int arcviolation)
void Cudd_SetSymmviolation(DdManager *dd, int symmviolation)
DdApaDigit Cudd_ApaSubtract(int digits, DdApaNumber a, DdApaNumber b, DdApaNumber diff)
int Cudd_EqualSupNorm(DdManager *dd, DdNode *f, DdNode *g, CUDD_VALUE_TYPE tolerance, int pr)
int Cudd_EstimateCofactor(DdManager *dd, DdNode *node, int i, int phase)
#define ABC_NAMESPACE_HEADER_END
DdNode * Cudd_Increasing(DdManager *dd, DdNode *f, int i)
int Cudd_bddVarIsDependent(DdManager *dd, DdNode *f, DdNode *var)
void Cudd_zddPrintSubtable(DdManager *table)
int Cudd_ApaPrintDecimal(FILE *fp, int digits, DdApaNumber number)
int Cudd_PrintDebug(DdManager *dd, DdNode *f, int n, int pr)
void Cudd_SetTree(DdManager *dd, MtrNode *tree)
int Cudd_RemoveHook(DdManager *dd, DD_HFP f, Cudd_HookType where)
DdNode * Cudd_bddClippingAndAbstract(DdManager *dd, DdNode *f, DdNode *g, DdNode *cube, int maxDepth, int direction)
int Cudd_bddPrintCover(DdManager *dd, DdNode *l, DdNode *u)
int Cudd_CheckZeroRef(DdManager *manager)
void Cudd_AutodynDisable(DdManager *unique)
DdNode * Cudd_zddUnateProduct(DdManager *dd, DdNode *f, DdNode *g)
DdNode ** Cudd_bddCharToVect(DdManager *dd, DdNode *f)
DdNode * Cudd_ReadZddOne(DdManager *dd, int i)
DdNode * Cudd_addGeneralVectorCompose(DdManager *dd, DdNode *f, DdNode **vectorOn, DdNode **vectorOff)
unsigned int Cudd_ReadLooseUpTo(DdManager *dd)
DdNode * Cudd_bddIsop(DdManager *dd, DdNode *L, DdNode *U)
int Cudd_zddReduceHeap(DdManager *table, Cudd_ReorderingType heuristic, int minsize)
DdNode * Cudd_Dxygtdxz(DdManager *dd, int N, DdNode **x, DdNode **y, DdNode **z)
int Cudd_EnableReorderingReporting(DdManager *dd)
int Cudd_bddIsVarToBeGrouped(DdManager *dd, int index)
DdNode * Cudd_ReadOne(DdManager *dd)
int Cudd_bddLeq(DdManager *dd, DdNode *f, DdNode *g)
long Cudd_ReadNodeCount(DdManager *dd)
double Cudd_ReadUniqueLinks(DdManager *dd)
DdNode * Cudd_ReadMinusInfinity(DdManager *dd)
double Cudd_CountPathsToNonZero(DdNode *node)
DdNode * Cudd_addIte(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
DdNode * Cudd_Inequality(DdManager *dd, int N, int c, DdNode **x, DdNode **y)
DdNode * Cudd_addFindMax(DdManager *dd, DdNode *f)
void Cudd_DisableGarbageCollection(DdManager *dd)
DdNode * Cudd_zddDivideF(DdManager *dd, DdNode *f, DdNode *g)
double Cudd_ReadCacheLookUps(DdManager *dd)
int Cudd_bddApproxConjDecomp(DdManager *dd, DdNode *f, DdNode ***conjuncts)
FILE * Cudd_ReadStderr(DdManager *dd)
DdNode * Cudd_addRestrict(DdManager *dd, DdNode *f, DdNode *c)
DdNode * Cudd_addTriangle(DdManager *dd, DdNode *f, DdNode *g, DdNode **z, int nz)
int Cudd_DumpBlif(DdManager *dd, int n, DdNode **f, char **inames, char **onames, char *mname, FILE *fp, int mv)
DdNode * Cudd_SubsetShortPaths(DdManager *dd, DdNode *f, int numVars, int threshold, int hardlimit)
DdNode * Cudd_addMinus(DdManager *dd, DdNode **f, DdNode **g)
int Cudd_bddSetPsVar(DdManager *dd, int index)
double Cudd_Density(DdManager *dd, DdNode *f, int nvars)
unsigned int Cudd_ReadMaxLive(DdManager *dd)
int Cudd_ApaCompareRatios(int digitsFirst, DdApaNumber firstNum, unsigned int firstDen, int digitsSecond, DdApaNumber secondNum, unsigned int secondDen)
DdNode * Cudd_UnderApprox(DdManager *dd, DdNode *f, int numVars, int threshold, int safe, double quality)
void Cudd_ApaCopy(int digits, DdApaNumber source, DdApaNumber dest)
unsigned int Cudd_NodeReadIndex(DdNode *node)
unsigned int Cudd_Prime(unsigned int p)
int Cudd_zddPrintMinterm(DdManager *zdd, DdNode *node)
int Cudd_AddHook(DdManager *dd, DD_HFP f, Cudd_HookType where)
int Cudd_ReadReorderingCycle(DdManager *dd)
DdNode * Cudd_bddIthVar(DdManager *dd, int i)
int Cudd_bddSetPairIndex(DdManager *dd, int index, int pairIndex)
int Cudd_CheckKeys(DdManager *table)
DdNode * Cudd_bddXor(DdManager *dd, DdNode *f, DdNode *g)
DdNode * Cudd_addOuterSum(DdManager *dd, DdNode *M, DdNode *r, DdNode *c)
void Cudd_SetGroupcheck(DdManager *dd, Cudd_AggregationType gc)
int Cudd_GenFree(DdGen *gen)
DdNode * Cudd_addTimesPlus(DdManager *dd, DdNode *A, DdNode *B, DdNode **z, int nz)
void Cudd_bddRealignDisable(DdManager *unique)
DdGen * Cudd_FirstCube(DdManager *dd, DdNode *f, int **cube, CUDD_VALUE_TYPE *value)
int * Cudd_SupportIndex(DdManager *dd, DdNode *f)
int Cudd_VectorSupportSize(DdManager *dd, DdNode **F, int n)
unsigned int Cudd_ReadKeys(DdManager *dd)
void Cudd_SetMaxGrowth(DdManager *dd, double mg)
int Cudd_IsInHook(DdManager *dd, DD_HFP f, Cudd_HookType where)
int Cudd_bddUnbindVar(DdManager *dd, int index)
int Cudd_bddReadPairIndex(DdManager *dd, int index)
DdNode * Cudd_bddAnd(DdManager *dd, DdNode *f, DdNode *g)
unsigned long Cudd_ReadMemoryInUse(DdManager *dd)
int Cudd_bddRealignmentEnabled(DdManager *unique)
void Cudd_DelayedDerefBdd(DdManager *table, DdNode *n)
DdNode * Cudd_zddIthVar(DdManager *dd, int i)
int Cudd_ReadPopulationSize(DdManager *dd)
int Cudd_DumpBlifBody(DdManager *dd, int n, DdNode **f, char **inames, char **onames, FILE *fp, int mv)
unsigned int Cudd_ApaIntDivision(int digits, DdApaNumber dividend, unsigned int divisor, DdApaNumber quotient)
DdNode * Cudd_addDiff(DdManager *dd, DdNode **f, DdNode **g)
void Cudd_zddSymmProfile(DdManager *table, int lower, int upper)
DdNode * Cudd_SupersetCompress(DdManager *dd, DdNode *f, int nvars, int threshold)
int Cudd_DumpDot(DdManager *dd, int n, DdNode **f, char **inames, char **onames, FILE *fp)
int Cudd_zddVarsFromBddVars(DdManager *dd, int multiplicity)
int Cudd_ApaPrintMinterm(FILE *fp, DdManager *dd, DdNode *node, int nvars)
int Cudd_zddPrintCover(DdManager *zdd, DdNode *node)
int * Cudd_VectorSupportIndex(DdManager *dd, DdNode **F, int n)
int Cudd_ReadPermZdd(DdManager *dd, int i)
void Cudd_FreeZddTree(DdManager *dd)
double Cudd_zddCountDouble(DdManager *zdd, DdNode *P)
void Cudd_Quit(DdManager *unique)
int Cudd_ReduceHeap(DdManager *table, Cudd_ReorderingType heuristic, int minsize)
void Cudd_AutodynEnable(DdManager *unique, Cudd_ReorderingType method)
double Cudd_ReadMaxGrowthAlternate(DdManager *dd)
DdNode * Cudd_addExistAbstract(DdManager *manager, DdNode *f, DdNode *cube)
int Cudd_ApaNumberOfDigits(int binaryDigits)
DdNode * Cudd_addUnivAbstract(DdManager *manager, DdNode *f, DdNode *cube)
void Cudd_TurnOnCountDead(DdManager *dd)
double Cudd_bddCorrelationWeights(DdManager *manager, DdNode *f, DdNode *g, double *prob)
DdNode * Cudd_addHamming(DdManager *dd, DdNode **xVars, DdNode **yVars, int nVars)
DdApaNumber Cudd_ApaCountMinterm(DdManager *manager, DdNode *node, int nvars, int *digits)
long Cudd_ReadPeakNodeCount(DdManager *dd)
DdApaDigit Cudd_ApaShortDivision(int digits, DdApaNumber dividend, DdApaDigit divisor, DdApaNumber quotient)
int Cudd_DumpFactoredForm(DdManager *dd, int n, DdNode **f, char **inames, char **onames, FILE *fp)
DdNode * Cudd_addMatrixMultiply(DdManager *dd, DdNode *A, DdNode *B, DdNode **z, int nz)
int Cudd_ReadSiftMaxSwap(DdManager *dd)
DdNode * Cudd_addNand(DdManager *dd, DdNode **f, DdNode **g)
unsigned int Cudd_ReadDead(DdManager *dd)
void Cudd_ApaShiftRight(int digits, DdApaDigit in, DdApaNumber a, DdApaNumber b)
DdNode * Cudd_addTimes(DdManager *dd, DdNode **f, DdNode **g)
int Cudd_StdPostReordHook(DdManager *dd, const char *str, void *data)
DdNode * Cudd_addNewVar(DdManager *dd)
int Cudd_ReadSiftMaxVar(DdManager *dd)
double Cudd_ReadMaxGrowth(DdManager *dd)
int Cudd_GarbageCollectionEnabled(DdManager *dd)
int Cudd_SupportSize(DdManager *dd, DdNode *f)
void Cudd_SetSiftMaxSwap(DdManager *dd, int sms)
unsigned int Cudd_ReadSlots(DdManager *dd)
int Cudd_MinHammingDist(DdManager *dd, DdNode *f, int *minterm, int upperBound)
FILE * Cudd_ReadStdout(DdManager *dd)
int Cudd_DumpDaVinci(DdManager *dd, int n, DdNode **f, char **inames, char **onames, FILE *fp)
DdNode * Cudd_SplitSet(DdManager *manager, DdNode *S, DdNode **xVars, int n, double m)
DdNode * Cudd_bddIntersect(DdManager *dd, DdNode *f, DdNode *g)
DdNode * Cudd_addWalsh(DdManager *dd, DdNode **x, DdNode **y, int n)
int Cudd_SharingSize(DdNode **nodeArray, int n)
DdNode * Cudd_Disequality(DdManager *dd, int N, int c, DdNode **x, DdNode **y)
DdNode * Cudd_addMinimum(DdManager *dd, DdNode **f, DdNode **g)
void Cudd_SetMaxLive(DdManager *dd, unsigned int maxLive)
int Cudd_EpdCountMinterm(DdManager *manager, DdNode *node, int nvars, EpDouble *epd)
void Cudd_SetStderr(DdManager *dd, FILE *fp)
int Cudd_ReadGarbageCollections(DdManager *dd)
CUDD_VALUE_TYPE Cudd_ReadEpsilon(DdManager *dd)
DdNode * Cudd_addOneZeroMaximum(DdManager *dd, DdNode **f, DdNode **g)
DdNode * Cudd_addBddStrictThreshold(DdManager *dd, DdNode *f, CUDD_VALUE_TYPE value)
void Cudd_zddRealignDisable(DdManager *unique)
DdNode * Cudd_VectorSupport(DdManager *dd, DdNode **F, int n)
int Cudd_DisableReorderingReporting(DdManager *dd)
double Cudd_ExpectedUsedSlots(DdManager *dd)
DdNode * Cudd_bddSqueeze(DdManager *dd, DdNode *l, DdNode *u)
int Cudd_BddToCubeArray(DdManager *dd, DdNode *cube, int *array)
int Cudd_bddIterConjDecomp(DdManager *dd, DdNode *f, DdNode ***conjuncts)
DdNode * Cudd_addXeqy(DdManager *dd, int N, DdNode **x, DdNode **y)
int Cudd_DagSize(DdNode *node)
char * Cudd_zddCoverPathToString(DdManager *zdd, int *path, char *str)
double Cudd_ReadUniqueLookUps(DdManager *dd)
int Cudd_zddDumpDot(DdManager *dd, int n, DdNode **f, char **inames, char **onames, FILE *fp)
void Cudd_PrintVersion(FILE *fp)
double Cudd_ReadRecursiveCalls(DdManager *dd)
int Cudd_ReadArcviolation(DdManager *dd)