X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=97ab5918ae808090ca181aab078e35f15f8399d4;hp=1db84c7e8522b12a488c9a4339e88f93fbad879e;hb=ade3bb9a4e774aa9b760235f3b0ee42e0a0420d9;hpb=1c0c4db6775fae5a8b785630f4fd406c235880d9 diff --git a/src/search.cpp b/src/search.cpp index 1db84c7e..97ab5918 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -549,6 +549,7 @@ namespace { assert(-VALUE_INFINITE <= alpha && alpha < beta && beta <= VALUE_INFINITE); assert(PvNode || (alpha == beta - 1)); assert(DEPTH_ZERO < depth && depth < DEPTH_MAX); + assert(!(PvNode && cutNode)); Move pv[MAX_PLY+1], quietsSearched[64]; StateInfo st; @@ -730,6 +731,7 @@ namespace { if ( !PvNode && depth >= 2 * ONE_PLY && eval >= beta + && (ss->staticEval >= beta || depth >= 12 * ONE_PLY) && pos.non_pawn_material(pos.side_to_move())) { ss->currentMove = MOVE_NULL; @@ -805,7 +807,7 @@ namespace { { Depth d = depth - 2 * ONE_PLY - (PvNode ? DEPTH_ZERO : depth / 4); ss->skipEarlyPruning = true; - search(pos, ss, alpha, beta, d, true); + search(pos, ss, alpha, beta, d, cutNode); ss->skipEarlyPruning = false; tte = TT.probe(posKey, ttHit); @@ -814,7 +816,6 @@ namespace { moves_loop: // When in check search starts from here - Square prevSq = to_sq((ss-1)->currentMove); const CounterMoveStats* cmh = (ss-1)->counterMoves; const CounterMoveStats* fmh = (ss-2)->counterMoves; const CounterMoveStats* fmh2 = (ss-4)->counterMoves; @@ -823,7 +824,7 @@ moves_loop: // When in check search starts from here CheckInfo ci(pos); value = bestValue; // Workaround a bogus 'uninitialized' warning under gcc improving = ss->staticEval >= (ss-2)->staticEval - || ss->staticEval == VALUE_NONE + /* || ss->staticEval == VALUE_NONE Already implicit in the previous condition */ ||(ss-2)->staticEval == VALUE_NONE; singularExtensionNode = !rootNode @@ -963,7 +964,7 @@ moves_loop: // When in check search starts from here + (fmh2 ? (*fmh2)[moved_piece][to_sq(move)] : VALUE_ZERO); // Increase reduction for cut nodes - if (!PvNode && cutNode) + if (cutNode) r += 2 * ONE_PLY; // Decrease reduction for moves that escape a capture. Filter out @@ -1105,10 +1106,10 @@ moves_loop: // When in check search starts from here // Bonus for prior countermove that caused the fail low else if ( depth >= 3 * ONE_PLY && !bestMove - && !inCheck && !pos.captured_piece_type() && is_ok((ss-1)->currentMove)) { + Square prevSq = to_sq((ss-1)->currentMove); Value bonus = Value((depth / ONE_PLY) * (depth / ONE_PLY) + 2 * depth / ONE_PLY - 2); if ((ss-2)->counterMoves) (ss-2)->counterMoves->update(pos.piece_on(prevSq), prevSq, bonus);