diff options
-rw-r--r-- | src/base/abci/abc.c | 4 | ||||
-rw-r--r-- | src/misc/extra/extraUtilSupp.c | 23 |
2 files changed, 21 insertions, 6 deletions
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index db033d34..1b0ffbc3 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -10479,8 +10479,8 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv ) if ( fNewAlgo ) { - extern void Abc_SuppTest( int nOnes, int nVars, int fVerbose ); - Abc_SuppTest( nNumOnes, nDecMax, fVerbose ); + extern void Abc_SuppTest( int nOnes, int nVars, int fUseSimple, int fVerbose ); + Abc_SuppTest( nNumOnes, nDecMax, fNewOrder, fVerbose ); } else { diff --git a/src/misc/extra/extraUtilSupp.c b/src/misc/extra/extraUtilSupp.c index 4699b7ae..13d8828b 100644 --- a/src/misc/extra/extraUtilSupp.c +++ b/src/misc/extra/extraUtilSupp.c @@ -92,6 +92,21 @@ Vec_Int_t * Abc_SuppGenPairs( Vec_Int_t * p, int nBits ) ABC_FREE( pMap ); return vRes; } +Vec_Int_t * Abc_SuppGenPairs2( int nOnes, int nBits ) +{ + Vec_Int_t * vRes = Vec_IntAlloc( 1000 ); + int i, k, Size = (1 << nBits), Value; + for ( i = 0; i < Size; i++ ) + { + Value = Abc_SuppCountOnes(i); + for ( k = 1; k <= nOnes; k++ ) + if ( Value == 2*k ) + break; + if ( k <= nOnes ) + Vec_IntPush( vRes, i ); + } + return vRes; +} /**Function************************************************************* @@ -196,17 +211,17 @@ int Abc_SuppMinimize( Vec_Int_t * p, int nBits, int fVerbose ) SeeAlso [] ***********************************************************************/ -void Abc_SuppTest( int nOnes, int nVars, int fVerbose ) +void Abc_SuppTest( int nOnes, int nVars, int fUseSimple, int fVerbose ) { int nVarsMin; abctime clk = Abc_Clock(); // create the problem Vec_Int_t * vRes = Abc_SuppGen( nOnes, nVars ); - Vec_Int_t * vPairs = Abc_SuppGenPairs( vRes, nVars ); + Vec_Int_t * vPairs = fUseSimple ? Abc_SuppGenPairs2( nOnes, nVars ) : Abc_SuppGenPairs( vRes, nVars ); printf( "M = %2d N = %2d : ", nOnes, nVars ); printf( "K = %6d ", Vec_IntSize(vRes) ); - printf( "Total = %10d ", Vec_IntSize(vRes) * (Vec_IntSize(vRes) - 1) /2 ); - printf( "Distinct = %8d ", Vec_IntSize(vPairs) ); + printf( "Total = %12u ", (word)Vec_IntSize(vRes) * (word)(Vec_IntSize(vRes) - 1) / 2 ); + printf( "Distinct = %8d ", Vec_IntSize(vPairs) ); Abc_PrintTime( 1, "Reduction time", Abc_Clock() - clk ); // solve the problem clk = Abc_Clock(); |