Reduce use of lazyEval
authorJoost VandeVondele <Joost.VandeVondele@gmail.com>
Sun, 7 Nov 2021 10:01:03 +0000 (11:01 +0100)
committerStéphane Nicolet <cassio@free.fr>
Mon, 8 Nov 2021 12:03:52 +0000 (13:03 +0100)
commit7b278aab9f61620b9dba31896b38aeea1eb911e2
tree36b3ee3c4374666b57ce579c34e87658856d5571
parenta0259d8ab9661b7f625474d2cbe18481ef69bbf2
Reduce use of lazyEval

In case the evaluation at root is large, discourage the use of lazyEval.

This fixes https://github.com/official-stockfish/Stockfish/issues/3772
or at least improves it significantly. In this case, poor play with large
odds can be observed, in extreme cases leading to a loss despite large
advantage:

r1bq1b1r/ppp3p1/3p1nkp/n3p3/2B1P2N/2NPB3/PPP2PPP/R3K2R b KQ - 5 9

With this patch the poor move is only considered up to depth 13, in master
up to depth 28.

The patch did not pass at LTC with Elo gainer bounds, but with slightly
positive Elo nevertheless (95% LOS).

STC:
LLR: 2.94 (-2.94,2.94) <0.00,2.50>
Total: 40368 W: 10318 L: 10041 D: 20009
Ptnml(0-2): 103, 4493, 10725, 4750, 113
https://tests.stockfishchess.org/tests/view/61800ad259e71df00dcc420d

LTC:
LLR: -2.94 (-2.94,2.94) <0.50,3.00>
Total: 212288 W: 52997 L: 52692 D: 106599
Ptnml(0-2): 112, 22038, 61549, 22323, 122
https://tests.stockfishchess.org/tests/view/618050d959e71df00dcc426d

closes https://github.com/official-stockfish/Stockfish/pull/3780

Bench: 7127040
src/evaluate.cpp
src/search.cpp
src/thread.h