const Value UnstoppablePawnValue = Value(0x500);
// Rooks and queens on the 7th rank (modified by Joona Kiiski)
- const Value MidgameRookOn7thBonus = Value(47);
- const Value EndgameRookOn7thBonus = Value(98);
- const Value MidgameQueenOn7thBonus = Value(27);
- const Value EndgameQueenOn7thBonus = Value(54);
+ const Value MidgameRookOn7thBonus = Value(43);
+ const Value EndgameRookOn7thBonus = Value(91);
+ const Value MidgameQueenOn7thBonus = Value(28);
+ const Value EndgameQueenOn7thBonus = Value(53);
// Rooks on open files (modified by Joona Kiiski)
- const Value RookOpenFileBonus = Value(43);
- const Value RookHalfOpenFileBonus = Value(19);
+ const Value RookOpenFileBonus = Value(42);
+ const Value RookHalfOpenFileBonus = Value(24);
// Penalty for rooks trapped inside a friendly king which has lost the
// right to castle.
EvalInfo &ei);
void evaluate_trapped_bishop_a1h1(const Position &pos, Square s, Color us,
EvalInfo &ei);
-
+ template<bool HasPopCnt>
void evaluate_space(const Position &p, Color us, EvalInfo &ei);
inline Value apply_weight(Value v, int w);
Value scale_by_game_phase(Value mv, Value ev, Phase ph, const ScaleFactor sf[]);
// Evaluate space for both sides
if (ei.mi->space_weight() > 0)
{
- evaluate_space(pos, WHITE, ei);
- evaluate_space(pos, BLACK, ei);
+ evaluate_space<HasPopCnt>(pos, WHITE, ei);
+ evaluate_space<HasPopCnt>(pos, BLACK, ei);
}
}
// squares one, two or three squares behind a friendly pawn are counted
// twice. Finally, the space bonus is scaled by a weight taken from the
// material hash table.
-
+ template<bool HasPopCnt>
void evaluate_space(const Position &pos, Color us, EvalInfo &ei) {
Color them = opposite_color(us);
behindFriendlyPawns |= (behindFriendlyPawns << 16);
}
- int space = count_1s_max_15(safeSquares)
- + count_1s_max_15(behindFriendlyPawns & safeSquares);
+ int space = count_1s_max_15<HasPopCnt>(safeSquares)
+ + count_1s_max_15<HasPopCnt>(behindFriendlyPawns & safeSquares);
ei.mgValue += Sign[us] * apply_weight(Value(space * ei.mi->space_weight()), WeightSpace);
}