29#ifndef ABC__misc__extra__extra_bdd_h
30#define ABC__misc__extra__extra_bdd_h
34#define inline __inline
47#include "bdd/cudd/cuddInt.h"
75#define b0 Cudd_Not((dd)->one)
83#define hashKey1(a,TSIZE) \
84((ABC_PTRUINT_T)(a) % TSIZE)
86#define hashKey2(a,b,TSIZE) \
87(((ABC_PTRUINT_T)(a) + (ABC_PTRUINT_T)(b) * DD_P1) % TSIZE)
89#define hashKey3(a,b,c,TSIZE) \
90(((((ABC_PTRUINT_T)(a) + (ABC_PTRUINT_T)(b)) * DD_P1 + (ABC_PTRUINT_T)(c)) * DD_P2 ) % TSIZE)
92#define hashKey4(a,b,c,d,TSIZE) \
93((((((ABC_PTRUINT_T)(a) + (ABC_PTRUINT_T)(b)) * DD_P1 + (ABC_PTRUINT_T)(c)) * DD_P2 + \
94 (ABC_PTRUINT_T)(d)) * DD_P3) % TSIZE)
96#define hashKey5(a,b,c,d,e,TSIZE) \
97(((((((ABC_PTRUINT_T)(a) + (ABC_PTRUINT_T)(b)) * DD_P1 + (ABC_PTRUINT_T)(c)) * DD_P2 + \
98 (ABC_PTRUINT_T)(d)) * DD_P3 + (ABC_PTRUINT_T)(e)) * DD_P1) % TSIZE)
134extern DdNode *
Extra_bddEncodingBinary( DdManager * dd, DdNode ** pbFuncs,
int nFuncs, DdNode ** pbVars,
int nVars );
136extern DdNode *
Extra_bddEncodingNonStrict( DdManager * dd, DdNode ** pbColumns,
int nColumns, DdNode * bVarsCol, DdNode ** pCVars,
int nMulti,
int * pSimple );
140extern int Extra_bddNodePathsUnderCutArray( DdManager * dd, DdNode ** paNodes, DdNode ** pbCubes,
int nNodes, DdNode ** paNodesRes, DdNode ** pbCubesRes,
int CutLevel );
142extern int Extra_ProfileWidth( DdManager * dd, DdNode * F,
int * Profile,
int CutLevel );
148 DdManager * dd, DdNode * bCare,
149 int nParts, DdNode ** pbParts,
150 int nVars, DdNode ** pbVars,
int fVerbose );
157 DdManager *
dd, DdNode * bCare,
158 int nParts, DdNode ** pbParts,
159 int nVars, DdNode ** pbVars,
int fVerbose );
166extern DdNode *
Extra_TransferPermute( DdManager * ddSource, DdManager * ddDestination, DdNode * f,
int * Permute );
169extern DdNode *
Extra_bddMove( DdManager *
dd, DdNode * bF,
int nVars );
170extern DdNode *
extraBddMove( DdManager *
dd, DdNode * bF, DdNode * bFlag );
174extern void extraDecomposeCover( DdManager*
dd, DdNode* zC, DdNode** zC0, DdNode** zC1, DdNode** zC2 );
192extern void Extra_bddPermuteArray( DdManager *
dd, DdNode ** bNodesIn, DdNode ** bNodesOut,
int nNodes,
int *permut );
197extern DdNode *
Extra_bddAndPermute( DdManager * ddF, DdNode * bF, DdManager * ddG, DdNode * bG,
int * pPermute );
198extern int Extra_bddCountCubes( DdManager *
dd, DdNode ** pFuncs,
int nFuncs,
int fMode,
int nLimit,
int * pGuide );
199extern void Extra_zddDumpPla( DdManager *
dd, DdNode * zCover,
int nVars,
char * pFileName );
203extern DdNode *
extraBddTuples( DdManager *
dd, DdNode * bVarsK, DdNode * bVarsN );
206#define ABC_PRB(dd,f) printf("%s = ", #f); Extra_bddPrint(dd,f); printf("\n")
250extern void Extra_PrintKMap( FILE * pFile, DdManager *
dd, DdNode * OnSet, DdNode * OffSet,
int nVars, DdNode ** XVars,
int fSuppType,
char ** pVarNames );
252extern void Extra_PrintKMapRelation( FILE * pFile, DdManager *
dd, DdNode * OnSet, DdNode * OffSet,
int nXVars,
int nYVars, DdNode ** XVars, DdNode ** YVars );
307extern DdNode *
Extra_bddAndTime( DdManager * dd, DdNode * f, DdNode * g,
int TimeOut );
309extern DdNode *
Extra_TransferPermuteTime( DdManager * ddSource, DdManager * ddDestination, DdNode * f,
int * Permute,
int TimeOut );
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.