From: Fabian Fichter Date: Sat, 2 Mar 2019 13:49:49 +0000 (+0100) Subject: Merge official-stockfish/master X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=99db2079d74787e39cc84bf97bc2f8acb8a70a5d;p=fairystockfish.git Merge official-stockfish/master bench: 3253645 --- 99db2079d74787e39cc84bf97bc2f8acb8a70a5d diff --cc src/bitboard.h index 2ec32ee,f1db634..d9642b8 --- a/src/bitboard.h +++ b/src/bitboard.h @@@ -178,14 -135,10 +178,17 @@@ constexpr bool more_than_one(Bitboard b return b & (b - 1); } - +/// board_size_bb() returns a bitboard representing all the squares +/// on a board with given size. + +inline Bitboard board_size_bb(File f, Rank r) { + return BoardSizeBB[f][r]; +} + + inline bool opposite_colors(Square s1, Square s2) { + + return bool(DarkSquares & s1) != bool(DarkSquares & s2); + } /// rank_bb() and file_bb() return a bitboard representing all the squares on /// the given file or rank. diff --cc src/evaluate.cpp index 634dda3,d623959..2af32c5 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@@ -333,10 -309,10 +332,10 @@@ namespace attackedBy[Us][Pt] |= b; attackedBy[Us][ALL_PIECES] |= b; - if (b & kingRing[Them]) + if (b & kingRing[Them] & ~double_pawn_attacks_bb(pos.pieces(Them, PAWN))) { kingAttackersCount[Us]++; - kingAttackersWeight[Us] += KingAttackWeights[Pt]; + kingAttackersWeight[Us] += KingAttackWeights[std::min(int(Pt), QUEEN + 1)]; kingAttacksCount[Us] += popcount(b & attackedBy[Them][KING]); } diff --cc src/types.h index 4ebfa6b,c4c2752..03b848e --- a/src/types.h +++ b/src/types.h @@@ -503,30 -398,21 +503,21 @@@ constexpr File file_of(Square s) } constexpr Rank rank_of(Square s) { - return Rank(s >> 3); + return Rank(s / FILE_NB); } -constexpr Square relative_square(Color c, Square s) { - return Square(s ^ (c * 56)); +constexpr Rank relative_rank(Color c, Rank r, Rank maxRank = RANK_8) { + return Rank(c == WHITE ? r : maxRank - r); } -constexpr Rank relative_rank(Color c, Rank r) { - return Rank(r ^ (c * 7)); +constexpr Rank relative_rank(Color c, Square s, Rank maxRank = RANK_8) { + return relative_rank(c, rank_of(s), maxRank); } -constexpr Rank relative_rank(Color c, Square s) { - return relative_rank(c, rank_of(s)); +constexpr Square relative_square(Color c, Square s, Rank maxRank = RANK_8) { + return make_square(file_of(s), relative_rank(c, s, maxRank)); } - inline bool opposite_colors(Square s1, Square s2) { - #ifdef LARGEBOARDS - return int(s1 - (s1 % FILE_NB)) ^ int(s2 - (s2 % FILE_NB)); - #else - int s = int(s1) ^ int(s2); - return ((s >> 3) ^ s) & 1; - #endif - } - constexpr Direction pawn_push(Color c) { return c == WHITE ? NORTH : SOUTH; }