Fix Singular extension condition to handle mate scores
authorjoergoster <osterj165@googlemail.com>
Sun, 29 Jun 2014 19:17:40 +0000 (20:17 +0100)
committerJoona Kiiski <joona.kiiski@gmail.com>
Sun, 29 Jun 2014 19:17:40 +0000 (20:17 +0100)
commitffedfa33542a7de7d87fd545ea0a4b2fef8f8c6e
tree45da0676ec50dc08e67fee49d3dac56f2f852d3a
parente4e423bb05fb870ad25a2beaa30324d079f7f60a
Fix Singular extension condition to handle mate scores

With Eelco's patch "Don't special case for abs(beta) >= VALUE_MATE_IN_MAX_PLY" condition "abs(ttValue) < VALUE_KNOWN_WIN" has been removed from singular extension search, and condition "abs(beta) < VALUE_KNOWN_WIN" was added to the SingularExtensionNode definition.
This might lead to problems, especially in positions, where a mate is due.
For example, this position 5rk1/4K1pp/8/5PPP/8/8/8/1R6 w - - 12 1 triggers an assert.
stockfish: search.cpp:434: Value {anonymous}::search(Position&, Search::Stack*, Value, Value, Depth, bool) [with {anonymous}::NodeType NT = (<unnamed>::NodeType)2u; bool SpNode = false]: Assertion `-VALUE_INFINITE <= alpha && alpha < beta && beta <= VALUE_INFINITE' failed.

So let's re-insert the removed condition.
First spotted by Uri Blass, fix by me.

Bench: 8759675
src/search.cpp