90 static char rcsid[]
DD_UNUSED =
"$Id: cuddClip.c,v 1.8 2004/08/13 18:04:47 fabio Exp $";
276 DdNode *F, *ft, *fe, *G, *gt, *ge;
278 unsigned int topf, topg, index;
286 if (f == zero || g == zero || f ==
Cudd_Not(g))
return(zero);
287 if (f == g || g == one)
return(f);
288 if (f == one)
return(g);
294 if (direction == 1) {
314 if (F->
ref != 1 || G->
ref != 1) {
316 if (r != NULL)
return(r);
351 if (t == NULL)
return(NULL);
382 if (F->
ref != 1 || G->
ref != 1)
413 DdNode *F, *ft, *fe, *G, *gt, *ge;
415 unsigned int topf, topg, topcube, top, index;
423 if (f == zero || g == zero || f ==
Cudd_Not(g))
return(zero);
424 if (f == one && g == one)
return(one);
428 if (f == one || f == g) {
434 if (distance == 0)
return(
Cudd_NotCond(one,(direction == 0)));
448 if (F->
ref != 1 || G->
ref != 1) {
461 top =
ddMin(topf, topg);
466 distance, direction));
494 if (topcube == top) {
501 if (t == NULL)
return(NULL);
506 if (t == one && topcube == top) {
507 if (F->
ref != 1 || G->
ref != 1)
520 if (topcube == top) {
522 distance, (direction == 0));
557 if (F->
ref != 1 || G->
ref != 1)
DdNode * cuddBddExistAbstractRecur(DdManager *manager, DdNode *f, DdNode *cube)
void Cudd_RecursiveDeref(DdManager *table, DdNode *n)
void cuddCacheInsert2(DdManager *table, DD_CTFP op, DdNode *f, DdNode *g, DdNode *data)
static ABC_NAMESPACE_IMPL_START char rcsid[] DD_UNUSED
DdNode * cuddBddClippingAndAbstract(DdManager *dd, DdNode *f, DdNode *g, DdNode *cube, int maxDepth, int direction)
#define Cudd_Regular(node)
#define DD_BDD_CLIPPING_AND_ABSTRACT_DOWN_TAG
void cuddCacheInsert(DdManager *table, ptruint op, DdNode *f, DdNode *g, DdNode *h, DdNode *data)
DdNode *(* DD_CTFP)(DdManager *, DdNode *, DdNode *)
DdNode * cuddBddClippingAnd(DdManager *dd, DdNode *f, DdNode *g, int maxDepth, int direction)
DdNode * Cudd_bddClippingAndAbstract(DdManager *dd, DdNode *f, DdNode *g, DdNode *cube, int maxDepth, int direction)
DdNode * cuddCacheLookup2(DdManager *table, DD_CTFP op, DdNode *f, DdNode *g)
#define Cudd_IsComplement(node)
static DdNode * cuddBddClippingAndRecur(DdManager *manager, DdNode *f, DdNode *g, int distance, int direction)
#define ABC_NAMESPACE_IMPL_END
#define ABC_NAMESPACE_IMPL_START
int Cudd_bddLeq(DdManager *dd, DdNode *f, DdNode *g)
#define Cudd_NotCond(node, c)
static DdNode * cuddBddClipAndAbsRecur(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube, int distance, int direction)
DdNode * cuddUniqueInter(DdManager *unique, int index, DdNode *T, DdNode *E)
DdNode * Cudd_bddClippingAnd(DdManager *dd, DdNode *f, DdNode *g, int maxDepth, int direction)
DdNode * cuddCacheLookup(DdManager *table, ptruint op, DdNode *f, DdNode *g, DdNode *h)
#define DD_BDD_CLIPPING_AND_ABSTRACT_UP_TAG