This patch applies a different singular extension search logic in case the position is ttPv && !PvNode.
It changes the depth of this search, higher for this types of nodes, and lower for other nodes.
passed STC
http://tests.stockfishchess.org/tests/view/
5e72bbaae42a5c3b3ca2e75e
LLR: 2.94 (-2.94,2.94) {-0.50,1.50}
Total: 12692 W: 2608 L: 2389 D: 7695
Ptnml(0-2): 238, 1414, 2839, 1601, 254
passed LTC
http://tests.stockfishchess.org/tests/view/
5e731c07e42a5c3b3ca2e770
LLR: 2.96 (-2.94,2.94) {0.25,1.75}
Total: 145716 W: 19218 L: 18626 D: 107872
Ptnml(0-2): 1100, 13605, 42899, 14111, 1143
closes https://github.com/official-stockfish/Stockfish/pull/2590
Bench:
5398277
&& pos.legal(move))
{
Value singularBeta = ttValue - (((ttPv && !PvNode) + 4) * depth) / 2;
- Depth halfDepth = depth / 2;
+ Depth singularDepth = (depth - 1 + 3 * (ttPv && !PvNode)) / 2;
ss->excludedMove = move;
- value = search<NonPV>(pos, ss, singularBeta - 1, singularBeta, halfDepth, cutNode);
+ value = search<NonPV>(pos, ss, singularBeta - 1, singularBeta, singularDepth, cutNode);
ss->excludedMove = MOVE_NONE;
if (value < singularBeta)