mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Templetize extension() function
No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
f010685136
commit
b4870595a5
1 changed files with 17 additions and 15 deletions
|
@ -282,6 +282,9 @@ namespace {
|
||||||
template <NodeType PvNode>
|
template <NodeType PvNode>
|
||||||
Value search(Position& pos, SearchStack ss[], Value alpha, Value beta, Depth depth, int ply, bool allowNullmove, int threadID, Move excludedMove = MOVE_NONE);
|
Value search(Position& pos, SearchStack ss[], Value alpha, Value beta, Depth depth, int ply, bool allowNullmove, int threadID, Move excludedMove = MOVE_NONE);
|
||||||
|
|
||||||
|
template <NodeType PvNode>
|
||||||
|
Depth extension(const Position& pos, Move m, bool captureOrPromotion, bool moveIsCheck, bool singleEvasion, bool mateThreat, bool* dangerous);
|
||||||
|
|
||||||
Value qsearch(Position& pos, SearchStack ss[], Value alpha, Value beta, Depth depth, int ply, int threadID);
|
Value qsearch(Position& pos, SearchStack ss[], Value alpha, Value beta, Depth depth, int ply, int threadID);
|
||||||
void sp_search(SplitPoint* sp, int threadID);
|
void sp_search(SplitPoint* sp, int threadID);
|
||||||
void sp_search_pv(SplitPoint* sp, int threadID);
|
void sp_search_pv(SplitPoint* sp, int threadID);
|
||||||
|
@ -291,7 +294,6 @@ namespace {
|
||||||
bool connected_moves(const Position& pos, Move m1, Move m2);
|
bool connected_moves(const Position& pos, Move m1, Move m2);
|
||||||
bool value_is_mate(Value value);
|
bool value_is_mate(Value value);
|
||||||
bool move_is_killer(Move m, const SearchStack& ss);
|
bool move_is_killer(Move m, const SearchStack& ss);
|
||||||
Depth extension(const Position&, Move, bool, bool, bool, bool, bool, bool*);
|
|
||||||
bool ok_to_do_nullmove(const Position& pos);
|
bool ok_to_do_nullmove(const Position& pos);
|
||||||
bool ok_to_prune(const Position& pos, Move m, Move threat);
|
bool ok_to_prune(const Position& pos, Move m, Move threat);
|
||||||
bool ok_to_use_TT(const TTEntry* tte, Depth depth, Value beta, int ply);
|
bool ok_to_use_TT(const TTEntry* tte, Depth depth, Value beta, int ply);
|
||||||
|
@ -844,7 +846,7 @@ namespace {
|
||||||
|
|
||||||
// Step 11. Decide the new search depth
|
// Step 11. Decide the new search depth
|
||||||
depth = (Iteration - 2) * OnePly + InitialDepth;
|
depth = (Iteration - 2) * OnePly + InitialDepth;
|
||||||
ext = extension(pos, move, true, captureOrPromotion, moveIsCheck, false, false, &dangerous);
|
ext = extension<PV>(pos, move, captureOrPromotion, moveIsCheck, false, false, &dangerous);
|
||||||
newDepth = depth + ext;
|
newDepth = depth + ext;
|
||||||
|
|
||||||
// Step 12. Futility pruning (omitted at root)
|
// Step 12. Futility pruning (omitted at root)
|
||||||
|
@ -1240,7 +1242,7 @@ namespace {
|
||||||
captureOrPromotion = pos.move_is_capture_or_promotion(move);
|
captureOrPromotion = pos.move_is_capture_or_promotion(move);
|
||||||
|
|
||||||
// Step 11. Decide the new search depth
|
// Step 11. Decide the new search depth
|
||||||
ext = extension(pos, move, PvNode, captureOrPromotion, moveIsCheck, singleEvasion, mateThreat, &dangerous);
|
ext = extension<PvNode>(pos, move, captureOrPromotion, moveIsCheck, singleEvasion, mateThreat, &dangerous);
|
||||||
|
|
||||||
// Singular extension search. We extend the TT move if its value is much better than
|
// Singular extension search. We extend the TT move if its value is much better than
|
||||||
// its siblings. To verify this we do a reduced search on all the other moves but the
|
// its siblings. To verify this we do a reduced search on all the other moves but the
|
||||||
|
@ -1635,7 +1637,7 @@ namespace {
|
||||||
captureOrPromotion = pos.move_is_capture_or_promotion(move);
|
captureOrPromotion = pos.move_is_capture_or_promotion(move);
|
||||||
|
|
||||||
// Step 11. Decide the new search depth
|
// Step 11. Decide the new search depth
|
||||||
ext = extension(pos, move, false, captureOrPromotion, moveIsCheck, false, sp->mateThreat, &dangerous);
|
ext = extension<NonPV>(pos, move, captureOrPromotion, moveIsCheck, false, sp->mateThreat, &dangerous);
|
||||||
newDepth = sp->depth - OnePly + ext;
|
newDepth = sp->depth - OnePly + ext;
|
||||||
|
|
||||||
// Update current move
|
// Update current move
|
||||||
|
@ -1768,7 +1770,7 @@ namespace {
|
||||||
captureOrPromotion = pos.move_is_capture_or_promotion(move);
|
captureOrPromotion = pos.move_is_capture_or_promotion(move);
|
||||||
|
|
||||||
// Step 11. Decide the new search depth
|
// Step 11. Decide the new search depth
|
||||||
ext = extension(pos, move, true, captureOrPromotion, moveIsCheck, false, sp->mateThreat, &dangerous);
|
ext = extension<PV>(pos, move, captureOrPromotion, moveIsCheck, false, sp->mateThreat, &dangerous);
|
||||||
newDepth = sp->depth - OnePly + ext;
|
newDepth = sp->depth - OnePly + ext;
|
||||||
|
|
||||||
// Update current move
|
// Update current move
|
||||||
|
@ -2002,9 +2004,9 @@ namespace {
|
||||||
// any case are marked as 'dangerous'. Note that also if a move is not
|
// any case are marked as 'dangerous'. Note that also if a move is not
|
||||||
// extended, as example because the corresponding UCI option is set to zero,
|
// extended, as example because the corresponding UCI option is set to zero,
|
||||||
// the move is marked as 'dangerous' so, at least, we avoid to prune it.
|
// the move is marked as 'dangerous' so, at least, we avoid to prune it.
|
||||||
|
template <NodeType PvNode>
|
||||||
Depth extension(const Position& pos, Move m, bool pvNode, bool captureOrPromotion,
|
Depth extension(const Position& pos, Move m, bool captureOrPromotion, bool moveIsCheck,
|
||||||
bool moveIsCheck, bool singleEvasion, bool mateThreat, bool* dangerous) {
|
bool singleEvasion, bool mateThreat, bool* dangerous) {
|
||||||
|
|
||||||
assert(m != MOVE_NONE);
|
assert(m != MOVE_NONE);
|
||||||
|
|
||||||
|
@ -2014,13 +2016,13 @@ namespace {
|
||||||
if (*dangerous)
|
if (*dangerous)
|
||||||
{
|
{
|
||||||
if (moveIsCheck)
|
if (moveIsCheck)
|
||||||
result += CheckExtension[pvNode];
|
result += CheckExtension[PvNode];
|
||||||
|
|
||||||
if (singleEvasion)
|
if (singleEvasion)
|
||||||
result += SingleEvasionExtension[pvNode];
|
result += SingleEvasionExtension[PvNode];
|
||||||
|
|
||||||
if (mateThreat)
|
if (mateThreat)
|
||||||
result += MateThreatExtension[pvNode];
|
result += MateThreatExtension[PvNode];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pos.type_of_piece_on(move_from(m)) == PAWN)
|
if (pos.type_of_piece_on(move_from(m)) == PAWN)
|
||||||
|
@ -2028,12 +2030,12 @@ namespace {
|
||||||
Color c = pos.side_to_move();
|
Color c = pos.side_to_move();
|
||||||
if (relative_rank(c, move_to(m)) == RANK_7)
|
if (relative_rank(c, move_to(m)) == RANK_7)
|
||||||
{
|
{
|
||||||
result += PawnPushTo7thExtension[pvNode];
|
result += PawnPushTo7thExtension[PvNode];
|
||||||
*dangerous = true;
|
*dangerous = true;
|
||||||
}
|
}
|
||||||
if (pos.pawn_is_passed(c, move_to(m)))
|
if (pos.pawn_is_passed(c, move_to(m)))
|
||||||
{
|
{
|
||||||
result += PassedPawnExtension[pvNode];
|
result += PassedPawnExtension[PvNode];
|
||||||
*dangerous = true;
|
*dangerous = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2045,11 +2047,11 @@ namespace {
|
||||||
&& !move_is_promotion(m)
|
&& !move_is_promotion(m)
|
||||||
&& !move_is_ep(m))
|
&& !move_is_ep(m))
|
||||||
{
|
{
|
||||||
result += PawnEndgameExtension[pvNode];
|
result += PawnEndgameExtension[PvNode];
|
||||||
*dangerous = true;
|
*dangerous = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( pvNode
|
if ( PvNode
|
||||||
&& captureOrPromotion
|
&& captureOrPromotion
|
||||||
&& pos.type_of_piece_on(move_to(m)) != PAWN
|
&& pos.type_of_piece_on(move_to(m)) != PAWN
|
||||||
&& pos.see_sign(m) >= 0)
|
&& pos.see_sign(m) >= 0)
|
||||||
|
|
Loading…
Add table
Reference in a new issue