mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-22 10:06:26 +08:00
Small cleanups (march 2021)
With help of @BM123499, @mstembera, @gvreuls, @noobpwnftw and @Fanael Thanks! Closes https://github.com/official-stockfish/Stockfish/pull/3405 No functional change
This commit is contained in:
@@ -612,12 +612,12 @@ namespace {
|
||||
|
||||
// Step 1. Initialize node
|
||||
Thread* thisThread = pos.this_thread();
|
||||
ss->inCheck = pos.checkers();
|
||||
priorCapture = pos.captured_piece();
|
||||
Color us = pos.side_to_move();
|
||||
moveCount = captureCount = quietCount = ss->moveCount = 0;
|
||||
bestValue = -VALUE_INFINITE;
|
||||
maxValue = VALUE_INFINITE;
|
||||
ss->inCheck = pos.checkers();
|
||||
priorCapture = pos.captured_piece();
|
||||
Color us = pos.side_to_move();
|
||||
moveCount = captureCount = quietCount = ss->moveCount = 0;
|
||||
bestValue = -VALUE_INFINITE;
|
||||
maxValue = VALUE_INFINITE;
|
||||
ss->distanceFromPv = (PvNode ? 0 : ss->distanceFromPv);
|
||||
|
||||
// Check for the available remaining time
|
||||
@@ -917,6 +917,7 @@ namespace {
|
||||
return probCutBeta;
|
||||
|
||||
assert(probCutBeta < VALUE_INFINITE);
|
||||
|
||||
MovePicker mp(pos, ttMove, probCutBeta - ss->staticEval, &captureHistory);
|
||||
int probCutCount = 0;
|
||||
bool ttPv = ss->ttPv;
|
||||
@@ -1121,6 +1122,7 @@ moves_loop: // When in check, search starts from here
|
||||
{
|
||||
Value singularBeta = ttValue - ((formerPv + 4) * depth) / 2;
|
||||
Depth singularDepth = (depth - 1 + 3 * formerPv) / 2;
|
||||
|
||||
ss->excludedMove = move;
|
||||
value = search<NonPV>(pos, ss, singularBeta - 1, singularBeta, singularDepth, cutNode);
|
||||
ss->excludedMove = MOVE_NONE;
|
||||
@@ -1205,15 +1207,19 @@ moves_loop: // When in check, search starts from here
|
||||
|
||||
// Decrease reduction if position is or has been on the PV
|
||||
// and node is not likely to fail low. (~10 Elo)
|
||||
if (ss->ttPv && !likelyFailLow)
|
||||
if ( ss->ttPv
|
||||
&& !likelyFailLow)
|
||||
r -= 2;
|
||||
|
||||
// Increase reduction at root and non-PV nodes when the best move does not change frequently
|
||||
if ((rootNode || !PvNode) && thisThread->rootDepth > 10 && thisThread->bestMoveChanges <= 2)
|
||||
if ( (rootNode || !PvNode)
|
||||
&& thisThread->rootDepth > 10
|
||||
&& thisThread->bestMoveChanges <= 2)
|
||||
r++;
|
||||
|
||||
// More reductions for late moves if position was not in previous PV
|
||||
if (moveCountPruning && !formerPv)
|
||||
if ( moveCountPruning
|
||||
&& !formerPv)
|
||||
r++;
|
||||
|
||||
// Decrease reduction if opponent's move count is high (~5 Elo)
|
||||
@@ -1226,7 +1232,7 @@ moves_loop: // When in check, search starts from here
|
||||
|
||||
if (captureOrPromotion)
|
||||
{
|
||||
// Unless giving check, this capture is likely bad
|
||||
// Increase reduction for non-checking captures likely to be bad
|
||||
if ( !givesCheck
|
||||
&& ss->staticEval + PieceValue[EG][pos.captured_piece()] + 210 * depth <= alpha)
|
||||
r++;
|
||||
@@ -1246,7 +1252,7 @@ moves_loop: // When in check, search starts from here
|
||||
|
||||
// Decrease reduction for moves that escape a capture. Filter out
|
||||
// castling moves, because they are coded as "king captures rook" and
|
||||
// hence break make_move(). (~2 Elo)
|
||||
// hence break reverse_move() (~2 Elo)
|
||||
else if ( type_of(move) == NORMAL
|
||||
&& !pos.see_ge(reverse_move(move)))
|
||||
r -= 2 + ss->ttPv - (type_of(movedPiece) == PAWN);
|
||||
@@ -1408,8 +1414,9 @@ moves_loop: // When in check, search starts from here
|
||||
assert(moveCount || !ss->inCheck || excludedMove || !MoveList<LEGAL>(pos).size());
|
||||
|
||||
if (!moveCount)
|
||||
bestValue = excludedMove ? alpha
|
||||
: ss->inCheck ? mated_in(ss->ply) : VALUE_DRAW;
|
||||
bestValue = excludedMove ? alpha :
|
||||
ss->inCheck ? mated_in(ss->ply)
|
||||
: VALUE_DRAW;
|
||||
|
||||
// If there is a move which produces search value greater than alpha we update stats of searched moves
|
||||
else if (bestMove)
|
||||
|
||||
Reference in New Issue
Block a user