209 Vec_StrClear( vStr );
210 if ( Vec_IntSize(vSop) == 0 )
212 Vec_StrPush( vStr,
' ' );
213 Vec_StrPush( vStr, (
char)(
'1'-fPolarity) );
214 Vec_StrPush( vStr,
'\n' );
215 Vec_StrPush( vStr,
'\0' );
216 return Vec_StrArray( vStr );
218 if ( Vec_IntSize(vSop) == 1 && Vec_IntEntry(vSop, 0) == 0 )
220 Vec_StrPush( vStr,
' ' );
221 Vec_StrPush( vStr, (
char)(
'0'+fPolarity) );
222 Vec_StrPush( vStr,
'\n' );
223 Vec_StrPush( vStr,
'\0' );
224 return Vec_StrArray( vStr );
229 for ( k = 0; k < nVars; k++ )
231 if ( Mio_CubeHasVar0( Entry, k ) )
232 Vec_StrPush( vStr,
'0' );
233 else if ( Mio_CubeHasVar1( Entry, k ) )
234 Vec_StrPush( vStr,
'1' );
236 Vec_StrPush( vStr,
'-' );
238 Vec_StrPush( vStr,
' ' );
239 Vec_StrPush( vStr, (
char)(
'0'+fPolarity) );
240 Vec_StrPush( vStr,
'\n' );
242 Vec_StrPush( vStr,
'\0' );
243 return Vec_StrArray( vStr );
261 int i, Index0, Index1, fCompl0, fCompl1;
262 Vec_StrClear( vStr );
263 if ( Exp_IsConst0(vExpr) )
265 Vec_StrPrintStr( vStr,
" 0\n" );
266 Vec_StrPush( vStr,
'\0' );
267 return Vec_StrArray( vStr );
269 if ( Exp_IsConst1(vExpr) )
271 Vec_StrPrintStr( vStr,
" 1\n" );
272 Vec_StrPush( vStr,
'\0' );
273 return Vec_StrArray( vStr );
275 if ( Exp_IsLit(vExpr) )
277 for ( i = 0; i < nVars; i++ )
278 Vec_StrPush( vStr,
'-' );
279 Vec_StrPrintStr( vStr,
" 1\n" );
280 Vec_StrPush( vStr,
'\0' );
281 assert( (Vec_IntEntry(vExpr,0) >> 1) < nVars );
282 Vec_StrWriteEntry( vStr, Vec_IntEntry(vExpr,0) >> 1, (
char)(
'1' - (Vec_IntEntry(vExpr,0) & 1)) );
283 return Vec_StrArray( vStr );
285 vSops0 = Vec_PtrAlloc( nVars + Exp_NodeNum(vExpr) );
286 vSops1 = Vec_PtrAlloc( nVars + Exp_NodeNum(vExpr) );
287 for ( i = 0; i < nVars; i++ )
292 for ( i = 0; i < Exp_NodeNum(vExpr); i++ )
294 Index0 = Vec_IntEntry( vExpr, 2*i+0 ) >> 1;
295 Index1 = Vec_IntEntry( vExpr, 2*i+1 ) >> 1;
296 fCompl0 = Vec_IntEntry( vExpr, 2*i+0 ) & 1;
297 fCompl1 = Vec_IntEntry( vExpr, 2*i+1 ) & 1;
300 fCompl1 ? (
Vec_Int_t *)Vec_PtrEntry(vSops0, Index1) : (
Vec_Int_t *)Vec_PtrEntry(vSops1, Index1) );
301 Vec_PtrPush( vSops1, vSop );
304 fCompl1 ? (
Vec_Int_t *)Vec_PtrEntry(vSops1, Index1) : (
Vec_Int_t *)Vec_PtrEntry(vSops0, Index1) );
305 Vec_PtrPush( vSops0, vSop );
308 if ( Vec_IntEntryLast(vExpr) & 1 )
315 if ( Vec_IntSize( (
Vec_Int_t *)Vec_PtrEntryLast(vSops0) ) < Vec_IntSize( (
Vec_Int_t *)Vec_PtrEntryLast(vSops1) ) )
316 vSop = (
Vec_Int_t *)Vec_PtrEntryLast(vSops0);
318 vSop = (
Vec_Int_t *)Vec_PtrEntryLast(vSops1);
323 return Vec_StrArray( vStr );