BitContradiction improvements.

This commit is contained in:
Marek Lemańczyk committed 2026-02-10 11:52:26 +01:00
1 parent b453d46c5f
commit 22cc8f368f
7 files changed
+5299 -4230

No files matched your search

@@ -1,4 +1,4 @@
// #define DivisorSet_BitContradiction
// #define DivisorSet_BitContradiction
// #define DivisorSet_BitTree
// #define DEVICE_GPU
@@ -5108,8 +5108,10 @@ public struct MersenneNumberDivisorByDivisorCpuTesterWithTemplate() : IMersenneN
while (true)
{
int remainder8 = (stepMod8 * kRem8 + 1) & 7;
#if DETAILED_LOG
if (prime == 138000001UL && divisor == 1209708008767)
Console.WriteLine("[HIT] enumerated target q before remainder8 check");
#endif
if (remainder8 != 1 && remainder8 != 7)
{
@@ -5152,17 +5154,20 @@ public struct MersenneNumberDivisorByDivisorCpuTesterWithTemplate() : IMersenneN
}
}
#if DETAILED_LOG
if (prime == 138000001UL && divisor == 1209708008767)
{
Console.WriteLine("[HIT] processed target q. Stopping.");
Environment.Exit(1);
}
#endif
RecordState(currentK);
MOVE_NEXT:
ContinueOuter:
RecordState(currentK);
if (hasLimit && currentK >= maxK)
{
RecordState(currentK);
break;
}
@@ -5357,9 +5362,9 @@ public struct MersenneNumberDivisorByDivisorCpuTesterWithTemplate() : IMersenneN
ReadOnlySpan<int> oneOffsetsSlice = oneOffsets[..oneCount];
// BitContradictionSolverWithQMultiplier.SetDebugEnabled(true);
#if DETAILED_LOG
bool decided = BitContradictionSolverWithAMultiplier.TryCheckDivisibilityFromOneOffsets(oneOffsetsSlice, prime, currentK, isPowerOfTwo, out divides, out var reason);
bool decided = BitContradictionSolverWithAMultiplier.TryCheckDivisibilityFromOneOffsets(oneOffsetsSlice, prime, divisor, currentK, isPowerOfTwo, out divides, out var reason);
#else
bool decided = BitContradictionSolverWithAMultiplier.TryCheckDivisibilityFromOneOffsets(oneOffsetsSlice, prime, currentK, isPowerOfTwo, out divides);
bool decided = BitContradictionSolverWithAMultiplier.TryCheckDivisibilityFromOneOffsets(oneOffsetsSlice, prime, divisor, currentK, isPowerOfTwo, out divides);
#endif
// BitContradictionSolverWithQMultiplier.SetDebugEnabled(false);
if (decided && divides)