// History and stats update bonus, based on depth
int stat_bonus(Depth d) {
- return d > 13 ? 29 : 17 * d * d + 134 * d - 134;
+ return d > 14 ? 29 : 8 * d * d + 224 * d - 215;
}
// Add a small random component to draw evaluations to avoid 3fold-blindness
// Step 8. Futility pruning: child node (~50 Elo)
if ( !PvNode
- && depth < 8
+ && depth < 9
&& eval - futility_margin(depth, improving) >= beta
&& eval < VALUE_KNOWN_WIN) // Do not return unproven wins
return eval;
}
}
- probCutBeta = beta + 183 - 49 * improving;
+ probCutBeta = beta + 194 - 49 * improving;
// Step 10. ProbCut (~10 Elo)
// If we have a good enough capture and a reduced search returns a value
// Futility pruning: parent node (~5 Elo)
if ( lmrDepth < 7
&& !ss->inCheck
- && ss->staticEval + 266 + 170 * lmrDepth <= alpha
+ && ss->staticEval + 254 + 159 * lmrDepth <= alpha
&& (*contHist[0])[movedPiece][to_sq(move)]
+ (*contHist[1])[movedPiece][to_sq(move)]
+ (*contHist[3])[movedPiece][to_sq(move)]
- + (*contHist[5])[movedPiece][to_sq(move)] / 2 < 27376)
+ + (*contHist[5])[movedPiece][to_sq(move)] / 2 < 26394)
continue;
// Prune moves with negative SEE (~20 Elo)
continue;
// SEE based pruning
- if (!pos.see_ge(move, Value(-213) * depth)) // (~25 Elo)
+ if (!pos.see_ge(move, Value(-218) * depth)) // (~25 Elo)
continue;
}
}