X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=6f6141bafd37e0c3f0701376cd47f8a85523e107;hp=d090f4042177a04cc9975552959930a75f183d9a;hb=ce159b16b9483f83b9e96ac6bf3d6e2ba7e5619c;hpb=e72b93e44fb95af6b3669e23a8fcd7702ea09ec1 diff --git a/src/evaluate.cpp b/src/evaluate.cpp index d090f404..6f6141ba 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -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(s))) + if ( (forward_bb(Them, s) & pos.pieces(ROOK, QUEEN, Them)) + && (forward_bb(Them, s) & pos.pieces(ROOK, QUEEN, Them) & pos.attacks_from(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);