mirror of
https://github.com/sockspls/badfish
synced 2025-05-01 01:03:09 +00:00
Use frontmost_sq() and backmost_sq helpers
Should easier to read than the lsb() / msb() low level functions. No functional change.
This commit is contained in:
parent
5d90c149b5
commit
14f47c8ac6
3 changed files with 11 additions and 9 deletions
|
@ -319,9 +319,10 @@ extern Square pop_lsb(Bitboard* b);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// lsb() overload finds least significant bit relative to the given color
|
/// frontmost_sq() and backmost_sq() find the square corresponding to the
|
||||||
inline Square lsb(Color c, Bitboard b) {
|
/// most/least advanced bit relative to the given color.
|
||||||
return c == WHITE ? lsb(b) : msb(b);
|
|
||||||
}
|
inline Square frontmost_sq(Color c, Bitboard b) { return c == WHITE ? msb(b) : lsb(b); }
|
||||||
|
inline Square backmost_sq(Color c, Bitboard b) { return c == WHITE ? lsb(b) : msb(b); }
|
||||||
|
|
||||||
#endif // #ifndef BITBOARD_H_INCLUDED
|
#endif // #ifndef BITBOARD_H_INCLUDED
|
||||||
|
|
|
@ -443,11 +443,12 @@ ScaleFactor Endgame<KBPsK>::operator()(const Position& pos) const {
|
||||||
// The bishop has the wrong color, and the defending king is on the
|
// The bishop has the wrong color, and the defending king is on the
|
||||||
// file of the pawn(s) or the adjacent file. Find the rank of the
|
// file of the pawn(s) or the adjacent file. Find the rank of the
|
||||||
// frontmost pawn.
|
// frontmost pawn.
|
||||||
Rank rank = relative_rank(strongerSide, lsb(weakerSide, pawns));
|
Square pawnSq = frontmost_sq(strongerSide, pawns);
|
||||||
|
|
||||||
// If the defending king has distance 1 to the promotion square or
|
// If the defending king has distance 1 to the promotion square or
|
||||||
// is placed somewhere in front of the pawn, it's a draw.
|
// is placed somewhere in front of the pawn, it's a draw.
|
||||||
if ( square_distance(kingSq, queeningSq) <= 1
|
if ( square_distance(kingSq, queeningSq) <= 1
|
||||||
|| relative_rank(strongerSide, kingSq) >= rank)
|
|| relative_rank(weakerSide, kingSq) <= relative_rank(weakerSide, pawnSq))
|
||||||
return SCALE_FACTOR_DRAW;
|
return SCALE_FACTOR_DRAW;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -459,7 +460,7 @@ ScaleFactor Endgame<KBPsK>::operator()(const Position& pos) const {
|
||||||
&& pos.count<PAWN>(weakerSide) >= 1)
|
&& pos.count<PAWN>(weakerSide) >= 1)
|
||||||
{
|
{
|
||||||
// Get weakerSide pawn that is closest to home rank
|
// Get weakerSide pawn that is closest to home rank
|
||||||
Square weakerPawnSq = lsb(weakerSide, pos.pieces(weakerSide, PAWN));
|
Square weakerPawnSq = backmost_sq(weakerSide, pos.pieces(weakerSide, PAWN));
|
||||||
|
|
||||||
Square strongerKingSq = pos.king_square(strongerSide);
|
Square strongerKingSq = pos.king_square(strongerSide);
|
||||||
Square weakerKingSq = pos.king_square(weakerSide);
|
Square weakerKingSq = pos.king_square(weakerSide);
|
||||||
|
|
|
@ -229,11 +229,11 @@ Value Entry::shelter_storm(const Position& pos, Square ksq) {
|
||||||
for (int f = kf - 1; f <= kf + 1; f++)
|
for (int f = kf - 1; f <= kf + 1; f++)
|
||||||
{
|
{
|
||||||
b = ourPawns & FileBB[f];
|
b = ourPawns & FileBB[f];
|
||||||
rkUs = b ? relative_rank(Us, lsb(Us, b)) : RANK_1;
|
rkUs = b ? relative_rank(Us, backmost_sq(Us, b)) : RANK_1;
|
||||||
safety -= ShelterWeakness[rkUs];
|
safety -= ShelterWeakness[rkUs];
|
||||||
|
|
||||||
b = theirPawns & FileBB[f];
|
b = theirPawns & FileBB[f];
|
||||||
rkThem = b ? relative_rank(Us, lsb(Us, b)) : RANK_1;
|
rkThem = b ? relative_rank(Us, frontmost_sq(Them, b)) : RANK_1;
|
||||||
safety -= StormDanger[rkUs == RANK_1 ? 0 : rkThem == rkUs + 1 ? 2 : 1][rkThem];
|
safety -= StormDanger[rkUs == RANK_1 ? 0 : rkThem == rkUs + 1 ? 2 : 1][rkThem];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue