diff --git a/src/makefile b/src/makefile index dc19a0cc..8df616f2 100644 --- a/src/makefile +++ b/src/makefile @@ -3,7 +3,7 @@ EXE = berserk SRC = attacks.c bench.c berserk.c bits.c board.c eval.c history.c move.c movegen.c movepick.c perft.c random.c \ search.c see.c tb.c thread.c transposition.c uci.c util.c zobrist.c nn/accumulator.c nn/evaluate.c pyrrhic/tbprobe.c CC = clang -VERSION = 20241113 +VERSION = 20241119 MAIN_NETWORK = berserk-d43206fe90e4.nn EVALFILE = $(MAIN_NETWORK) DEFS = -DVERSION=\"$(VERSION)\" -DEVALFILE=\"$(EVALFILE)\" -DNDEBUG diff --git a/src/search.c b/src/search.c index 015c465c..55926f2d 100644 --- a/src/search.c +++ b/src/search.c @@ -511,11 +511,12 @@ int Negamax(int alpha, int beta, int depth, int cutnode, ThreadData* thread, PV* MovePicker mp; if (!isPV && !inCheck) { const int opponentHasEasyCapture = !!OpponentsEasyCaptures(board); + const int opponentDeclining = ss->staticEval + (ss - 1)->staticEval > 1; // Reverse Futility Pruning // i.e. the static eval is so far above beta we prune if (depth <= 9 && !ss->skip && eval < TB_WIN_BOUND && eval >= beta && - eval - 70 * depth + 118 * (improving && !opponentHasEasyCapture) >= beta && + eval - 70 * depth + 118 * (improving && !opponentHasEasyCapture) + 25 * opponentDeclining >= beta && (!hashMove || GetHistory(ss, thread, hashMove) > 11800)) return (eval + beta) / 2;