// Futility margin
Value futility_margin(Depth d, bool improving) {
- return Value(231 * (d - improving));
+ return Value(214 * (d - improving));
}
// Reductions lookup table, initialized at startup
Depth reduction(bool i, Depth d, int mn) {
int r = Reductions[d] * Reductions[mn];
- return (r + 503) / 1024 + (!i && r > 915);
+ return (r + 534) / 1024 + (!i && r > 904);
}
constexpr int futility_move_count(bool improving, Depth depth) {
// History and stats update bonus, based on depth
int stat_bonus(Depth d) {
- return d > 14 ? 66 : 6 * d * d + 231 * d - 206;
+ return d > 14 ? 73 : 6 * d * d + 229 * d - 215;
}
// Add a small random component to draw evaluations to avoid 3-fold blindness
// Step 8. Null move search with verification search (~40 Elo)
if ( !PvNode
&& (ss-1)->currentMove != MOVE_NULL
- && (ss-1)->statScore < 24185
+ && (ss-1)->statScore < 23767
&& eval >= beta
&& eval >= ss->staticEval
- && ss->staticEval >= beta - 22 * depth - 34 * improving + 162 * ss->ttPv + 159
+ && ss->staticEval >= beta - 20 * depth - 22 * improving + 168 * ss->ttPv + 159
&& !excludedMove
&& pos.non_pawn_material(us)
&& (ss->ply >= thisThread->nmpMinPly || us != thisThread->nmpColor))
assert(eval - beta >= 0);
// Null move dynamic reduction based on depth and value
- Depth R = (1062 + 68 * depth) / 256 + std::min(int(eval - beta) / 190, 3);
+ Depth R = (1090 + 81 * depth) / 256 + std::min(int(eval - beta) / 205, 3);
ss->currentMove = MOVE_NULL;
ss->continuationHistory = &thisThread->continuationHistory[0][0][NO_PIECE][0];
ttCapture = ttMove && pos.capture_or_promotion(ttMove);
// Step 11. A small Probcut idea, when we are in check
- probCutBeta = beta + 400;
+ probCutBeta = beta + 409;
if ( ss->inCheck
&& !PvNode
&& depth >= 4
{
extension = 1;
singularQuietLMR = !ttCapture;
- if (!PvNode && value < singularBeta - 140)
+ if (!PvNode && value < singularBeta - 93)
extension = 2;
}
+ (*contHist[0])[movedPiece][to_sq(move)]
+ (*contHist[1])[movedPiece][to_sq(move)]
+ (*contHist[3])[movedPiece][to_sq(move)]
- - 4791;
+ - 4923;
// Decrease/increase reduction for moves with a good/bad history (~30 Elo)
if (!ss->inCheck)
- r -= ss->statScore / 14790;
+ r -= ss->statScore / 14721;
}
// In general we want to cap the LMR depth search at newDepth. But if