continue;
// Prune moves with negative SEE (~10 Elo)
- if (!pos.see_ge(move, Value(-29 * lmrDepth * lmrDepth)))
+ if (!pos.see_ge(move, Value(-(31 - std::min(lmrDepth, 18)) * lmrDepth * lmrDepth)))
continue;
}
else if ( (!givesCheck || !extension)
+ (*contHist[3])[movedPiece][to_sq(move)]
- 4000;
+ // Reset statScore to zero if negative and most stats shows >= 0
+ if ( ss->statScore < 0
+ && (*contHist[0])[movedPiece][to_sq(move)] >= 0
+ && (*contHist[1])[movedPiece][to_sq(move)] >= 0
+ && thisThread->mainHistory[us][from_to(move)] >= 0)
+ ss->statScore = 0;
+
// Decrease/increase reduction by comparing opponent's stat score (~10 Elo)
if (ss->statScore >= 0 && (ss-1)->statScore < 0)
r -= ONE_PLY;
: -stat_bonus(newDepth);
if (move == ss->killers[0])
- bonus += bonus / 4;
+ bonus += bonus / 4;
update_continuation_histories(ss, movedPiece, to_sq(move), bonus);
}