From: ceebo Date: Mon, 23 Apr 2018 07:13:07 +0000 (+0200) Subject: Alternative formula for dynamic contempt X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=aef7076c344881954b4f586bd4779594d0b29037;hp=a64d524d026bc78e4779fa3249649271d905df2d Alternative formula for dynamic contempt Replace the formula involving arctan with something having similar behaviour that can be implemented using integer-only operations. STC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 34781 W: 7189 L: 7093 D: 20499 http://tests.stockfishchess.org/tests/view/5ad7c95f0ebc595700526e76 LTC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 39743 W: 5950 L: 5857 D: 27936 http://tests.stockfishchess.org/tests/view/5ad886ee0ebc595700526e9b Closes https://github.com/official-stockfish/Stockfish/pull/1558 Bench: 5549801 --- diff --git a/src/search.cpp b/src/search.cpp index 15f870f5..d7980bd7 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -379,7 +379,7 @@ void Thread::search() { beta = std::min(previousScore + delta, VALUE_INFINITE); // Adjust contempt based on root move's previousScore (dynamic contempt) - int dct = ct + int(std::round(48 * atan(float(previousScore) / 128))); + int dct = ct + 88 * previousScore / (abs(previousScore) + 200); contempt = (us == WHITE ? make_score(dct, dct / 2) : -make_score(dct, dct / 2));