return (uWord & 0x0000FFFF) + (uWord>>16);\r
}\r
\r
+// This doesn't count the 1-bits, just strips\r
+// off the trailing 1-bit four times. If it's not zero,\r
+// then there are >4 1-bits.\r
+static inline unsigned Dar_FiveOrMoreBits( unsigned uWord )\r
+{\r
+ uWord = (uWord-1)&uWord;\r
+ uWord = (uWord-1)&uWord;\r
+ uWord = (uWord-1)&uWord;\r
+ uWord = (uWord-1)&uWord;\r
+\r
+ return uWord; // non-zero if >=5 ones.\r
+}\r
+\r
+\r
/**Function*************************************************************\r
\r
Synopsis [Compute the cost of the cut.]\r
{\r
p->nCutsAll++;\r
// make sure K-feasible cut exists\r
- if ( Dar_WordCountOnes(pCut0->uSign | pCut1->uSign) > 4 )\r
- continue;\r
+\r
+ // if (Dar_WordCountOnes(pCut0->uSign | pCut1->uSign) > 4)\r
+ // continue;\r
+\r
+ if (0 != Dar_FiveOrMoreBits(pCut0->uSign | pCut1->uSign))\r
+ continue;\r
+\r
// get the next cut of this node\r
pCut = Dar_CutFindFree( p, pObj );\r
// create the new cut\r