51 int i, k, Level, Volume;
58 if ( LevelOld < (
int)p0->
Level )
61 printf(
"Starting level %d (at %d nodes).\n", LevelOld+1, i );
62 printf(
"Considered = %5d M. Found = %8d. Classes = %6d. Trying %7d.\n",
89 printf(
"Considered = %5d M. Found = %8d. Classes = %6d. Trying %7d.\n",
94 printf(
"Considered = %5d M. Found = %8d. Classes = %6d. Trying %7d.\n",
121 printf(
"Total canonical = %4d. Total used = %5d.\n", nNodes, p->
vForest->nSize );
153 ppPlace = p->
pTable + uTruth;
154 for ( pOld = *ppPlace; pOld; ppPlace = &pOld->
pNext, pOld = pOld->
pNext )
156 if ( pOld->
Level < (
unsigned)Level && pOld->
Volume < (unsigned)Volume )
158 if ( pOld->
Level == (
unsigned)Level && pOld->
Volume < (unsigned)Volume )
231 if ( uTruth != p->
puCanons[uTruth] )
236 if ( p->
pTable[uTruth] == NULL )
#define Vec_PtrForEachEntryStart(Type, vVec, pEntry, i, Start)
static void Rwr_MarkUsed_rec(Rwr_Man_t *p, Rwr_Node_t *pNode)
unsigned short * puCanons
int Rwr_ManNodeVolume(Rwr_Man_t *p, Rwr_Node_t *p0, Rwr_Node_t *p1)
Rwr_Node_t * Rwr_ManAddNode(Rwr_Man_t *p, Rwr_Node_t *p0, Rwr_Node_t *p1, int fExor, int Level, int Volume)
static int Rwr_IsComplement(Rwr_Node_t *p)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
void Rwr_ManPrecompute(Rwr_Man_t *p)
FUNCTION DEFINITIONS ///.
static int Abc_MaxInt(int a, int b)
Extra_MmFixed_t * pMmNode
#define RWR_LIMIT
INCLUDES ///.
static ABC_NAMESPACE_IMPL_START Rwr_Node_t * Rwr_ManTryNode(Rwr_Man_t *p, Rwr_Node_t *p0, Rwr_Node_t *p1, int fExor, int Level, int Volume)
DECLARATIONS ///.
#define ABC_NAMESPACE_IMPL_END
void Rwr_ManIncTravId(Rwr_Man_t *p)
Rwr_Node_t * Rwr_ManAddVar(Rwr_Man_t *p, unsigned uTruth, int fPrecompute)
#define ABC_NAMESPACE_IMPL_START
void Rwr_ListAddToTail(Rwr_Node_t **ppList, Rwr_Node_t *pNode)
static Rwr_Node_t * Rwr_Not(Rwr_Node_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
void Rwr_Trav_rec(Rwr_Man_t *p, Rwr_Node_t *pNode, int *pVolume)
static Rwr_Node_t * Rwr_Regular(Rwr_Node_t *p)