1
0
Fork 0

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 <mcostalba@gmail.com>
sf_2.3.1_base
Marco Costalba 2009-03-24 11:26:43 +01:00
parent 72af519e7f
commit 095a96b461
1 changed files with 4 additions and 3 deletions

View File

@ -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