This patch lowers singular beta for positions that have been in pv and are not pv nodes.
The idea of using ttpv && !PvNode improved scaling with TC and could be
useful for other search heuristics.
passed STC
http://tests.stockfishchess.org/tests/view/
5e3f6d7ce70d848499f63bbc
LLR: 2.94 (-2.94,2.94) {-0.50,1.50}
Total: 154953 W: 29688 L: 29272 D: 95993
Ptnml(0-2): 2616, 17912, 36037, 18210, 2673
passed LTC
http://tests.stockfishchess.org/tests/view/
5e405561e70d848499f63bfa
LLR: 2.95 (-2.94,2.94) {0.25,1.75}
Total: 70974 W: 9305 L: 8932 D: 52737
Ptnml(0-2): 466, 6658, 20920, 6826, 569
closes https://github.com/official-stockfish/Stockfish/pull/2550
Bench:
4932981
&& tte->depth() >= depth - 3
&& pos.legal(move))
{
&& tte->depth() >= depth - 3
&& pos.legal(move))
{
- Value singularBeta = ttValue - 2 * depth;
+ Value singularBeta = ttValue - (((ttPv && !PvNode) + 4) * depth) / 2;
Depth halfDepth = depth / 2;
ss->excludedMove = move;
value = search<NonPV>(pos, ss, singularBeta - 1, singularBeta, halfDepth, cutNode);
Depth halfDepth = depth / 2;
ss->excludedMove = move;
value = search<NonPV>(pos, ss, singularBeta - 1, singularBeta, halfDepth, cutNode);