1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-07-11 19:49:14 +00:00

Clean-up code indentation in qsearch

closes https://github.com/official-stockfish/Stockfish/pull/4615

No functional change
This commit is contained in:
Stéphane Nicolet 2023-06-12 23:26:42 +02:00 committed by Joost VandeVondele
parent ece90bca9c
commit 92c949e12e

View file

@ -1481,10 +1481,11 @@ moves_loop: // When in check, search starts here
bestValue = ttValue;
}
else
{
// In case of null move search use previous static eval with a different sign
ss->staticEval = bestValue =
(ss-1)->currentMove != MOVE_NULL ? evaluate(pos)
: -(ss-1)->staticEval;
ss->staticEval = bestValue = (ss-1)->currentMove != MOVE_NULL ? evaluate(pos)
: -(ss-1)->staticEval;
}
// Stand pat. Return immediately if static value is at least beta
if (bestValue >= beta)
@ -1523,97 +1524,98 @@ moves_loop: // When in check, search starts here
// or a beta cutoff occurs.
while ((move = mp.next_move()) != MOVE_NONE)
{
assert(is_ok(move));
assert(is_ok(move));
// Check for legality
if (!pos.legal(move))
continue;
// Check for legality
if (!pos.legal(move))
continue;
givesCheck = pos.gives_check(move);
capture = pos.capture_stage(move);
givesCheck = pos.gives_check(move);
capture = pos.capture_stage(move);
moveCount++;
moveCount++;
// Step 6. Pruning.
if (bestValue > VALUE_TB_LOSS_IN_MAX_PLY)
{
// Futility pruning and moveCount pruning (~10 Elo)
if ( !givesCheck
&& to_sq(move) != prevSq
&& futilityBase > -VALUE_KNOWN_WIN
&& type_of(move) != PROMOTION)
{
if (moveCount > 2)
continue;
// Step 6. Pruning.
if (bestValue > VALUE_TB_LOSS_IN_MAX_PLY)
{
// Futility pruning and moveCount pruning (~10 Elo)
if ( !givesCheck
&& to_sq(move) != prevSq
&& futilityBase > -VALUE_KNOWN_WIN
&& type_of(move) != PROMOTION)
{
if (moveCount > 2)
continue;
futilityValue = futilityBase + PieceValue[EG][pos.piece_on(to_sq(move))];
futilityValue = futilityBase + PieceValue[EG][pos.piece_on(to_sq(move))];
if (futilityValue <= alpha)
{
bestValue = std::max(bestValue, futilityValue);
continue;
}
if (futilityValue <= alpha)
{
bestValue = std::max(bestValue, futilityValue);
continue;
}
if (futilityBase <= alpha && !pos.see_ge(move, VALUE_ZERO + 1))
{
bestValue = std::max(bestValue, futilityBase);
continue;
}
}
if (futilityBase <= alpha && !pos.see_ge(move, VALUE_ZERO + 1))
{
bestValue = std::max(bestValue, futilityBase);
continue;
}
}
// We prune after 2nd quiet check evasion where being 'in check' is implicitly checked through the counter
// and being a 'quiet' apart from being a tt move is assumed after an increment because captures are pushed ahead.
if (quietCheckEvasions > 1)
break;
// We prune after the second quiet check evasion move, where being 'in check' is
// implicitly checked through the counter, and being a 'quiet move' apart from
// being a tt move is assumed after an increment because captures are pushed ahead.
if (quietCheckEvasions > 1)
break;
// Continuation history based pruning (~3 Elo)
if ( !capture
&& (*contHist[0])[pos.moved_piece(move)][to_sq(move)] < 0
&& (*contHist[1])[pos.moved_piece(move)][to_sq(move)] < 0)
continue;
// Continuation history based pruning (~3 Elo)
if ( !capture
&& (*contHist[0])[pos.moved_piece(move)][to_sq(move)] < 0
&& (*contHist[1])[pos.moved_piece(move)][to_sq(move)] < 0)
continue;
// Do not search moves with bad enough SEE values (~5 Elo)
if (!pos.see_ge(move, Value(-95)))
continue;
}
// Do not search moves with bad enough SEE values (~5 Elo)
if (!pos.see_ge(move, Value(-95)))
continue;
}
// Speculative prefetch as early as possible
prefetch(TT.first_entry(pos.key_after(move)));
// Speculative prefetch as early as possible
prefetch(TT.first_entry(pos.key_after(move)));
// Update the current move
ss->currentMove = move;
ss->continuationHistory = &thisThread->continuationHistory[ss->inCheck]
[capture]
[pos.moved_piece(move)]
[to_sq(move)];
// Update the current move
ss->currentMove = move;
ss->continuationHistory = &thisThread->continuationHistory[ss->inCheck]
[capture]
[pos.moved_piece(move)]
[to_sq(move)];
quietCheckEvasions += !capture && ss->inCheck;
quietCheckEvasions += !capture && ss->inCheck;
// Step 7. Make and search the move
pos.do_move(move, st, givesCheck);
value = -qsearch<nodeType>(pos, ss+1, -beta, -alpha, depth - 1);
pos.undo_move(move);
// Step 7. Make and search the move
pos.do_move(move, st, givesCheck);
value = -qsearch<nodeType>(pos, ss+1, -beta, -alpha, depth - 1);
pos.undo_move(move);
assert(value > -VALUE_INFINITE && value < VALUE_INFINITE);
assert(value > -VALUE_INFINITE && value < VALUE_INFINITE);
// Step 8. Check for a new best move
if (value > bestValue)
{
bestValue = value;
// Step 8. Check for a new best move
if (value > bestValue)
{
bestValue = value;
if (value > alpha)
{
bestMove = move;
if (value > alpha)
{
bestMove = move;
if (PvNode) // Update pv even in fail-high case
update_pv(ss->pv, move, (ss+1)->pv);
if (PvNode) // Update pv even in fail-high case
update_pv(ss->pv, move, (ss+1)->pv);
if (PvNode && value < beta) // Update alpha here!
alpha = value;
else
break; // Fail high
}
}
if (PvNode && value < beta) // Update alpha here!
alpha = value;
else
break; // Fail high
}
}
}
// Step 9. Check for mate