APPLYBDDNODENOT(3)

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

✨ APPLYBDDNODENOT(3) β€” the bdd-glow-up page ✨

okay bestie, this is a page from the BDD FUNCTIONS manual, and it's literally the applybddnodenot page, section 3, and yes it's giving "tiny function, huge main character energy". πŸ’…


πŸŽ€ NAME πŸŽ€

applybddnodenot β€” complements a bdd.

like. it takes a bdd node and just. complements it. that's the whole vibe. no cap. ✨


🌸 ORIGIN 🌸

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

so it's French, it's academic, it's iconic, it's been here since forever. periodt. πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

#include "bdd101.h"
bddnode βˆ—applybddnodenot( BddSystem, BddNode )
  bddsystem βˆ—BddSystem;
  bddnode   βˆ—BddNode;

(yes the signature is that short, and honestly? she's efficient. we respect it. πŸ’–)


🌈 PARAMETERS 🌈

  • BddSystem β€” the bdd system. like, the whole system you're working in, bestie.
  • BddNode β€” the bdd node to complement. the one getting the glow-up. ✨

πŸ’– DESCRIPTION πŸ’–

So, applybddnodenot complements BddNode in the bdd system BddSystem.

And here's the little plot twist, the lowkey important part: if a null pointer is given, the default bdd system is used. so if you pass (bddsystem βˆ—)0 you're not being chaotic, you're just saying "use the default one". she understands. she's got you. 🫢


πŸ‘‘ RETURN VALUE πŸ‘‘

applybddnodenot returns a pointer to the resulting bdd node β€” and its number of external reference is incremented. so, like, you got a new node AND the ref count went up. that's the deal. πŸ’…


πŸ“ EXAMPLE πŸ“

here's the whole little story, verbatim, no notes:

#include "bdd101.h"
   bddsystem  βˆ—BddSystem;
   bddcircuit βˆ—BddCircuit;
   bddnode    βˆ—BddNode;
   chain_list βˆ—Expr;
   BddSystem  = createbddsystem( 100, 1000, 100, 50000 );
   BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
   addbddcircuitin( (bddcircuit βˆ—)0, "i0", 0, BDD_IN_MODE_FIRST );
   addbddcircuitin( (bddcircuit βˆ—)0, "i1", 0, BDD_IN_MODE_FIRST );
   BddNode = applybddnode( (bddsystem βˆ—)0,
                           ABL_AND,
                           searchbddcircuitin( (bddcircuit βˆ—)0, "i0" ),
                           searchbddcircuitin( (bddcircuit βˆ—)0, "i1" ) );
   BddNode = applybddnodenot( (bddsystem βˆ—)0, decbddrefext( BddNode ) );
   Expr = convertbddcircuitabl( (bddcircuit βˆ—)0, BddNode );
   /* displays (i0 nand i1) */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem βˆ—)0 );
   destroybddcircuit( (bddcircuit βˆ—)0 );

and yes, the /* displays (i0 nand i1) */ comment is the whole flex. ABL_AND plus a complement = nand. the math ate and left no crumbs. πŸ”₯ (also can we talk about hello_world being the circuit name, so cute πŸ₯Ί)


🌟 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.

bestie they are literally asking for feedback, so if you found a typo or a confusing bit, TELL THEM. it's not snitching, it's contributing. πŸ’–

🧚 cute lil sign-off 🧚

That's the page, bestie β€” from ASIM/LIP6, dated October 1, 1997, and it lives under APPLYBDDNODENOT(3). mwah. πŸ’‹ stay complemented. πŸ’…βœ¨πŸ¦‹