Merge Gary's bishop_pin patch
authorMarco Costalba <mcostalba@gmail.com>
Wed, 20 Feb 2013 11:19:19 +0000 (12:19 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Wed, 20 Feb 2013 11:39:09 +0000 (12:39 +0100)
Give a bonus if a bishop can pin a piece or can
give a discovered check through an x-ray attack.

Seems good after 24000 games at 15"+0.05 (single thread):

ELO: 12.30 +- 99%: 5.79 95%: 4.40 LOS: 100.00%
Total: 24000 W: 4931 L: 4082 D: 14987

bench: 4917064

1  2 
src/evaluate.cpp

@@@ -593,7 -583,12 +583,14 @@@ Value do_evaluate(const Position& pos, 
          // of threat evaluation must be done later when we have full attack info.
          if (ei.attackedBy[Them][PAWN] & s)
              score -= ThreatenedByPawnPenalty[Piece];
 -        else if (Piece == BISHOP && (PseudoAttacks[Piece][pos.king_square(Them)] & s)) {
 -             const Bitboard between = BetweenBB[s][pos.king_square(Them)] & pos.pieces();
 -             if (!more_than_one(between))
 +
++        // Otherwise give a bonus if we are a bishop and can pin a piece or
++        // can give a discovered check through an x-ray attack.
++        else if (    Piece == BISHOP
++                 && (PseudoAttacks[Piece][pos.king_square(Them)] & s)
++                 && !more_than_one(BetweenBB[s][pos.king_square(Them)] & pos.pieces()))
+                  score += BishopPinBonus;
 -        }
          // Bishop and knight outposts squares
          if (    (Piece == BISHOP || Piece == KNIGHT)
              && !(pos.pieces(Them, PAWN) & attack_span_mask(Us, s)))