Avoid redundant clearing in CPU divisor sessions
This commit is contained in:
1 parent
f672ff520c
commit
f0b4cdf6e2
1 file changed
+9
-4
@@ -35,8 +35,14 @@ internal sealed class MersenneCpuDivisorScanSession : IMersenneNumberDivisorByDi
|
||||
divisorCycle = DivisorCycleCache.Shared.GetCycleLength(divisor);
|
||||
if (divisorCycle == 0UL)
|
||||
{
|
||||
hits.Clear();
|
||||
return;
|
||||
divisorCycle = MersenneDivisorCycles.CalculateCycleLength(
|
||||
divisor,
|
||||
cachedData,
|
||||
skipPrimeOrderHeuristic: true);
|
||||
if (divisorCycle == 0UL)
|
||||
{
|
||||
throw new InvalidOperationException($"Failed to compute a cycle for divisor {divisor}.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,8 +51,7 @@ internal sealed class MersenneCpuDivisorScanSession : IMersenneNumberDivisorByDi
|
||||
var exponentStepper = new ExponentRemainderStepper(cachedData);
|
||||
if (!exponentStepper.IsValidModulus)
|
||||
{
|
||||
hits.Clear();
|
||||
return;
|
||||
throw new InvalidOperationException($"Invalid modulus {cachedData.Modulus} for divisor scans.");
|
||||
}
|
||||
|
||||
var cycleStepper = new CycleRemainderStepper(divisorCycle);
|
||||
|
||||
Reference in new issue
Block a user