BitContradiction rules improved.
This commit is contained in:
1 parent
fea95509a7
commit
0eb511aaff
1 file changed
+37
-3
@@ -234,7 +234,7 @@ internal static class BitContradictionSolverWithAMultiplier
|
|||||||
{
|
{
|
||||||
Atomic.Add(ref counter, 1UL);
|
Atomic.Add(ref counter, 1UL);
|
||||||
_pruneStatsConsoleCounter++;
|
_pruneStatsConsoleCounter++;
|
||||||
if (_pruneStatsConsoleCounter < PerfectNumberConstants.ConsoleInterval)
|
if (true || _pruneStatsConsoleCounter < PerfectNumberConstants.ConsoleInterval)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2470,6 +2470,8 @@ internal static class BitContradictionSolverWithAMultiplier
|
|||||||
totalTransitionsOver10++;
|
totalTransitionsOver10++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
previousCarryOut = carryOut;
|
||||||
|
|
||||||
if (carryOut == 6)
|
if (carryOut == 6)
|
||||||
{
|
{
|
||||||
totalCarry6Count++;
|
totalCarry6Count++;
|
||||||
@@ -2683,7 +2685,11 @@ internal static class BitContradictionSolverWithAMultiplier
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((totalCarry8Count & 1) == 0 && (totalCarry9Count & 1) == 0 && (totalCarry10Count & 1) == 0)
|
bool totalCarry8CountIsEven = (totalCarry8Count & 1) == 0;
|
||||||
|
bool totalCarry9CountIsEven = (totalCarry9Count & 1) == 0;
|
||||||
|
if (totalCarry8CountIsEven && totalCarry9CountIsEven &&
|
||||||
|
((totalCarry10Count & 1) == 0 || (totalCarry11Count > totalCarry10Count && totalCarry8Count > 14 && totalCarry11Count > totalCarry9Count && totalCarry11Count > totalCarry8Count))
|
||||||
|
)
|
||||||
{
|
{
|
||||||
pruneReason = CarryDropPruneReason.Dominance10AndMoreDrop;
|
pruneReason = CarryDropPruneReason.Dominance10AndMoreDrop;
|
||||||
#if WITH_PRUNE_STATS
|
#if WITH_PRUNE_STATS
|
||||||
@@ -2692,7 +2698,35 @@ internal static class BitContradictionSolverWithAMultiplier
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (totalCarryAbove10 >= 850 && totalCarryBelow10 < 100 && shortestStreakBelow10 <= 3 && longestStreakBelow10 <= 12 && totalCarry11Count < 150 && lastStreakBelow10 < 12)
|
bool totalCarry10CountIsEven = (totalCarry10Count & 1) == 0;
|
||||||
|
bool totalCarry11CountIsEven = (totalCarry11Count & 1) == 0;
|
||||||
|
if ((!totalCarry8CountIsEven && !totalCarry10CountIsEven && totalCarry8Count + totalCarry9Count < totalCarry10Count + totalCarry11Count && totalCarryFirst32Count > 118) ||
|
||||||
|
(totalCarry8CountIsEven && !totalCarry10CountIsEven && totalCarry8Count < 188 && totalCarry8Count + totalCarry9Count > totalCarry10Count + totalCarry11Count) ||
|
||||||
|
(((!totalCarry8CountIsEven && !totalCarry11CountIsEven) || (totalCarry8CountIsEven && totalCarry8Count < 66) || (totalCarry8CountIsEven && totalCarry10CountIsEven && totalCarry11CountIsEven && totalCarry8Count < 72) || (!totalCarry11CountIsEven && (!totalCarry8CountIsEven || !totalCarry10CountIsEven) && totalCarry11Count > 16)) && totalCarry9Count + totalCarry11Count > totalCarry10Count + totalCarry12Count))
|
||||||
|
{
|
||||||
|
pruneReason = CarryDropPruneReason.Dominance10AndMoreDrop;
|
||||||
|
#if WITH_PRUNE_STATS
|
||||||
|
TraceCarryDropHeuristicPrune(pLong, qExact, pruneReason, reached10, reachedBelow5, reached5, zeroCount);
|
||||||
|
#endif
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (totalCarry7Count + totalCarry8Count > totalCarry9Count + totalCarry10Count && totalCarry11Count > 100)
|
||||||
|
{
|
||||||
|
pruneReason = CarryDropPruneReason.Dominance10AndMoreDrop;
|
||||||
|
#if WITH_PRUNE_STATS
|
||||||
|
TraceCarryDropHeuristicPrune(pLong, qExact, pruneReason, reached10, reachedBelow5, reached5, zeroCount);
|
||||||
|
#endif
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (totalCarryAbove10 >= 840 && shortestStreakBelow10 <= 3 &&
|
||||||
|
(
|
||||||
|
(lastStreakBelow10 == 0 && first10 > 34) ||
|
||||||
|
(totalCarryBelow10 < 100 && longestStreakBelow10 <= 12 && totalCarry11Count < 150 && lastStreakBelow10 < 12)
|
||||||
|
|
||||||
|
)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
pruneReason = CarryDropPruneReason.HighDensityWithShortLowStreaks;
|
pruneReason = CarryDropPruneReason.HighDensityWithShortLowStreaks;
|
||||||
#if WITH_PRUNE_STATS
|
#if WITH_PRUNE_STATS
|
||||||
|
|||||||
Reference in new issue
Block a user