52 while ( (**
p >=
'A' && **
p <=
'F') || (**
p >=
'0' && **
p <=
'9') )
54 if ( **
p >=
'a' && **
p <=
'z' )
59 if ( **
p ==
'(' || **
p ==
'[' )
62 int m, pSupps[8] = {0}, nParts = 0, nMints;
63 char * q = pStr + pMatches[ *
p - pStr ];
64 assert( *q == **
p + 1 + (**
p !=
'(') );
65 for ( (*
p)++; *
p < q; (*p)++ )
68 *pnSupp += pSupps[nParts++];
72 nMints = (1 << nParts);
73 for ( m = 1; m < nMints; m++ )
76 for ( i = 0; i < nParts; i++ )
79 assert( Sum > 0 && Sum <= 8 );
85 if ( **
p ==
'<' || **
p ==
'{' )
89 char * q = pStr + pMatches[ *
p - pStr ];
90 assert( *q == **
p + 1 + (**
p !=
'(') );
91 for ( (*
p)++; *
p < q; (*p)++ )
98 Mask |= (1 << *pnSupp);
127 while ( (**
p >=
'A' && **
p <=
'F') || (**
p >=
'0' && **
p <=
'9') )
129 if ( **
p >=
'a' && **
p <=
'z' )
137 int m, i, pSupps[8] = {0}, nParts = 0, nSimple = 0, nMints;
138 char * q = pStr + pMatches[ *
p - pStr ];
139 assert( *q == **
p + 1 + (**
p !=
'(') );
140 for ( (*
p)++; *
p < q; (*p)++ )
143 nSimple += (pSupps[nParts] == 1);
144 *pnSupp += pSupps[nParts++];
150 nMints = (1 << nParts);
151 for ( m = 1; m < nMints; m++ )
154 for ( i = 0; i < nParts; i++ )
155 if ( pSupps[i] > 1 && ((m >> i) & 1) )
159 for ( i = 0; i < nSimple; i++ )
160 Mask |= (1 << (Sum + i));
162 for ( i = 2; i < nSimple; i++ )
167 if ( **
p ==
'<' || **
p ==
'{' || **
p ==
'[' )
171 char * q = pStr + pMatches[ *
p - pStr ];
172 assert( *q == **
p + 1 + (**
p !=
'(') );
173 for ( (*
p)++; *
p < q; (*p)++ )
207 int nSizeNonDec, nDecExists, nDecAndExists;
208 static int Counter = 0;
222 if ( nSizeNonDec >= 5 )
225 if ( nDecAndExists & 0x10 )
234 word pCof0[2], pCof1[2];
236 if ( nSizeNonDec < 5 )
239 if ( nDecExists & 0x10 )
242 if ( nDecAndExists & 0x18 )
246 for ( v = 0; v < 7; v++ )
248 pCof0[0] = pCof1[0] = pT[0];
249 pCof0[1] = pCof1[1] = pT[1];
250 Abc_TtCofactor0( pCof0, 2, v );
251 Abc_TtCofactor1( pCof1, 2, v );
252 if ( Abc_TtSupportSize(pCof0, 7) < 4 )
256 if ( nSizeNonDec >= 5 )
259 if ( nDecExists & 0x18 )
262 else if ( Abc_TtSupportSize(pCof1, 7) < 4 )
266 if ( nSizeNonDec >= 5 )
269 if ( nDecExists & 0x18 )
277 if ( nSizeNonDec < 5 )
280 if ( nDecExists & 0x18 )
283 if ( nDecAndExists & 0x1C )
306 word pTruth[4] = { pTruthW[0], pTruthW[1], pTruthW[2], pTruthW[3] };
308 if ( !
p->pPars->fCutMin )
309 Abc_TtMinimumBase( pTruth, NULL, nLeaves, &nLeaves );
316 if ( !
p->pPars->fDeriveLuts &&
p->pPars->fEnableCheck75 && nLeaves == 8 )
321 if ( nSizeNonDec >= 5 )
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
int Dau_DsdDecompose(word *pTruth, int nVarsInit, int fSplitPrime, int fWriteTruth, char *pRes)
int * Dau_DsdComputeMatches(char *p)
void If_Dec7MinimumBase(word uTruth[2], int *pSupp, int nVarsAll, int *pnVars)
ABC_NAMESPACE_IMPL_START int Dau_DsdCheckDecExist_rec(char *pStr, char **p, int *pMatches, int *pnSupp)
DECLARATIONS ///.
int Dau_DsdCheckDecAndExist(char *pDsd)
int If_CutPerformCheck75__(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
int If_CutPerformCheck75(If_Man_t *p, unsigned *pTruth0, int nVars, int nLeaves, char *pStr)
int Dau_DsdCheckDecAndExist_rec(char *pStr, char **p, int *pMatches, int *pnSupp)
int Dau_DsdCheckDecExist(char *pDsd)
int If_CutPerformCheck54(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
int If_CutPerformCheck07(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
struct If_Man_t_ If_Man_t
BASIC TYPES ///.
int If_CutPerformCheck16(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
int If_CutPerformCheck45(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
unsigned __int64 word
DECLARATIONS ///.