Restored K state saving in BitContradiction scan. Tiny cleanup.

This commit is contained in:
mlemanczyk committed 2026-01-18 22:04:15 +01:00
1 parent 778a36d2eb
commit 4f12375427
2 files changed
+25 -29

No files matched your search

@@ -1343,8 +1343,7 @@ internal static class BitContradictionSolverWithAMultiplier
#if DETAILED_LOG #if DETAILED_LOG
reason = ContradictionReason.TruncatedLength; reason = ContradictionReason.TruncatedLength;
#endif #endif
return false; return true;
// return true;
} }
// q from EvenPerfectBitScanner will always have the correct 2kp+1 form. // q from EvenPerfectBitScanner will always have the correct 2kp+1 form.
@@ -1376,7 +1375,7 @@ internal static class BitContradictionSolverWithAMultiplier
#if DETAILED_LOG #if DETAILED_LOG
reason = ContradictionReason.TruncatedLength; reason = ContradictionReason.TruncatedLength;
#endif #endif
return false; return true;
} }
// Force low bits of 'a' from a ≡ -q^{-1} (mod 2^1024). // Force low bits of 'a' from a ≡ -q^{-1} (mod 2^1024).
@@ -1,4 +1,4 @@
#define DivisorSet_BitContradiction // #define DivisorSet_BitContradiction
// #define DivisorSet_BitTree // #define DivisorSet_BitTree
using System; using System;
@@ -4608,14 +4608,12 @@ public struct MersenneNumberDivisorByDivisorCpuTesterWithTemplate() : IMersenneN
// if ( // if (
// divisor <= ulong.MaxValue && // divisor <= ulong.MaxValue &&
// !PrimeTesterByLastDigit.IsPrimeCpu((ulong)divisor)
// ) // )
// { // {
// goto MOVE_NEXT; // goto MOVE_NEXT;
// } // }
bool divides; bool divides;
// divides = BigInteger.ModPow(BigIntegerNumbers.Two, prime, divisor) == 1;
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
@@ -4633,25 +4631,25 @@ public struct MersenneNumberDivisorByDivisorCpuTesterWithTemplate() : IMersenneN
} }
else else
{ {
// var printToConsole = (_consolePrintOut++) == 1; var printToConsole = (_consolePrintOut++) == 10_000;
// if (printToConsole) if (printToConsole)
// { {
// sw.Stop(); // sw.Stop();
Console.WriteLine($"Prime {prime} ({sw.Elapsed}: {divisor})"); Console.WriteLine($"Prime {prime} ({sw.Elapsed}: {divisor})");
_consolePrintOut = 0; _consolePrintOut = 0;
// sw.Reset(); // sw.Reset();
// sw.Start(); // sw.Start();
// } }
} }
// RecordState(currentK);
MOVE_NEXT: MOVE_NEXT:
// if (hasLimit && currentK >= maxK) RecordState(currentK);
// { if (hasLimit && currentK >= maxK)
// break; {
// } break;
}
// currentK += BigInteger.One; currentK += BigInteger.One;
divisor += step; divisor += step;
kRem8 = (kRem8 + 1) & 7; kRem8 = (kRem8 + 1) & 7;
} }
@@ -4798,7 +4796,6 @@ public struct MersenneNumberDivisorByDivisorCpuTesterWithTemplate() : IMersenneN
bool decided = BitContradictionSolverWithAMultiplier.TryCheckDivisibilityFromOneOffsets(oneOffsetsSlice, prime, out divides); bool decided = BitContradictionSolverWithAMultiplier.TryCheckDivisibilityFromOneOffsets(oneOffsetsSlice, prime, out divides);
#endif #endif
// BitContradictionSolverWithQMultiplier.SetDebugEnabled(false); // BitContradictionSolverWithQMultiplier.SetDebugEnabled(false);
// bool decided = BitContradictionSolverBaseline.TryCheckDivisibilityFromOneOffsets(oneOffsetsSlice, exponent, out divides, out var reason);
if (decided && divides) if (decided && divides)
{ {
// Verify to avoid false positives on structurally admissible but non-dividing q. // Verify to avoid false positives on structurally admissible but non-dividing q.
@@ -4817,19 +4814,19 @@ public struct MersenneNumberDivisorByDivisorCpuTesterWithTemplate() : IMersenneN
#if DETAILED_LOG #if DETAILED_LOG
if (reason == ContradictionReason.ParityUnreachable) if (reason == ContradictionReason.ParityUnreachable)
{ {
// var failure = BitContradictionSolverWithQMultiplier.LastTopDownFailure; var failure = BitContradictionSolverWithQMultiplier.LastTopDownFailure;
// if (failure.HasValue) if (failure.HasValue)
// { {
// var info = failure.Value; var info = failure.Value;
// Console.WriteLine($"[bit-contradiction] top-down prune failed at column={info.Column} carry=[{info.CarryMin},{info.CarryMax}] unknown={info.Unknown}"); Console.WriteLine($"[bit-contradiction] top-down prune failed at column={info.Column} carry=[{info.CarryMin},{info.CarryMax}] unknown={info.Unknown}");
// } }
// var bottomUp = BitContradictionSolverWithQMultiplier.LastBottomUpFailure; var bottomUp = BitContradictionSolverWithQMultiplier.LastBottomUpFailure;
// if (bottomUp.HasValue) if (bottomUp.HasValue)
// { {
// var info = bottomUp.Value; var info = bottomUp.Value;
// Console.WriteLine($"[bit-contradiction] bottom-up failed at column={info.Column} carry=[{info.CarryMin},{info.CarryMax}] forced={info.Forced} unknown={info.Unknown}"); Console.WriteLine($"[bit-contradiction] bottom-up failed at column={info.Column} carry=[{info.CarryMin},{info.CarryMax}] forced={info.Forced} unknown={info.Unknown}");
// } }
} }
#endif #endif