NodesBetweenPolls = Min(MaxNodes, 30000);
InfiniteSearch = true; // HACK
}
- else if (InfiniteSearch)
- NodesBetweenPolls = 30000;
- else if (myTime < 1000)
+ else if (myTime && myTime < 1000)
NodesBetweenPolls = 1000;
- else if (myTime < 5000)
+ else if (myTime && myTime < 5000)
NodesBetweenPolls = 5000;
else
NodesBetweenPolls = 30000;
EvalInfo ei;
if (ply >= PLY_MAX - 1)
- return evaluate(pos, ei, threadID);
+ return pos.is_check() ? quick_evaluate(pos) : evaluate(pos, ei, threadID);
// Mate distance pruning
Value oldAlpha = alpha;
EvalInfo ei;
if (ply >= PLY_MAX - 1)
- return evaluate(pos, ei, threadID);
+ return pos.is_check() ? quick_evaluate(pos) : evaluate(pos, ei, threadID);
// Mate distance pruning
if (value_mated_in(ply) >= beta)
{
// History pruning. See ok_to_prune() definition
if ( moveCount >= 2 + int(depth)
- && ok_to_prune(pos, move, ss[ply].threatMove, depth))
+ && ok_to_prune(pos, move, ss[ply].threatMove, depth)
+ && bestValue > value_mated_in(PLY_MAX))
continue;
// Value based pruning
else
staticValue = evaluate(pos, ei, threadID);
- if (ply == PLY_MAX - 1)
- return evaluate(pos, ei, threadID);
+ if (ply >= PLY_MAX - 1)
+ return pos.is_check() ? quick_evaluate(pos) : evaluate(pos, ei, threadID);
// Initialize "stand pat score", and return it immediately if it is
// at least beta.