X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=0fa78248f8f059e2fea2155e7c48ec81a9a688aa;hp=e6ffcb19f42cf73abcbb082f7a4789442ba36a06;hb=f967f1a25ecddcaaf0317f25fd50f6dc5e983d24;hpb=909e3adede210a124ed9ec4a2f21d73fda61c26d diff --git a/src/search.cpp b/src/search.cpp index e6ffcb19..0fa78248 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -257,7 +257,7 @@ namespace { int SearchStartTime, MaxNodes, MaxDepth, MaxSearchTime; int AbsoluteMaxSearchTime, ExtraSearchTime, ExactMaxTime; bool UseTimeManagement, InfiniteSearch, PonderSearch, StopOnPonderhit; - bool FirstRootMove, AbortSearch, Quit, AspirationFailLow; + bool FirstRootMove, AbortSearch, Quit, AspirationFailLow, ZugDetection; // Log file bool UseLogFile; @@ -425,6 +425,7 @@ bool think(const Position& pos, bool infinite, bool ponder, int side_to_move, MultiPV = get_option_value_int("MultiPV"); Chess960 = get_option_value_bool("UCI_Chess960"); UseLogFile = get_option_value_bool("Use Search Log"); + ZugDetection = get_option_value_bool("Zugzwang detection"); // To be removed after 1.7.1 if (UseLogFile) LogFile.open(get_option_value_string("Search Log Filename").c_str(), std::ios::out | std::ios::app); @@ -1388,9 +1389,7 @@ namespace { { assert(value_to_tt(nullValue, ply) == nullValue); - // Special flag null values that are not zugzwang checked - ValueType vt = (depth < 6 * OnePly ? VALUE_TYPE_NS_LO : VALUE_TYPE_LOWER); - TT.store(posKey, nullValue, vt, depth, MOVE_NONE); + TT.store(posKey, nullValue, VALUE_TYPE_NS_LO, depth, MOVE_NONE); return nullValue; } } else { @@ -2317,7 +2316,7 @@ namespace { Value v = value_from_tt(tte->value(), ply); - return (allowNullmove || !(tte->type() & VALUE_TYPE_NULL)) + return (allowNullmove || !(tte->type() & VALUE_TYPE_NULL) || !ZugDetection) && ( tte->depth() >= depth || v >= Max(value_mate_in(PLY_MAX), beta)