mirror of
https://github.com/sockspls/badfish
synced 2025-05-03 10:09:35 +00:00
Simplify distance (#2109)
Only called with Squares as argument, so remove unused variants. As this is just syntax changes, only verified bench at high depth. No functional change.
This commit is contained in:
parent
c4fc00ec49
commit
f21b503982
2 changed files with 5 additions and 9 deletions
|
@ -237,15 +237,13 @@ inline bool aligned(Square s1, Square s2, Square s3) {
|
||||||
|
|
||||||
|
|
||||||
/// distance() functions return the distance between x and y, defined as the
|
/// distance() functions return the distance between x and y, defined as the
|
||||||
/// number of steps for a king in x to reach y. Works with squares, ranks, files.
|
/// number of steps for a king in x to reach y.
|
||||||
|
|
||||||
template<typename T> inline int distance(T x, T y) { return std::abs(x - y); }
|
template<typename T1 = Square> inline int distance(Square x, Square y);
|
||||||
|
template<> inline int distance<File>(Square x, Square y) { return std::abs(file_of(x) - file_of(y)); }
|
||||||
|
template<> inline int distance<Rank>(Square x, Square y) { return std::abs(rank_of(x) - rank_of(y)); }
|
||||||
template<> inline int distance<Square>(Square x, Square y) { return SquareDistance[x][y]; }
|
template<> inline int distance<Square>(Square x, Square y) { return SquareDistance[x][y]; }
|
||||||
|
|
||||||
template<typename T1, typename T2> inline int distance(T2 x, T2 y);
|
|
||||||
template<> inline int distance<File>(Square x, Square y) { return distance(file_of(x), file_of(y)); }
|
|
||||||
template<> inline int distance<Rank>(Square x, Square y) { return distance(rank_of(x), rank_of(y)); }
|
|
||||||
|
|
||||||
template<class T> constexpr const T& clamp(const T& v, const T& lo, const T& hi) {
|
template<class T> constexpr const T& clamp(const T& v, const T& lo, const T& hi) {
|
||||||
return v < lo ? lo : v > hi ? hi : v;
|
return v < lo ? lo : v > hi ? hi : v;
|
||||||
}
|
}
|
||||||
|
|
|
@ -635,8 +635,6 @@ ScaleFactor Endgame<KBPPKB>::operator()(const Position& pos) const {
|
||||||
Square ksq = pos.square<KING>(weakSide);
|
Square ksq = pos.square<KING>(weakSide);
|
||||||
Square psq1 = pos.squares<PAWN>(strongSide)[0];
|
Square psq1 = pos.squares<PAWN>(strongSide)[0];
|
||||||
Square psq2 = pos.squares<PAWN>(strongSide)[1];
|
Square psq2 = pos.squares<PAWN>(strongSide)[1];
|
||||||
Rank r1 = rank_of(psq1);
|
|
||||||
Rank r2 = rank_of(psq2);
|
|
||||||
Square blockSq1, blockSq2;
|
Square blockSq1, blockSq2;
|
||||||
|
|
||||||
if (relative_rank(strongSide, psq1) > relative_rank(strongSide, psq2))
|
if (relative_rank(strongSide, psq1) > relative_rank(strongSide, psq2))
|
||||||
|
@ -670,7 +668,7 @@ ScaleFactor Endgame<KBPPKB>::operator()(const Position& pos) const {
|
||||||
&& opposite_colors(ksq, wbsq)
|
&& opposite_colors(ksq, wbsq)
|
||||||
&& ( bbsq == blockSq2
|
&& ( bbsq == blockSq2
|
||||||
|| (pos.attacks_from<BISHOP>(blockSq2) & pos.pieces(weakSide, BISHOP))
|
|| (pos.attacks_from<BISHOP>(blockSq2) & pos.pieces(weakSide, BISHOP))
|
||||||
|| distance(r1, r2) >= 2))
|
|| distance<Rank>(psq1, psq2) >= 2))
|
||||||
return SCALE_FACTOR_DRAW;
|
return SCALE_FACTOR_DRAW;
|
||||||
|
|
||||||
else if ( ksq == blockSq2
|
else if ( ksq == blockSq2
|
||||||
|
|
Loading…
Add table
Reference in a new issue