Commit 5a5577f9 by Alan Mishchenko

Integrated new fast semi-canonical form for Boolean functions up to 16 inputs.

parent 39fe23f0
...@@ -175,8 +175,6 @@ inline void minimalSwapAndFlipIVar_superFast_lessThen5(word* pInOut, int iVar, i ...@@ -175,8 +175,6 @@ inline void minimalSwapAndFlipIVar_superFast_lessThen5(word* pInOut, int iVar, i
{ {
int min1, min2, DifStart0, DifStart1, DifStartMin; int min1, min2, DifStart0, DifStart1, DifStartMin;
int M[2]; int M[2];
int blockSize = 1<<iVar;
// int shiftSize = blockSize*4;
M[0] = minTemp0_fast(pInOut, iVar, nWords, &DifStart0); // 0, 3 M[0] = minTemp0_fast(pInOut, iVar, nWords, &DifStart0); // 0, 3
M[1] = minTemp1_fast(pInOut, iVar, nWords, &DifStart1); // 1, 2 M[1] = minTemp1_fast(pInOut, iVar, nWords, &DifStart1); // 1, 2
...@@ -512,8 +510,6 @@ inline void minimalSwapAndFlipIVar_superFast_moreThen5(word* pInOut, int iVar, i ...@@ -512,8 +510,6 @@ inline void minimalSwapAndFlipIVar_superFast_moreThen5(word* pInOut, int iVar, i
int min1, min2, DifStart0, DifStart1, DifStartMin; int min1, min2, DifStart0, DifStart1, DifStartMin;
int M[2]; int M[2];
word temp[1024]; word temp[1024];
int blockSize = 1<<(iVar-6);
// int shiftSize = blockSize*4;
M[0] = minTemp0_fast_moreThen5(pInOut, iVar, nWords, &DifStart0); // 0, 3 M[0] = minTemp0_fast_moreThen5(pInOut, iVar, nWords, &DifStart0); // 0, 3
M[1] = minTemp1_fast_moreThen5(pInOut, iVar, nWords, &DifStart1); // 1, 2 M[1] = minTemp1_fast_moreThen5(pInOut, iVar, nWords, &DifStart1); // 1, 2
......
...@@ -49,7 +49,7 @@ void swapAndFlip(word* pAfter, int nVars, int iVarInPosition, int jVar, char * p ...@@ -49,7 +49,7 @@ void swapAndFlip(word* pAfter, int nVars, int iVarInPosition, int jVar, char * p
*pUCanonPhase ^= (1 << iVarInPosition); *pUCanonPhase ^= (1 << iVarInPosition);
*pUCanonPhase ^= (1 << jVar); *pUCanonPhase ^= (1 << jVar);
} }
if(*pUCanonPhase>>iVarInPosition & (unsigned)1 == 1) if((*pUCanonPhase>>iVarInPosition) & 1)
Kit_TruthChangePhase_64bit( pAfter, nVars, iVarInPosition ); Kit_TruthChangePhase_64bit( pAfter, nVars, iVarInPosition );
} }
...@@ -68,7 +68,7 @@ int luckyCheck(word* pAfter, word* pBefore, int nVars, char * pCanonPerm, unsign ...@@ -68,7 +68,7 @@ int luckyCheck(word* pAfter, word* pBefore, int nVars, char * pCanonPerm, unsign
break; break;
} }
} }
if(uCanonPhase>>nVars & (unsigned)1 == 1) if((uCanonPhase>>nVars) & 1)
Kit_TruthNot_64bit(pAfter, nVars ); Kit_TruthNot_64bit(pAfter, nVars );
if(memcmp(pAfter, pBefore, Kit_TruthWordNum_64bit( nVars )*sizeof(word)) == 0) if(memcmp(pAfter, pBefore, Kit_TruthWordNum_64bit( nVars )*sizeof(word)) == 0)
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment