constexpr int SkipPhase[] = { 0, 1, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7 };
// Razor and futility margins
- constexpr int RazorMargin[] = {0, 590, 604};
+ constexpr int RazorMargin = 600;
Value futility_margin(Depth d, bool improving) {
return Value((175 - 50 * improving) * d / ONE_PLY);
}
}
// Step 7. Razoring (~2 Elo)
- if ( !PvNode
- && depth < 3 * ONE_PLY
- && eval <= alpha - RazorMargin[depth / ONE_PLY])
- {
- Value ralpha = alpha - (depth >= 2 * ONE_PLY) * RazorMargin[depth / ONE_PLY];
- Value v = qsearch<NonPV>(pos, ss, ralpha, ralpha+1);
- if (depth < 2 * ONE_PLY || v <= ralpha)
- return v;
- }
+ if ( depth < 2 * ONE_PLY
+ && eval <= alpha - RazorMargin)
+ return qsearch<NT>(pos, ss, alpha, beta);
improving = ss->staticEval >= (ss-2)->staticEval
|| (ss-2)->staticEval == VALUE_NONE;