Color RootColor;
Time::point SearchTime;
StateStackPtr SetupStates;
- MovesVectPtr SetupMoves;
}
using std::string;
newDepth = depth - ONE_PLY + ext;
// Step 13. Futility pruning (is omitted in PV nodes)
- if ( !captureOrPromotion
+ if ( !PvNode
+ && !captureOrPromotion
&& !inCheck
&& !dangerous
&& move != ttMove)
{
// Move count based pruning
- if ( !PvNode
- && depth < 16 * ONE_PLY
+ if ( depth < 16 * ONE_PLY
&& moveCount >= FutilityMoveCounts[depth]
&& (!threatMove || !refutes(pos, move, threatMove)))
{
futilityValue = ss->staticEval + ss->evalMargin + futility_margin(predictedDepth, moveCount)
+ Gain[pos.piece_moved(move)][to_sq(move)];
- if (!PvNode && futilityValue < beta)
+ if (futilityValue < beta)
{
if (SpNode)
splitPoint->mutex.lock();
}
// Prune moves with negative SEE at low depths
- if ( predictedDepth < 2 * ONE_PLY
+ if ( predictedDepth < 3 * ONE_PLY
&& pos.see_sign(move) < 0)
{
if (SpNode)