564 unsigned * pTruthRes, * pTruthFans[16], * pTruthTemp;
565 unsigned i, iLit, fCompl;
569 pObj = Kit_DsdNtkObj( pNtk, Id );
570 pTruthRes = (
unsigned *)Vec_PtrEntry(
p->vTtNodes, Id );
575 assert( Id < pNtk->nVars );
583 Kit_TruthFill( pTruthRes, pNtk->
nVars );
591 iLit = pObj->
pFans[0];
593 if ( Abc_LitIsCompl(iLit) )
594 Kit_TruthNot( pTruthRes, pTruthFans[0], pNtk->
nVars );
596 Kit_TruthCopy( pTruthRes, pTruthFans[0], pNtk->
nVars );
608 Kit_TruthFill( pTruthRes, pNtk->
nVars );
610 Kit_TruthAndPhase( pTruthRes, pTruthRes, pTruthFans[i], pNtk->
nVars, 0, Abc_LitIsCompl(iLit) );
615 Kit_TruthClear( pTruthRes, pNtk->
nVars );
619 Kit_TruthXor( pTruthRes, pTruthRes, pTruthFans[i], pNtk->
nVars );
620 fCompl ^= Abc_LitIsCompl(iLit);
623 Kit_TruthNot( pTruthRes, pTruthRes, pNtk->
nVars );
646 if ( Abc_LitIsCompl(iLit) )
647 Kit_TruthNot( pTruthFans[i], pTruthFans[i], pNtk->
nVars );
649 Kit_TruthCopy( pTruthRes, pTruthTemp, pNtk->
nVars );
694 unsigned * pTruthRes, * pTruthFans[16], * pTruthTemp;
695 unsigned i, iLit, fCompl, nPartial = 0;
699 pObj = Kit_DsdNtkObj( pNtk, Id );
700 pTruthRes = (
unsigned *)Vec_PtrEntry(
p->vTtNodes, Id );
705 assert( Id < pNtk->nVars );
706 assert( !uSupp || uSupp != (uSupp & ~(1<<Id)) );
714 Kit_TruthFill( pTruthRes, pNtk->
nVars );
722 iLit = pObj->
pFans[0];
723 assert( Kit_DsdLitIsLeaf( pNtk, iLit ) );
725 if ( Abc_LitIsCompl(iLit) )
726 Kit_TruthNot( pTruthRes, pTruthFans[0], pNtk->
nVars );
728 Kit_TruthCopy( pTruthRes, pTruthFans[0], pNtk->
nVars );
736 if ( uSupp != (uSupp & ~Kit_DsdLitSupport(pNtk, iLit)) )
740 pTruthFans[i] = NULL;
754 Kit_TruthFill( pTruthRes, pNtk->
nVars );
757 Kit_TruthAndPhase( pTruthRes, pTruthRes, pTruthFans[i], pNtk->
nVars, 0, Abc_LitIsCompl(iLit) );
762 Kit_TruthClear( pTruthRes, pNtk->
nVars );
768 Kit_TruthXor( pTruthRes, pTruthRes, pTruthFans[i], pNtk->
nVars );
769 fCompl ^= Abc_LitIsCompl(iLit);
773 Kit_TruthNot( pTruthRes, pTruthRes, pNtk->
nVars );
778 if ( uSupp && nPartial )
784 assert( i < pObj->nFans );
785 return pTruthFans[i];
806 if ( Abc_LitIsCompl(iLit) )
807 Kit_TruthNot( pTruthFans[i], pTruthFans[i], pNtk->
nVars );
809 Kit_TruthCopy( pTruthRes, pTruthTemp, pNtk->
nVars );
858 unsigned * pTruthRes, * pTruthFans[16], * pTruthTemp;
859 unsigned i, iLit, fCompl, nPartial, uSuppFan, uSuppCur;
864 pObj = Kit_DsdNtkObj( pNtk, Id );
865 pTruthRes = (
unsigned *)Vec_PtrEntry(
p->vTtNodes, Id );
868 assert( Id < pNtk->nVars );
880 uSuppCur = Kit_DsdLitSupport(pNtk, iLit);
881 if ( uSupp & uSuppCur )
884 uSuppFan |= uSuppCur;
889 if ( nPartial == 0 || nPartial == pObj->
nFans )
894 if ( uSuppFan != (uSuppFan & uSupp) )
900 if ( uSupp & Kit_DsdLitSupport(pNtk, iLit) )
909 Kit_TruthFill( pTruthRes, pNtk->
nVars );
911 Kit_TruthAndPhase( pTruthRes, pTruthRes, pTruthFans[i], pNtk->
nVars, 0, Abc_LitIsCompl(iLit) );
916 Kit_TruthClear( pTruthRes, pNtk->
nVars );
920 fCompl ^= Abc_LitIsCompl(iLit);
921 Kit_TruthXor( pTruthRes, pTruthRes, pTruthFans[i], pNtk->
nVars );
924 Kit_TruthNot( pTruthRes, pTruthRes, pNtk->
nVars );
931 assert( uSuppFan == (uSuppFan & uSupp) );
932 assert( nPartial < pObj->nFans );
940 pfBoundSet[i] = (int)((uSupp & Kit_DsdLitSupport(pNtk, iLit)) > 0);
946 Kit_TruthIthVar( pTruthRes, pNtk->
nVars, iVar );
947 Kit_TruthFill( pTruthDec, pNtk->
nVars );
950 Kit_TruthAndPhase( pTruthDec, pTruthDec, pTruthFans[i], pNtk->
nVars, 0, Abc_LitIsCompl(iLit) );
952 Kit_TruthAndPhase( pTruthRes, pTruthRes, pTruthFans[i], pNtk->
nVars, 0, Abc_LitIsCompl(iLit) );
957 Kit_TruthIthVar( pTruthRes, pNtk->
nVars, iVar );
958 Kit_TruthClear( pTruthDec, pNtk->
nVars );
962 fCompl ^= Abc_LitIsCompl(iLit);
964 Kit_TruthXor( pTruthDec, pTruthDec, pTruthFans[i], pNtk->
nVars );
966 Kit_TruthXor( pTruthRes, pTruthRes, pTruthFans[i], pNtk->
nVars );
969 Kit_TruthNot( pTruthRes, pTruthRes, pNtk->
nVars );
979 assert( i < pObj->nFans );
982 Kit_TruthCopy( pTruthDec, pTruthFans[i], pNtk->
nVars );
984 Kit_TruthIthVar( pTruthFans[i], pNtk->
nVars, iVar );
1007 if ( Abc_LitIsCompl(iLit) )
1008 Kit_TruthNot( pTruthFans[i], pTruthFans[i], pNtk->
nVars );
1010 Kit_TruthCopy( pTruthRes, pTruthTemp, pNtk->
nVars );
1352 unsigned * pTruth, * pTruthNew;
1353 unsigned i, iLitFanin, piLitsNew[16], nLitsNew = 0;
1357 pObj = Kit_DsdNtkObj(
p, Abc_Lit2Var(iLit) );
1364 for ( i = 0; i < pObjNew->
nFans; i++ )
1366 return Abc_Var2Lit( pObjNew->
Id, Abc_LitIsCompl(iLit) );
1370 int fCompl = Abc_LitIsCompl(iLit);
1373 for ( i = 0; i < pObjNew->
nFans; i++ )
1376 fCompl ^= Abc_LitIsCompl(piLitsNew[i]);
1378 return Abc_Var2Lit( pObjNew->
Id, fCompl );
1385 pTruth = Kit_DsdObjTruth( pObj );
1386 pTruthNew = Kit_DsdObjTruth( pObjNew );
1387 Kit_TruthCopy( pTruthNew, pTruth, pObj->
nFans );
1393 if ( Abc_LitIsCompl(pObjNew->
pFans[i]) )
1395 pObjNew->
pFans[i] = Abc_LitRegular(pObjNew->
pFans[i]);
1400 if ( pObj->
nFans == 3 &&
1401 (pTruthNew[0] == 0xCACACACA || pTruthNew[0] == 0xC5C5C5C5 ||
1402 pTruthNew[0] == 0x3A3A3A3A || pTruthNew[0] == 0x35353535) )
1405 if ( pTruthNew[0] == 0xC5C5C5C5 )
1406 pObjNew->
pFans[0] = Abc_LitNot(pObjNew->
pFans[0]);
1407 else if ( pTruthNew[0] == 0x3A3A3A3A )
1408 pObjNew->
pFans[1] = Abc_LitNot(pObjNew->
pFans[1]);
1409 else if ( pTruthNew[0] == 0x35353535 )
1411 pObjNew->
pFans[0] = Abc_LitNot(pObjNew->
pFans[0]);
1412 pObjNew->
pFans[1] = Abc_LitNot(pObjNew->
pFans[1]);
1414 pTruthNew[0] = 0xCACACACA;
1416 if ( Abc_LitIsCompl(pObjNew->
pFans[2]) )
1418 unsigned char Temp = pObjNew->
pFans[0];
1420 pObjNew->
pFans[1] = Temp;
1421 pObjNew->
pFans[2] = Abc_LitNot(pObjNew->
pFans[2]);
1424 if ( Abc_LitIsCompl(pObjNew->
pFans[1]) )
1426 iLit = Abc_LitNot(iLit);
1427 pObjNew->
pFans[0] = Abc_LitNot(pObjNew->
pFans[0]);
1428 pObjNew->
pFans[1] = Abc_LitNot(pObjNew->
pFans[1]);
1430 return Abc_Var2Lit( pObjNew->
Id, Abc_LitIsCompl(iLit) );
1435 if ( Abc_LitIsCompl(iLit) )
1436 Kit_TruthNot( pTruthNew, pTruthNew, pObj->
nFans );
1437 return Abc_Var2Lit( pObjNew->
Id, 0 );
1975 unsigned * pTruth = Kit_DsdObjTruth(pObj);
1978 int i, iLit0, iLit1, nFans0, nFans1, nPairs;
1979 int fEquals[2][2], fOppos, fPairs[4][4];
1980 unsigned j, k, nFansNew, uSupp0, uSupp1;
1987 if ( uSupp != Kit_BitMask(pObj->
nFans) )
1989 nFansNew = Kit_WordCountOnes(uSupp);
1991 for ( j = k = 0; j < pObj->
nFans; j++ )
1992 if ( uSupp & (1 << j) )
1996 uSupp = Kit_BitMask(pObj->
nFans);
2000 if ( pObj->
nFans == 1 )
2003 if ( pTruth[0] == 0x55555555 )
2006 assert( pTruth[0] == 0xAAAAAAAA );
2008 *pPar = Abc_LitNotCond( pObj->
pFans[0], Abc_LitIsCompl(*pPar) );
2014 for ( i = pObj->
nFans - 1; i >= 0; i-- )
2022 fEquals[0][0] = Kit_TruthIsConst0( pCofs2[0], pObj->
nFans );
2023 fEquals[0][1] = Kit_TruthIsConst0( pCofs2[1], pObj->
nFans );
2024 fEquals[1][0] = Kit_TruthIsConst1( pCofs2[0], pObj->
nFans );
2025 fEquals[1][1] = Kit_TruthIsConst1( pCofs2[1], pObj->
nFans );
2026 fOppos = Kit_TruthIsOpposite( pCofs2[0], pCofs2[1], pObj->
nFans );
2027 assert( !Kit_TruthIsEqual(pCofs2[0], pCofs2[1], pObj->
nFans) );
2028 if ( fEquals[0][0] + fEquals[0][1] + fEquals[1][0] + fEquals[1][1] + fOppos == 0 )
2033 assert( uSupp == (uSupp0 | uSupp1 | (1<<i)) );
2034 if ( uSupp0 & uSupp1 )
2039 for ( k = 0; k < pObj->
nFans; k++ )
2041 pRes0->
pFans[k] = (uSupp0 & (1 << k))? pObj->
pFans[k] : 127;
2042 pRes1->
pFans[k] = (uSupp1 & (1 << k))? pObj->
pFans[k] : 127;
2044 Kit_TruthCopy( Kit_DsdObjTruth(pRes0), pCofs2[0], pObj->
nFans );
2045 Kit_TruthCopy( Kit_DsdObjTruth(pRes1), pCofs2[1], pObj->
nFans );
2048 pTruth[0] = 0xCACACACA;
2063 pRes->
pFans[0] = pObj->
pFans[i]; pObj->
pFans[i] = 127; uSupp &= ~(1 << i);
2066 *pPar = Abc_LitNotCond( 2 * pRes->
Id, Abc_LitIsCompl(*pPar) );
2068 if ( fEquals[0][0] )
2070 Kit_TruthCopy( pTruth, pCofs2[1], pObj->
nFans );
2072 else if ( fEquals[0][1] )
2075 Kit_TruthCopy( pTruth, pCofs2[0], pObj->
nFans );
2077 else if ( fEquals[1][0] )
2079 *pPar = Abc_LitNot(*pPar);
2081 Kit_TruthCopy( pTruth, pCofs2[1], pObj->
nFans );
2083 else if ( fEquals[1][1] )
2085 *pPar = Abc_LitNot(*pPar);
2088 Kit_TruthCopy( pTruth, pCofs2[0], pObj->
nFans );
2093 Kit_TruthCopy( pTruth, pCofs2[0], pObj->
nFans );
2098 assert( Kit_DsdObjTruth(pObj) == pTruth );
2105 for ( i = pObj->
nFans - 1; i >= 0; i-- )
2114 assert( uSupp == (uSupp0 | uSupp1 | (1<<i)) );
2116 if ( uSupp0 == 0 || uSupp1 == 0 )
2122 assert( uSupp0 && uSupp1 );
2124 nFans0 = Kit_WordCountOnes( uSupp0 & ~uSupp1 );
2125 nFans1 = Kit_WordCountOnes( uSupp1 & ~uSupp0 );
2126 if ( nFans0 == 1 && nFans1 == 1 )
2129 iLit0 = Kit_WordFindFirstBit( uSupp0 & ~uSupp1 );
2130 iLit1 = Kit_WordFindFirstBit( uSupp1 & ~uSupp0 );
2137 fEquals[0][0] = Kit_TruthIsEqual( pCofs4[0][0], pCofs4[1][0], pObj->
nFans );
2138 fEquals[0][1] = Kit_TruthIsEqual( pCofs4[0][1], pCofs4[1][1], pObj->
nFans );
2139 fEquals[1][0] = Kit_TruthIsEqual( pCofs4[0][0], pCofs4[1][1], pObj->
nFans );
2140 fEquals[1][1] = Kit_TruthIsEqual( pCofs4[0][1], pCofs4[1][0], pObj->
nFans );
2141 if ( (fEquals[0][0] && fEquals[0][1]) || (fEquals[1][0] && fEquals[1][1]) )
2145 Kit_DsdObjTruth(pRes)[0] = 0xCACACACA;
2148 pRes->
pFans[0] = pObj->
pFans[iLit0]; pObj->
pFans[iLit0] = 127; uSupp &= ~(1 << iLit0);
2149 pRes->
pFans[1] = pObj->
pFans[iLit1]; pObj->
pFans[iLit1] = 127; uSupp &= ~(1 << iLit1);
2157 if ( fEquals[1][0] && fEquals[1][1] )
2166 for ( k = i+1; k < pObj->
nFans; k++ )
2174 fPairs[0][1] = fPairs[1][0] = Kit_TruthIsEqual( pCofs4[0][0], pCofs4[0][1], pObj->
nFans );
2175 fPairs[0][2] = fPairs[2][0] = Kit_TruthIsEqual( pCofs4[0][0], pCofs4[1][0], pObj->
nFans );
2176 fPairs[0][3] = fPairs[3][0] = Kit_TruthIsEqual( pCofs4[0][0], pCofs4[1][1], pObj->
nFans );
2177 fPairs[1][2] = fPairs[2][1] = Kit_TruthIsEqual( pCofs4[0][1], pCofs4[1][0], pObj->
nFans );
2178 fPairs[1][3] = fPairs[3][1] = Kit_TruthIsEqual( pCofs4[0][1], pCofs4[1][1], pObj->
nFans );
2179 fPairs[2][3] = fPairs[3][2] = Kit_TruthIsEqual( pCofs4[1][0], pCofs4[1][1], pObj->
nFans );
2180 nPairs = fPairs[0][1] + fPairs[0][2] + fPairs[0][3] + fPairs[1][2] + fPairs[1][3] + fPairs[2][3];
2181 if ( nPairs != 3 && nPairs != 2 )
2189 pRes->
pFans[1] = pObj->
pFans[i]; pObj->
pFans[i] = 127; uSupp &= ~(1 << i);
2190 if ( !fPairs[0][1] && !fPairs[0][2] && !fPairs[0][3] )
2196 else if ( !fPairs[1][0] && !fPairs[1][2] && !fPairs[1][3] )
2201 else if ( !fPairs[2][0] && !fPairs[2][1] && !fPairs[2][3] )
2206 else if ( !fPairs[3][0] && !fPairs[3][1] && !fPairs[3][2] )
2219 assert( fPairs[0][3] && fPairs[1][2] );
2230 if ( nDecMux > 0 && (
int)pObj->
nFans > nDecMux )
2238 for ( k = 0; k < pObj->
nFans; k++ )
2240 Kit_TruthCopy( Kit_DsdObjTruth(pRes0), pCofs2[0], pObj->
nFans );
2241 Kit_TruthCopy( Kit_DsdObjTruth(pRes1), pCofs2[1], pObj->
nFans );
2244 pTruth[0] = 0xCACACACA;
2682 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
2683 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
2684 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
2685 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
2686 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
2689 unsigned * ppCofs[5][16];
2690 int pTryVars[16], nTryVars;
2691 int nPrimeSizeMin, nPrimeSizeMax, nPrimeSizeCur;
2692 int nSuppSizeMin, nSuppSizeMax, iVarBest;
2693 int i, k, v, nStep, nSize, nMemSize;
2697 nMemSize = Kit_TruthWordNum(nVars);
2698 ppCofs[0][0] =
ABC_ALLOC(
unsigned, 80 * nMemSize );
2700 for ( i = 0; i < 5; i++ )
2701 for ( k = 0; k < 16; k++ )
2702 ppCofs[i][k] = ppCofs[0][0] + nMemSize * nSize++;
2706 Kit_TruthCopy( ppCofs[0][0], pTruth, nVars );
2710 printf(
"\nProcessing prime function with %d support variables:\n", nVars );
2713 for ( nStep = 0; nStep < nLimit; nStep++ )
2715 nSize = (1 << nStep);
2718 if ( nTryVars == 0 )
2722 nPrimeSizeMin = 10000;
2723 nSuppSizeMin = 10000;
2724 for ( v = 0; v < nTryVars; v++ )
2728 for ( i = 0; i < nSize; i++ )
2733 ppNtks[nStep+1][2*i+0] =
Kit_DsdDecompose( ppCofs[nStep+1][2*i+0], nVars );
2734 ppNtks[nStep+1][2*i+1] =
Kit_DsdDecompose( ppCofs[nStep+1][2*i+1], nVars );
2737 nPrimeSizeMax =
KIT_MAX( nPrimeSizeMax, nPrimeSizeCur );
2739 nPrimeSizeMax =
KIT_MAX( nPrimeSizeMax, nPrimeSizeCur );
2748 if ( nPrimeSizeMin > nPrimeSizeMax || (nPrimeSizeMin == nPrimeSizeMax && nSuppSizeMin > nSuppSizeMax) )
2750 nPrimeSizeMin = nPrimeSizeMax;
2751 nSuppSizeMin = nSuppSizeMax;
2752 iVarBest = pTryVars[v];
2755 assert( iVarBest != -1 );
2758 pCofVars[nStep] = iVarBest;
2760 for ( i = 0; i < nSize; i++ )
2764 ppNtks[nStep+1][2*i+0] =
Kit_DsdDecompose( ppCofs[nStep+1][2*i+0], nVars );
2765 ppNtks[nStep+1][2*i+1] =
Kit_DsdDecompose( ppCofs[nStep+1][2*i+1], nVars );
2768 ppNtks[nStep+1][2*i+0] =
Kit_DsdExpand( pTemp = ppNtks[nStep+1][2*i+0] );
2770 ppNtks[nStep+1][2*i+1] =
Kit_DsdExpand( pTemp = ppNtks[nStep+1][2*i+1] );
2773 printf(
"Cof%d%d: ", nStep+1, 2*i+0 );
2774 Kit_DsdPrint( stdout, ppNtks[nStep+1][2*i+0] ), printf(
"\n" );
2775 printf(
"Cof%d%d: ", nStep+1, 2*i+1 );
2776 Kit_DsdPrint( stdout, ppNtks[nStep+1][2*i+1] ), printf(
"\n" );
2782 for ( i = 0; i < 5; i++ )
2783 for ( k = 0; k < 16; k++ )
2788 assert( nStep <= nLimit );
2807 unsigned * ppCofs[5][16];
2809 int nPrimeSizeMax, nPrimeSizeCur, nSuppSizeMax;
2810 int i, k, v1, v2, v3, v4, s, nSteps, nSize, nMemSize;
2822 nMemSize = Kit_TruthWordNum(nVars);
2823 ppCofs[0][0] =
ABC_ALLOC(
unsigned, 80 * nMemSize );
2825 for ( i = 0; i < 5; i++ )
2826 for ( k = 0; k < 16; k++ )
2827 ppCofs[i][k] = ppCofs[0][0] + nMemSize * nSize++;
2831 Kit_TruthCopy( ppCofs[0][0], pTruth, nVars );
2833 if ( nCofLevel == 1 )
2834 for ( v1 = 0; v1 < nVars; v1++ )
2837 piCofVar[nSteps++] = v1;
2839 printf(
" Variables { " );
2840 for ( i = 0; i < nSteps; i++ )
2841 printf(
"%c ",
'a' + piCofVar[i] );
2845 for ( s = 1; s <= nSteps; s++ )
2847 for ( k = 0; k < s; k++ )
2850 for ( i = 0; i < nSize; i++ )
2858 nSize = (1 << nSteps);
2861 for ( i = 0; i < nSize; i++ )
2868 printf(
"Cof%d%d: ", nSteps, i );
2873 nPrimeSizeMax =
KIT_MAX( nPrimeSizeMax, nPrimeSizeCur );
2877 printf(
"Max = %2d. Supps = %2d.\n", nPrimeSizeMax, nSuppSizeMax );
2880 if ( nCofLevel == 2 )
2881 for ( v1 = 0; v1 < nVars; v1++ )
2882 for ( v2 = v1+1; v2 < nVars; v2++ )
2885 piCofVar[nSteps++] = v1;
2886 piCofVar[nSteps++] = v2;
2888 printf(
" Variables { " );
2889 for ( i = 0; i < nSteps; i++ )
2890 printf(
"%c ",
'a' + piCofVar[i] );
2894 for ( s = 1; s <= nSteps; s++ )
2896 for ( k = 0; k < s; k++ )
2899 for ( i = 0; i < nSize; i++ )
2907 nSize = (1 << nSteps);
2910 for ( i = 0; i < nSize; i++ )
2917 printf(
"Cof%d%d: ", nSteps, i );
2922 nPrimeSizeMax =
KIT_MAX( nPrimeSizeMax, nPrimeSizeCur );
2926 printf(
"Max = %2d. Supps = %2d.\n", nPrimeSizeMax, nSuppSizeMax );
2929 if ( nCofLevel == 3 )
2930 for ( v1 = 0; v1 < nVars; v1++ )
2931 for ( v2 = v1+1; v2 < nVars; v2++ )
2932 for ( v3 = v2+1; v3 < nVars; v3++ )
2935 piCofVar[nSteps++] = v1;
2936 piCofVar[nSteps++] = v2;
2937 piCofVar[nSteps++] = v3;
2939 printf(
" Variables { " );
2940 for ( i = 0; i < nSteps; i++ )
2941 printf(
"%c ",
'a' + piCofVar[i] );
2945 for ( s = 1; s <= nSteps; s++ )
2947 for ( k = 0; k < s; k++ )
2950 for ( i = 0; i < nSize; i++ )
2958 nSize = (1 << nSteps);
2961 for ( i = 0; i < nSize; i++ )
2968 printf(
"Cof%d%d: ", nSteps, i );
2973 nPrimeSizeMax =
KIT_MAX( nPrimeSizeMax, nPrimeSizeCur );
2977 printf(
"Max = %2d. Supps = %2d.\n", nPrimeSizeMax, nSuppSizeMax );
2980 if ( nCofLevel == 4 )
2981 for ( v1 = 0; v1 < nVars; v1++ )
2982 for ( v2 = v1+1; v2 < nVars; v2++ )
2983 for ( v3 = v2+1; v3 < nVars; v3++ )
2984 for ( v4 = v3+1; v4 < nVars; v4++ )
2987 piCofVar[nSteps++] = v1;
2988 piCofVar[nSteps++] = v2;
2989 piCofVar[nSteps++] = v3;
2990 piCofVar[nSteps++] = v4;
2992 printf(
" Variables { " );
2993 for ( i = 0; i < nSteps; i++ )
2994 printf(
"%c ",
'a' + piCofVar[i] );
2998 for ( s = 1; s <= nSteps; s++ )
3000 for ( k = 0; k < s; k++ )
3003 for ( i = 0; i < nSize; i++ )
3011 nSize = (1 << nSteps);
3014 for ( i = 0; i < nSize; i++ )
3021 printf(
"Cof%d%d: ", nSteps, i );
3026 nPrimeSizeMax =
KIT_MAX( nPrimeSizeMax, nPrimeSizeCur );
3030 printf(
"Max = %2d. Supps = %2d.\n", nPrimeSizeMax, nSuppSizeMax );