345 DdNode *zRes0, *zRes1, *zTemp;
346 int TopLevelX = dd->permZ[ X->index ];
347 int TopLevelY = dd->permZ[ Y->index ];
349 if ( TopLevelX < TopLevelY )
353 if ( zRes == NULL )
return NULL;
355 else if ( TopLevelX == TopLevelY )
358 zTemp = cuddZddUnion( dd, cuddE( Y ), cuddT( Y ) );
367 Cudd_RecursiveDerefZdd( dd, zTemp );
371 Cudd_RecursiveDerefZdd( dd, zTemp );
377 Cudd_RecursiveDerefZdd( dd, zRes0 );
383 zRes = cuddZddGetNode( dd, X->index, zRes1, zRes0 );
386 Cudd_RecursiveDerefZdd( dd, zRes0 );
387 Cudd_RecursiveDerefZdd( dd, zRes1 );
396 zTemp = cuddZddUnion( dd, cuddE( Y ), cuddT( Y ) );
397 if ( zTemp == NULL )
return NULL;
404 Cudd_RecursiveDerefZdd( dd, zTemp );
408 Cudd_RecursiveDerefZdd( dd, zTemp );
456 DdNode *zRes0, *zRes1, *zTemp;
457 int TopLevelX = dd->permZ[ X->index ];
458 int TopLevelY = dd->permZ[ Y->index ];
460 if ( TopLevelX < TopLevelY )
464 if ( zRes0 == NULL )
return NULL;
471 Cudd_RecursiveDerefZdd( dd, zRes0 );
477 zRes = cuddZddGetNode( dd, X->index, zRes1, zRes0 );
480 Cudd_RecursiveDerefZdd( dd, zRes0 );
481 Cudd_RecursiveDerefZdd( dd, zRes1 );
487 else if ( TopLevelX == TopLevelY )
491 if ( zRes0 == NULL )
return NULL;
495 zTemp = cuddZddUnion( dd, cuddE( Y ), cuddT( Y ) );
498 Cudd_RecursiveDerefZdd( dd, zRes0 );
507 Cudd_RecursiveDerefZdd( dd, zRes0 );
508 Cudd_RecursiveDerefZdd( dd, zTemp );
512 Cudd_RecursiveDerefZdd( dd, zTemp );
515 zRes = cuddZddGetNode( dd, X->index, zRes1, zRes0 );
518 Cudd_RecursiveDerefZdd( dd, zRes0 );
519 Cudd_RecursiveDerefZdd( dd, zRes1 );
529 if ( zRes == NULL )
return NULL;
562 return cuddZddDiff( dd, X,
z1 );
576 DdNode *zRes0, *zRes1, *zTemp;
577 int TopLevelX = dd->permZ[ X->index ];
578 int TopLevelY = dd->permZ[ Y->index ];
580 if ( TopLevelX < TopLevelY )
592 zRes = cuddZddGetNode( dd, X->index, zRes1, zRes0 );
595 Cudd_RecursiveDerefZdd( dd, zRes0 );
600 else if ( TopLevelX == TopLevelY )
603 zTemp = cuddZddUnion( dd, cuddE( Y ), cuddT( Y ) );
612 Cudd_RecursiveDerefZdd( dd, zTemp );
616 Cudd_RecursiveDerefZdd( dd, zTemp );
622 Cudd_RecursiveDerefZdd( dd, zRes0 );
628 zRes = cuddZddGetNode( dd, X->index, zRes1, zRes0 );
631 Cudd_RecursiveDerefZdd( dd, zRes0 );
632 Cudd_RecursiveDerefZdd( dd, zRes1 );
641 zTemp = cuddZddUnion( dd, cuddE( Y ), cuddT( Y ) );
650 Cudd_RecursiveDerefZdd( dd, zTemp );
654 Cudd_RecursiveDerefZdd( dd, zTemp );
702 DdNode *zRes0, *zRes1, *zTemp;
703 int TopLevelX = dd->permZ[ X->index ];
704 int TopLevelY = dd->permZ[ Y->index ];
706 if ( TopLevelX < TopLevelY )
718 Cudd_RecursiveDerefZdd( dd, zRes0 );
724 zRes = cuddZddGetNode( dd, X->index, zRes1, zRes0 );
727 Cudd_RecursiveDerefZdd( dd, zRes0 );
728 Cudd_RecursiveDerefZdd( dd, zRes1 );
734 else if ( TopLevelX == TopLevelY )
743 zTemp = cuddZddUnion( dd, cuddE( Y ), cuddT( Y ) );
746 Cudd_RecursiveDerefZdd( dd, zRes0 );
755 Cudd_RecursiveDerefZdd( dd, zRes0 );
756 Cudd_RecursiveDerefZdd( dd, zTemp );
760 Cudd_RecursiveDerefZdd( dd, zTemp );
763 zRes = cuddZddGetNode( dd, X->index, zRes1, zRes0 );
766 Cudd_RecursiveDerefZdd( dd, zRes0 );
767 Cudd_RecursiveDerefZdd( dd, zRes1 );
777 if ( zRes == NULL )
return NULL;
825 DdNode *zRes0, *zRes1, *zTemp;
826 int TopLevelX = dd->permZ[ X->index ];
827 int TopLevelY = dd->permZ[ Y->index ];
829 if ( TopLevelX < TopLevelY )
841 Cudd_RecursiveDerefZdd( dd, zRes0 );
851 Cudd_RecursiveDerefZdd(dd, zTemp);
852 Cudd_RecursiveDerefZdd(dd, zRes1);
856 Cudd_RecursiveDerefZdd(dd, zTemp);
860 zRes = cuddZddGetNode( dd, X->index, zRes1, zRes0 );
863 Cudd_RecursiveDerefZdd( dd, zRes0 );
864 Cudd_RecursiveDerefZdd( dd, zRes1 );
870 else if ( TopLevelX == TopLevelY )
879 zTemp = cuddZddUnion( dd, cuddE( Y ), cuddT( Y ) );
882 Cudd_RecursiveDerefZdd( dd, zRes0 );
891 Cudd_RecursiveDerefZdd( dd, zRes0 );
892 Cudd_RecursiveDerefZdd( dd, zTemp );
896 Cudd_RecursiveDerefZdd( dd, zTemp );
903 Cudd_RecursiveDerefZdd(dd, zTemp);
904 Cudd_RecursiveDerefZdd(dd, zRes1);
908 Cudd_RecursiveDerefZdd(dd, zTemp);
912 zRes = cuddZddGetNode( dd, X->index, zRes1, zRes0 );
915 Cudd_RecursiveDerefZdd( dd, zRes0 );
916 Cudd_RecursiveDerefZdd( dd, zRes1 );
926 if ( zRes == NULL )
return NULL;