From: Gary Linscott Date: Tue, 19 Feb 2013 15:31:52 +0000 (-0500) Subject: Merge branch 'master' into bishop_pin_clop X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=ea4e22be1da1ccbf316d27f2eb3b14d0e13388e4;hp=-c Merge branch 'master' into bishop_pin_clop --- ea4e22be1da1ccbf316d27f2eb3b14d0e13388e4 diff --combined src/evaluate.cpp index e17a3e34,8192536f..02810b78 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@@ -150,8 -150,6 +150,8 @@@ namespace #undef S + const Score BishopPinBonus = make_score(66, 11); + // Bonus for having the side to move (modified by Joona Kiiski) const Score Tempo = make_score(24, 11); @@@ -498,7 -496,7 +498,7 @@@ Value do_evaluate(const Position& pos, // Init king safety tables only if we are going to use them if ( pos.piece_count(Us, QUEEN) - && pos.non_pawn_material(Us) >= QueenValueMg + RookValueMg) + && pos.non_pawn_material(Us) > QueenValueMg + PawnValueMg) { ei.kingRing[Them] = (b | (Us == WHITE ? b >> 8 : b << 8)); b &= ei.attackedBy[Us][PAWN]; @@@ -579,15 -577,22 +579,15 @@@ mobility += MobilityBonus[Piece][mob]; - // Add a bonus if a slider is pinning an enemy piece - if ( (Piece == BISHOP || Piece == ROOK || Piece == QUEEN) - && (PseudoAttacks[Piece][pos.king_square(Them)] & s)) - { - b = BetweenBB[s][pos.king_square(Them)] & pos.pieces(); - - assert(b); - - if (!more_than_one(b) && (b & pos.pieces(Them))) - score += ThreatBonus[Piece][type_of(pos.piece_on(lsb(b)))]; - } - // Decrease score if we are attacked by an enemy pawn. Remaining part // 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)) + score += BishopPinBonus; + } // Bishop and knight outposts squares if ( (Piece == BISHOP || Piece == KNIGHT) @@@ -694,7 -699,8 +694,7 @@@ & ~ei.attackedBy[Them][0]; if (undefendedMinors) - score += more_than_one(undefendedMinors) ? UndefendedMinorPenalty * 2 - : UndefendedMinorPenalty; + score += UndefendedMinorPenalty; // Enemy pieces not defended by a pawn and under our attack weakEnemies = pos.pieces(Them)