constexpr int QuadraticOurs[][PIECE_TYPE_NB] = {
// OUR PIECES
// pair pawn knight bishop rook queen
- {1667 }, // Bishop pair
+ {1443 }, // Bishop pair
{ 40, 0 }, // Pawn
- { 32, 255, -3 }, // Knight OUR PIECES
+ { 32, 255, -67 }, // Knight OUR PIECES
{ 0, 104, 4, 0 }, // Bishop
- { -26, -2, 47, 105, -149 }, // Rook
+ { -26, -2, 47, 105, -221 }, // Rook
{-189, 24, 117, 133, -134, -10 } // Queen
};
{ 97, 100, -42, 137, 268, 0 } // Queen
};
+ constexpr int PawnCount[] = { 0, 304, 144, -320, -560, -704, -672, -464, -320 };
+
// Endgame evaluation and scaling functions are accessed directly and not through
// the function maps because they correspond to more than one material hash key.
Endgame<KXK> EvaluateKXK[] = { Endgame<KXK>(WHITE), Endgame<KXK>(BLACK) };
constexpr Color Them = (Us == WHITE ? BLACK : WHITE);
- int bonus = 0;
+ int bonus = PawnCount[pieceCount[Us][PAWN]];
// Second-degree polynomial material imbalance, by Tord Romstad
for (int pt1 = NO_PIECE_TYPE; pt1 <= QUEEN; ++pt1)
VALUE_MATED_IN_MAX_PLY = -VALUE_MATE + 2 * MAX_PLY,
PawnValueMg = 175, PawnValueEg = 240,
- KnightValueMg = 764, KnightValueEg = 848,
- BishopValueMg = 815, BishopValueEg = 905,
- RookValueMg = 1282, RookValueEg = 1373,
- QueenValueMg = 2500, QueenValueEg = 2670,
+ KnightValueMg = 784, KnightValueEg = 868,
+ BishopValueMg = 831, BishopValueEg = 919,
+ RookValueMg = 1286, RookValueEg = 1378,
+ QueenValueMg = 2527, QueenValueEg = 2697,
MidgameLimit = 15258, EndgameLimit = 3915
};