author Marco Costalba Mon, 26 Jul 2010 05:07:34 +0000 (06:07 +0100) committer Marco Costalba Mon, 26 Jul 2010 05:10:01 +0000 (06:10 +0100)
The one in evaluate_passed_pawns() is just a micro
optimization, the other in evaluate_unstoppable_pawns()
is indeed a fix, although almost unmeasurable in real
games.

Bugs report and fixes by Marek Kwiatkowski

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
 src/evaluate.cpp patch | blob | history

index 0249ee3b2a35c24071feb935069ed2e106926e59..74e70fa2530cf6903b553e892ca95188b8484f65 100644 (file)
@@ -821,7 +821,7 @@ namespace {
// add all X-ray attacks by the rook or queen. Otherwise consider only
// the squares in the pawn's path attacked or occupied by the enemy.
if (   (squares_behind(Us, s) & pos.pieces(ROOK, QUEEN, Them))
-                    && (squares_behind(Us, s) & pos.pieces(ROOK, QUEEN, Them) & pos.attacks_from<QUEEN>(s)))
+                    && (squares_behind(Us, s) & pos.pieces(ROOK, QUEEN, Them) & pos.attacks_from<ROOK>(s)))
unsafeSquares = squaresToQueen;
else
unsafeSquares = squaresToQueen & (ei.attacked_by(Them) | pos.pieces_of_color(Them));
@@ -902,7 +902,7 @@ namespace {

if (d < 0 || pathDefended)
{
-                int mtg = RANK_8 - relative_rank(c, s);
+                int mtg = RANK_8 - relative_rank(c, s) - int(relative_rank(c, s) == RANK_2);
int blockerCount = count_1s_max_15(squares_in_front_of(c, s) & pos.occupied_squares());
mtg += blockerCount;
d += blockerCount;