X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fsearch.cpp;h=252b4299239e5e039e3bb90a4ba04ed0cef5b49d;hb=2f7723fd44d5184c205d31ac1ac5199359afb0d3;hp=1d27dad5e3e96ee9b4f431f2bf5f466e3e44dc51;hpb=ea06200423731c35dc62ed4a40c47e67eac1818a;p=stockfish diff --git a/src/search.cpp b/src/search.cpp index 1d27dad5..252b4299 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -205,7 +205,7 @@ namespace { const bool UseLSNFiltering = true; const int LSNTime = 4000; // In milliseconds const Value LSNValue = value_from_centipawns(200); - bool looseOnTime = false; + bool loseOnTime = false; // Extensions. Array index 0 is used at non-PV nodes, index 1 at PV nodes. // There is heavy SMP read access on these arrays @@ -375,7 +375,7 @@ bool think(const Position& pos, bool infinite, bool ponder, int side_to_move, if (button_was_pressed("Clear Hash")) { TT.clear(); - looseOnTime = false; // reset at the beginning of a new game + loseOnTime = false; // reset at the beginning of a new game } bool PonderingEnabled = get_option_value_bool("Ponder"); @@ -488,17 +488,17 @@ bool think(const Position& pos, bool infinite, bool ponder, int side_to_move, // We're ready to start thinking. Call the iterative deepening loop function // // FIXME we really need to cleanup all this LSN ugliness - if (!looseOnTime) + if (!loseOnTime) { Value v = id_loop(pos, searchMoves); - looseOnTime = ( UseLSNFiltering + loseOnTime = ( UseLSNFiltering && myTime < LSNTime && myIncrement == 0 && v < -LSNValue); } else { - looseOnTime = false; // reset for next match + loseOnTime = false; // reset for next match while (SearchStartTime + myTime + 1000 > get_system_time()) ; // wait here id_loop(pos, searchMoves); // to fail gracefully @@ -1080,7 +1080,7 @@ namespace { { // Try to reduce non-pv search depth by one ply if move seems not problematic, // if the move fails high will be re-searched at full depth. - if ( depth >= 2*OnePly + if ( depth >= 3*OnePly && moveCount >= LMRPVMoves && !dangerous && !moveIsCapture @@ -1249,11 +1249,7 @@ namespace { pos.undo_null_move(); - if (value_is_mate(nullValue)) - { - /* Do not return unproven mates */ - } - else if (nullValue >= beta) + if (nullValue >= beta) { if (depth < 6 * OnePly) return beta; @@ -1364,7 +1360,7 @@ namespace { // Try to reduce non-pv search depth by one ply if move seems not problematic, // if the move fails high will be re-searched at full depth. - if ( depth >= 2*OnePly + if ( depth >= 3*OnePly && moveCount >= LMRNonPVMoves && !dangerous && !moveIsCapture @@ -1492,7 +1488,6 @@ namespace { else if (tte && tte->type() == VALUE_TYPE_EVAL) { // Use the cached evaluation score if possible - assert(tte->value() == evaluate(pos, ei, threadID)); assert(ei.futilityMargin == Value(0)); staticValue = tte->value(); @@ -2203,16 +2198,19 @@ namespace { assert(m != MOVE_NONE); Depth result = Depth(0); - *dangerous = check || singleReply || mateThreat; + *dangerous = check | singleReply | mateThreat; - if (check) - result += CheckExtension[pvNode]; + if (*dangerous) + { + if (check) + result += CheckExtension[pvNode]; - if (singleReply) - result += SingleReplyExtension[pvNode]; + if (singleReply) + result += SingleReplyExtension[pvNode]; - if (mateThreat) - result += MateThreatExtension[pvNode]; + if (mateThreat) + result += MateThreatExtension[pvNode]; + } if (pos.type_of_piece_on(move_from(m)) == PAWN) {