mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Refactor previous patch
No functional change.
This commit is contained in:
parent
38428ada54
commit
d909d10f33
1 changed files with 36 additions and 41 deletions
|
@ -920,52 +920,47 @@ moves_loop: // When in check search starts from here
|
||||||
newDepth = depth - ONE_PLY + extension;
|
newDepth = depth - ONE_PLY + extension;
|
||||||
|
|
||||||
// Step 13. Pruning at shallow depth
|
// Step 13. Pruning at shallow depth
|
||||||
if ( !rootNode
|
if ( !rootNode
|
||||||
&& !captureOrPromotion
|
&& !inCheck
|
||||||
&& !inCheck
|
&& bestValue > VALUE_MATED_IN_MAX_PLY)
|
||||||
&& !givesCheck
|
|
||||||
&& bestValue > VALUE_MATED_IN_MAX_PLY
|
|
||||||
&& !pos.advanced_pawn_push(move))
|
|
||||||
{
|
{
|
||||||
// Move count based pruning
|
if ( !captureOrPromotion
|
||||||
if (moveCountPruning)
|
&& !givesCheck
|
||||||
continue;
|
&& !pos.advanced_pawn_push(move))
|
||||||
|
|
||||||
predictedDepth = std::max(newDepth - reduction<PvNode>(improving, depth, moveCount), DEPTH_ZERO);
|
|
||||||
|
|
||||||
// Countermoves based pruning
|
|
||||||
if ( predictedDepth < 3 * ONE_PLY
|
|
||||||
&& (!cmh || (*cmh )[moved_piece][to_sq(move)] < VALUE_ZERO)
|
|
||||||
&& (!fmh || (*fmh )[moved_piece][to_sq(move)] < VALUE_ZERO)
|
|
||||||
&& (!fmh2 || (*fmh2)[moved_piece][to_sq(move)] < VALUE_ZERO || (cmh && fmh)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// Futility pruning: parent node
|
|
||||||
if ( predictedDepth < 7 * ONE_PLY
|
|
||||||
&& ss->staticEval + 256 + 200 * predictedDepth / ONE_PLY <= alpha)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// Prune moves with negative SEE at low depths and below a decreasing
|
|
||||||
// threshold at higher depths.
|
|
||||||
if (predictedDepth < 8 * ONE_PLY)
|
|
||||||
{
|
{
|
||||||
Value see_v = predictedDepth < 4 * ONE_PLY ? VALUE_ZERO
|
// Move count based pruning
|
||||||
: -PawnValueMg * 2 * int(predictedDepth - 3 * ONE_PLY) / ONE_PLY;
|
if (moveCountPruning)
|
||||||
|
|
||||||
if (pos.see_sign(move) < see_v)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
predictedDepth = std::max(newDepth - reduction<PvNode>(improving, depth, moveCount), DEPTH_ZERO);
|
||||||
|
|
||||||
|
// Countermoves based pruning
|
||||||
|
if ( predictedDepth < 3 * ONE_PLY
|
||||||
|
&& (!cmh || (*cmh )[moved_piece][to_sq(move)] < VALUE_ZERO)
|
||||||
|
&& (!fmh || (*fmh )[moved_piece][to_sq(move)] < VALUE_ZERO)
|
||||||
|
&& (!fmh2 || (*fmh2)[moved_piece][to_sq(move)] < VALUE_ZERO || (cmh && fmh)))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Futility pruning: parent node
|
||||||
|
if ( predictedDepth < 7 * ONE_PLY
|
||||||
|
&& ss->staticEval + 256 + 200 * predictedDepth / ONE_PLY <= alpha)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Prune moves with negative SEE at low depths and below a decreasing
|
||||||
|
// threshold at higher depths.
|
||||||
|
if (predictedDepth < 8 * ONE_PLY)
|
||||||
|
{
|
||||||
|
Value see_v = predictedDepth < 4 * ONE_PLY ? VALUE_ZERO
|
||||||
|
: -PawnValueMg * 2 * int(predictedDepth - 3 * ONE_PLY) / ONE_PLY;
|
||||||
|
|
||||||
|
if (pos.see_sign(move) < see_v)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else if ( depth < 3 * ONE_PLY
|
||||||
|
&& pos.see_sign(move) < VALUE_ZERO)
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else if ( depth < 3 * ONE_PLY
|
|
||||||
&& !inCheck
|
|
||||||
&& bestValue > VALUE_MATED_IN_MAX_PLY
|
|
||||||
&& !rootNode
|
|
||||||
&& ( captureOrPromotion
|
|
||||||
|| givesCheck
|
|
||||||
|| pos.advanced_pawn_push(move))
|
|
||||||
&& pos.see_sign(move) < VALUE_ZERO
|
|
||||||
)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// Speculative prefetch as early as possible
|
// Speculative prefetch as early as possible
|
||||||
prefetch(TT.first_entry(pos.key_after(move)));
|
prefetch(TT.first_entry(pos.key_after(move)));
|
||||||
|
|
Loading…
Add table
Reference in a new issue