|| (pos.pieces(PAWN) & (s + Up)))
bonus = bonus / 2;
- score += bonus - PassedFile * map_to_queenside(f);
+ score += bonus - PassedFile * std::min(f, ~f);
}
if (T)
b = theirPawns & file_bb(f);
int theirRank = b ? relative_rank(Us, frontmost_sq(Them, b)) : 0;
- int d = map_to_queenside(f);
+ int d = std::min(f, ~f);
bonus += make_score(ShelterStrength[d][ourRank], 0);
if (ourRank && (ourRank == theirRank - 1))
for (Square s = SQ_A1; s <= SQ_H8; ++s)
{
- File f = map_to_queenside(file_of(s));
+ File f = std::min(file_of(s), ~file_of(s));
psq[ pc][ s] = score + (type_of(pc) == PAWN ? PBonus[rank_of(s)][file_of(s)]
: Bonus[pc][rank_of(s)][f]);
psq[~pc][~s] = -psq[pc][s];
return Piece(pc ^ 8); // Swap color of piece B_KNIGHT -> W_KNIGHT
}
-inline File map_to_queenside(File f) {
- return std::min(f, File(FILE_H - f)); // Map files ABCDEFGH to files ABCDDCBA
-}
-
constexpr CastlingRights operator&(Color c, CastlingRights cr) {
return CastlingRights((c == WHITE ? WHITE_CASTLING : BLACK_CASTLING) & cr);
}