Use more_than_one() instead of single_bit()

It is more correct given what the function does. In
particular single_bit() returns true also in case of
empty bitboards.

Of course also the usual renaming while there :-)

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba
2012-04-14 09:16:34 +01:00
parent 25a9b601b2
commit f59323b56a
8 changed files with 67 additions and 68 deletions

View File

@@ -581,7 +581,7 @@ Value do_evaluate(const Position& pos, Value& margin) {
assert(b);
if (single_bit(b) && (b & pos.pieces(Them)))
if (!more_than_one(b) && (b & pos.pieces(Them)))
score += ThreatBonus[Piece][type_of(pos.piece_on(first_1(b)))];
}
@@ -689,8 +689,8 @@ Value do_evaluate(const Position& pos, Value& margin) {
& ~ei.attackedBy[Them][0];
if (undefendedMinors)
score += single_bit(undefendedMinors) ? UndefendedMinorPenalty
: UndefendedMinorPenalty * 2;
score += more_than_one(undefendedMinors) ? UndefendedMinorPenalty * 2
: UndefendedMinorPenalty;
// Enemy pieces not defended by a pawn and under our attack
weakEnemies = pos.pieces(Them)
@@ -896,14 +896,14 @@ Value do_evaluate(const Position& pos, Value& margin) {
// If the pawn is free to advance, increase bonus
if (pos.square_empty(blockSq))
{
squaresToQueen = squares_in_front_of(Us, s);
squaresToQueen = forward_bb(Us, s);
defendedSquares = squaresToQueen & ei.attackedBy[Us][0];
// If there is an enemy rook or queen attacking the pawn from behind,
// 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_in_front_of(Them, s) & pos.pieces(ROOK, QUEEN, Them))
&& (squares_in_front_of(Them, s) & pos.pieces(ROOK, QUEEN, Them) & pos.attacks_from<ROOK>(s)))
if ( (forward_bb(Them, s) & pos.pieces(ROOK, QUEEN, Them))
&& (forward_bb(Them, s) & pos.pieces(ROOK, QUEEN, Them) & pos.attacks_from<ROOK>(s)))
unsafeSquares = squaresToQueen;
else
unsafeSquares = squaresToQueen & (ei.attackedBy[Them][0] | pos.pieces(Them));
@@ -978,7 +978,7 @@ Value do_evaluate(const Position& pos, Value& margin) {
{
s = pop_1st_bit(&b);
queeningSquare = relative_square(c, make_square(file_of(s), RANK_8));
queeningPath = squares_in_front_of(c, s);
queeningPath = forward_bb(c, s);
// Compute plies to queening and check direct advancement
movesToGo = rank_distance(s, queeningSquare) - int(relative_rank(c, s) == RANK_2);
@@ -1026,7 +1026,7 @@ Value do_evaluate(const Position& pos, Value& margin) {
// Check if (without even considering any obstacles) we're too far away or doubled
if ( pliesToQueen[winnerSide] + 3 <= pliesToGo
|| (squares_in_front_of(loserSide, s) & pos.pieces(PAWN, loserSide)))
|| (forward_bb(loserSide, s) & pos.pieces(PAWN, loserSide)))
candidates ^= s;
}
@@ -1050,7 +1050,7 @@ Value do_evaluate(const Position& pos, Value& margin) {
// Generate list of blocking pawns and supporters
supporters = adjacent_files_bb(file_of(s)) & candidates;
opposed = squares_in_front_of(loserSide, s) & pos.pieces(PAWN, winnerSide);
opposed = forward_bb(loserSide, s) & pos.pieces(PAWN, winnerSide);
blockers = passed_pawn_mask(loserSide, s) & pos.pieces(PAWN, winnerSide);
assert(blockers);