Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fixed early stopping
Some combinations of /from and /to command line parameters caused the
program to exit too early, skipping some ranges
  • Loading branch information
SChernykh committed Feb 15, 2017
1 parent ccfb77b commit cf61dd4
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions Amicable/RangeGen.cpp
Expand Up @@ -737,7 +737,8 @@ NOINLINE void RangeGen::WorkerThread(WorkerThreadParams* params)

while (range_write_index - range_read_index < RangesReadAheadSize)
{
if (!Iterate(ranges[range_write_index % RangesReadAheadSize]))
RangeData& r = ranges[range_write_index % RangesReadAheadSize];
if (!Iterate(r))
{
break;
}
Expand All @@ -755,14 +756,14 @@ NOINLINE void RangeGen::WorkerThread(WorkerThreadParams* params)
number i;
for (i = 0; i < MaxPrimeFactors; ++i)
{
if (factors[i].p != params->stopAtFactors[i].p)
if (r.factors[i].p != params->stopAtFactors[i].p)
{
done = (factors[i].p > params->stopAtFactors[i].p);
done = (r.factors[i].p > params->stopAtFactors[i].p);
break;
}
else if (factors[i].k != params->stopAtFactors[i].k)
else if (r.factors[i].k != params->stopAtFactors[i].k)
{
done = (factors[i].k > params->stopAtFactors[i].k);
done = (r.factors[i].k > params->stopAtFactors[i].k);
break;
}
}
Expand Down

0 comments on commit cf61dd4

Please sign in to comment.