abc/src/bdd/cudd/cuddBddIte.c
/**Function********************************************************************

  Synopsis    [Computes the conjunction of two BDDs f and g.  Returns
  NULL if too many nodes are required.]

  Description [Computes the conjunction of two BDDs f and g. Returns a
  pointer to the resulting BDD if successful; NULL if the intermediate
  result blows up or more new nodes than <code>limit</code> are
  required.]

  SideEffects [None]

  SeeAlso     [Cudd_bddAnd]

******************************************************************************/
Function
Synopsis    [Computes the conjunction of two BDDs f and g.  Returns
NULL if too many nodes are required.]

Description [Computes the conjunction of two BDDs f and g. Returns a
pointer to the resulting BDD if successful; NULL if the intermediate
result blows up or more new nodes than limit are
required.]




Function Synopsis [ Computes the conjunction of two BDDs f and g . Returns NULL if too many nodes are required . ] Description [ Computes the conjunction of two BDDs f and g . Returns a pointer to the resulting BDD if successful ; NULL if the intermediate result blows up or more new nodes than limit are required . ]
DdNode *
Cudd_bddAndLimit(
  DdManager * dd,
  DdNode * f,
  DdNode * g,
  unsigned int limit)
{
    DdNode *res;
    unsigned int saveLimit = dd->maxLive;
    dd->maxLive = (dd->keys - dd->dead) + (dd->keysZ - dd->deadZ) + limit;
    do {
        dd->reordered = 0;
        res = cuddBddAndRecur(dd,f,g);
    } while (dd->reordered == 1);
    dd->maxLive = saveLimit;
    return(res);
}
DdNode * Cudd_bddAndLimit ( DdManager * dd , DdNode * f , DdNode * g , unsigned int limit ) { DdNode * res ; unsigned int saveLimit = dd -> maxLive ; dd -> maxLive = ( dd -> keys - dd -> dead ) + ( dd -> keysZ - dd -> deadZ ) + limit ; do { dd -> reordered = 0 ; res = cuddBddAndRecur ( dd , f , g ) ; } while ( dd -> reordered == 1 ) ; dd -> maxLive = saveLimit ; return ( res ) ; }
Function
Synopsis    [Computes the conjunction of two BDDs f and g.  Returns
NULL if too many nodes are required.]
Function Synopsis [ Computes the conjunction of two BDDs f and g . Returns NULL if too many nodes are required . ]