COFACTORBDDNODE(3)

πŸ“¦ version 5.1.1, in fedora 43, fedora 44

✨ NAME ✨

okay so bestie, this page is COFACTORBDDNODE(3), living in the BDD FUNCTIONS manual, and it's the whole glow-up story of one function: cofactorbddnode β€” she computes the generalized cofactor. that's it, that's the vibe. πŸ’…


🌈 ORIGIN 🌈

This software belongs to the ALLIANCE CAD SYSTEM, which was developed by the ASIM team at the LIP6 laboratory of UniversitΓ© Pierre et Marie CURIE, in Paris, France. πŸ‡«πŸ‡·βœ¨


πŸ“œ SYNOPSIS πŸ“œ

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

πŸŽ€ PARAMETERS πŸŽ€

  • BddSystem β€” the bdd system. that's her home base 🏠
  • BddNode1 β€” the first bdd node.
  • BddNode2 β€” the second bdd node.

πŸ’« DESCRIPTION πŸ’«

cofactorbddnode computes the generalized cofactor of BddNode1 by BddNode2, inside the bdd system BddSystem. 🧠✨

and here's the little plot twist: if a null pointer is given, the default bdd system gets used instead. no cap. πŸ™ˆ


🫢 RETURN VALUE 🫢

cofactorbddnode returns the resulting bdd node. iconic behavior, honestly. πŸ‘‘


πŸ’€ ERRORS πŸ’€

  • "index xxx out of range" β€” the BddNode2 parameter must be different to the zero bdd node. so like… don't hand her a zero node, she will simply not be okay with it. 😭

πŸ“ 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 );
lowkey obsessed with the fact that this whole thing exists just to print a 1. and yet. she ate. πŸ”₯

πŸ‘‘ SEE ALSO πŸ‘‘


πŸ“£ BUG REPORT πŸ“£

This tool is under development at the ASIM department of the LIP6 laboratory. We need your feedback to improve documentation and tools. so like, please send thoughts, bestie, they're literally asking πŸ™πŸ’–


and that's the whole page!! this one came from ASIM/LIP6, dated October 1, 1997, and yes the footer really does say COFACTORBDDNODE(3) β€” we love a full circle moment. mwah πŸ’‹βœ¨