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;
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];
256 if ( nSizeNonDec >= 5 )
259 if ( nDecExists & 0x18 )
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] };
321 if ( nSizeNonDec >= 5 )
static int Abc_TtMinimumBase(word *t, int *pSupp, int nVarsAll, int *pnVars)
int Dau_DsdDecompose(word *pTruth, int nVarsInit, int fSplitPrime, int fWriteTruth, char *pRes)
int Dau_DsdCheckDecAndExist(char *pDsd)
int If_CutPerformCheck75__(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)
int If_CutPerformCheck75(If_Man_t *p, unsigned *pTruth0, int nVars, int nLeaves, char *pStr)
int If_CutPerformCheck54(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
int * Dau_DsdComputeMatches(char *p)
unsigned __int64 word
DECLARATIONS ///.
#define ABC_NAMESPACE_IMPL_END
static void Abc_TtCofactor0(word *pTruth, int nWords, int iVar)
#define ABC_NAMESPACE_IMPL_START
static void Abc_TtCofactor1(word *pTruth, int nWords, int iVar)
static int Abc_TtSupportSize(word *t, int nVars)
ABC_NAMESPACE_IMPL_START int Dau_DsdCheckDecExist_rec(char *pStr, char **p, int *pMatches, int *pnSupp)
DECLARATIONS ///.
int Dau_DsdCheckDecAndExist_rec(char *pStr, char **p, int *pMatches, int *pnSupp)
int Dau_DsdCheckDecExist(char *pDsd)
void If_Dec7MinimumBase(word uTruth[2], int *pSupp, int nVarsAll, int *pnVars)
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)