cofactorbddnode(3) computes the generalized cofactor.

SYNOPSYS

#include "bdd101.h"
bddnode *cofactorbddnode( BddSystem, BddNode1, BddNode2 )
  bddsystem *BddSystem;
  bddnode   *BddNode1;
  bddnode   *BddNode2;

PARAMETERS

BddSystem
The bdd system.
BddNode1
The first bdd node.
BddNode2
The second bdd node.

DESCRIPTION

cofactorbddnode computes the generalized cofactor of BddNode1 by BddNode2, in the bdd system BddSystem. If a null pointer is given, the default bdd system is used.

RETURN VALUE

cofactorbddnode returns the resulting bdd node.

ERRORS

"index xxx out of range"
The BddNode2 parameter must be different to the zero bdd node.

EXAMPLE

#include "bdd101.h"
   bddsystem  *BddSystem;
   bddcircuit *BddCircuit;
   bddnode    *BddNode1;
   bddnode    *BddNode2;
   bddnode    *BddNode;
   chain_list *Expr;
   BddSystem  = createbddsystem( 100, 1000, 100, 50000 );
   BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
   Expr = createablbinexpr( ABL_OR,
                            createablatom( "i0" ),
                            createablatom( "i1" ) );
   BddNode1 = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   Expr = createablbinexpr( ABL_AND,
                            createablatom( "i0" ),
                            createablatom( "i1" ) );
   BddNode2 = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   BddNode = cofactorbddnode( (bddsystem *)0, BddNode1, BddNode2 );
   Expr = convertbddcircuitabl( BddCircuit, BddNode );
   /* displays '1' */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem *)0 );
   destroybddcircuit( (bddcircuit *)0 );