From 095a96b46119ab47f9b56fb00b1831da552fad2a Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Tue, 24 Mar 2009 11:26:43 +0100 Subject: [PATCH] In qsearch update TT only if returning from stand pat This is the only "correct" exact value we can store. Otherwise there could be spurious failed high/low nodes. Signed-off-by: Marco Costalba --- src/search.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/search.cpp b/src/search.cpp index 72530f2e..c4446fc5 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1450,7 +1450,11 @@ namespace { Value bestValue = staticValue; if (bestValue >= beta) + { + // Update transposition table before to leave + TT.store(pos, value_to_tt(bestValue, ply), depth, MOVE_NONE, VALUE_TYPE_EXACT); return bestValue; + } if (bestValue > alpha) alpha = bestValue; @@ -1534,9 +1538,6 @@ namespace { assert(bestValue > -VALUE_INFINITE && bestValue < VALUE_INFINITE); - // Update transposition table - TT.store(pos, value_to_tt(bestValue, ply), depth, MOVE_NONE, VALUE_TYPE_EXACT); - // Update killers only for good check moves Move m = ss[ply].currentMove; if (alpha >= beta && ok_to_history(pos, m)) // Only non capture moves are considered -- 2.39.2