constexpr uint64_t ttHitAverageResolution = 1024;
// Razor and futility margins
- constexpr int RazorMargin = 661;
+ constexpr int RazorMargin = 594;
Value futility_margin(Depth d, bool improving) {
- return Value(198 * (d - improving));
+ return Value(232 * (d - improving));
}
// Reductions lookup table, initialized at startup
&& eval <= alpha - RazorMargin)
return qsearch<NT>(pos, ss, alpha, beta);
- improving = ss->staticEval >= (ss-2)->staticEval
- || (ss-2)->staticEval == VALUE_NONE;
+ improving = (ss-2)->staticEval == VALUE_NONE ? (ss->staticEval >= (ss-4)->staticEval
+ || (ss-4)->staticEval == VALUE_NONE) : ss->staticEval >= (ss-2)->staticEval;
// Step 8. Futility pruning: child node (~30 Elo)
if ( !PvNode
extension = 1;
// Last captures extension
- else if ( PvNode
- && PieceValue[EG][pos.captured_piece()] > PawnValueEg
+ else if ( PieceValue[EG][pos.captured_piece()] > PawnValueEg
&& pos.non_pawn_material() <= 2 * RookValueMg)
extension = 1;
&& !pos.capture(move);
// Don't search moves with negative SEE values
- if ( (!inCheck || evasionPrunable)
- && !(givesCheck && pos.is_discovery_check_on_king(~pos.side_to_move(), move))
- && !pos.see_ge(move))
+ if ( (!inCheck || evasionPrunable) && !pos.see_ge(move))
continue;
// Speculative prefetch as early as possible