160 DdNode * bSpace, * bFunc1, * bFunc2, * bSpaceShift;
168 for ( i = 0; i < dd->
size; i++ )
173 if ( 2*nSupp > dd->
size )
175 printf(
"Cannot derive linear space, because DD manager does not have enough variables.\n" );
185 for ( i = 0; i < dd->
size; i++ )
195 for ( lev = 0; lev < dd->
size; lev++ )
196 if ( pSupport[ dd->
invperm[lev] ] )
221 bSpaceShift =
Cudd_Not( bSpaceShift );
229 for ( i = 0; i < dd->
size; i++ )
479 for ( ; zComb !=
z1; zComb =
cuddT(zComb) )
514 zEquRem = zEquations;
Cudd_Ref( zEquRem );
515 while ( zEquRem !=
z0 )
525 for ( zTemp = zExor; zTemp !=
z1; zTemp =
cuddT(zTemp) )
527 if ( pVarsNonCan[zTemp->
index/2] == 1 )
529 assert( iVarNonCan == -1 );
530 iVarNonCan = zTemp->
index/2;
533 assert( iVarNonCan != -1 );
536 pzRes[ iVarNonCan ] = zExor;
581 if ( (
unsigned)(ABC_PTRUINT_T)bF > (
unsigned)(ABC_PTRUINT_T)bG )
591 DdNode * bTemp1, * bTemp2;
598 if ( LevelF <= LevelG )
618 if ( LevelG <= LevelF )
635 if ( bTemp1 == NULL )
640 if ( bTemp2 == NULL )
661 if ( bTemp1 == NULL )
669 if ( bTemp2 == NULL )
692 if ( bRes0 == bRes1 )
824 if ( bRes0 == bRes1 )
955 if ( bRes0 == bRes1 )
1033 else if ( bF1 ==
b0 )
1042 if ( bRes0 == NULL )
1085 DdNode * bFR, * bF0, * bF1;
1086 DdNode * zPos0, * zPos1, * zNeg1;
1087 DdNode * zRes, * zRes0, * zRes1;
1104 if ( zRes1 == NULL )
1117 else if ( bF1 ==
b0 )
1126 if ( zPos0 == NULL )
1131 if ( zPos1 == NULL )
1139 if ( zNeg1 == NULL )
1149 if ( zRes0 == NULL )
1159 if ( zRes1 == NULL )
1215 DdNode * bFR, * bF0, * bF1;
1216 DdNode * zPos0, * zPos1, * zNeg1;
1217 DdNode * zRes, * zRes0, * zRes1;
1237 else if ( bF1 ==
b0 )
1240 if ( zRes0 == NULL )
1256 if ( zPos0 == NULL )
1261 if ( zPos1 == NULL )
1269 if ( zNeg1 == NULL )
1279 if ( zRes0 == NULL )
1289 if ( zRes1 == NULL )
1365 if ( bRes0 == NULL )
1394 if ( bRes1 == NULL )
1407 if ( bRes0 == bRes1 )
1483 if ( bRes0 == NULL )
1512 if ( bRes1 == NULL )
1525 if ( bRes0 == bRes1 )
void Cudd_RecursiveDerefZdd(DdManager *table, DdNode *n)
void Cudd_RecursiveDeref(DdManager *table, DdNode *n)
DdNode * cuddZddGetNode(DdManager *zdd, int id, DdNode *T, DdNode *E)
void cuddCacheInsert2(DdManager *table, DD_CTFP op, DdNode *f, DdNode *g, DdNode *data)
void Cudd_Deref(DdNode *node)
#define Cudd_Regular(node)
#define ABC_ALLOC(type, num)
DdNode * Cudd_zddDiff(DdManager *dd, DdNode *P, DdNode *Q)
DdNode * Cudd_bddVectorCompose(DdManager *dd, DdNode *f, DdNode **vector)
DdNode * cuddCacheLookup2(DdManager *table, DD_CTFP op, DdNode *f, DdNode *g)
DdNode * Cudd_zddUnion(DdManager *dd, DdNode *P, DdNode *Q)
#define Cudd_IsComplement(node)
DdNode * Cudd_Cofactor(DdManager *dd, DdNode *f, DdNode *g)
DdNode * cuddCacheLookup1(DdManager *table, DD_CTFP1 op, DdNode *f)
DdNode * Cudd_bddPermute(DdManager *manager, DdNode *node, int *permut)
DdNode * cuddZddIntersect(DdManager *zdd, DdNode *P, DdNode *Q)
#define ABC_NAMESPACE_IMPL_END
#define cuddIsConstant(node)
DdNode * Cudd_bddXorExistAbstract(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube)
#define ABC_NAMESPACE_IMPL_START
DdNode * Cudd_bddXor(DdManager *dd, DdNode *f, DdNode *g)
DdNode * Cudd_bddAnd(DdManager *dd, DdNode *f, DdNode *g)
DdNode * cuddBddAndRecur(DdManager *manager, DdNode *f, DdNode *g)
DdNode * cuddUniqueInter(DdManager *unique, int index, DdNode *T, DdNode *E)
DdNode * cuddCacheLookup1Zdd(DdManager *table, DD_CTFP1 op, DdNode *f)
void cuddCacheInsert1(DdManager *table, DD_CTFP1 op, DdNode *f, DdNode *data)