X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmaterial.cpp;h=073bef81d98e968da6f2bc8e38635a1bdc5df9a3;hp=b106892bcfa83fdbae9ec553c03871a194224c32;hb=55df3fa2d7631ed67e46f9433aa7f3a71c18e5e7;hpb=b9bc6e823f061753419e563c4f923e60bd8c6193 diff --git a/src/material.cpp b/src/material.cpp index b106892b..073bef81 100644 --- a/src/material.cpp +++ b/src/material.cpp @@ -40,11 +40,11 @@ namespace { const int LinearCoefficients[6] = { 1617, -162, -1172, -190, 105, 26 }; - const int QuadraticCoefficientsSameColor[][8] = { + const int QuadraticCoefficientsSameColor[][PIECE_TYPE_NB] = { { 7, 7, 7, 7, 7, 7 }, { 39, 2, 7, 7, 7, 7 }, { 35, 271, -4, 7, 7, 7 }, { 7, 25, 4, 7, 7, 7 }, { -27, -2, 46, 100, 56, 7 }, { 58, 29, 83, 148, -3, -25 } }; - const int QuadraticCoefficientsOppositeColor[][8] = { + const int QuadraticCoefficientsOppositeColor[][PIECE_TYPE_NB] = { { 41, 41, 41, 41, 41, 41 }, { 37, 41, 41, 41, 41, 41 }, { 10, 62, 41, 41, 41, 41 }, { 57, 64, 39, 41, 41, 41 }, { 50, 40, 23, -22, 41, 41 }, { 106, 101, 3, 151, 171, 41 } }; @@ -63,11 +63,11 @@ namespace { const Color Them = (Us == WHITE ? BLACK : WHITE); return pos.non_pawn_material(Them) == VALUE_ZERO && pos.piece_count(Them, PAWN) == 0 - && pos.non_pawn_material(Us) >= RookValueMidgame; + && pos.non_pawn_material(Us) >= RookValueMg; } template bool is_KBPsKs(const Position& pos) { - return pos.non_pawn_material(Us) == BishopValueMidgame + return pos.non_pawn_material(Us) == BishopValueMg && pos.piece_count(Us, BISHOP) == 1 && pos.piece_count(Us, PAWN) >= 1; } @@ -75,7 +75,7 @@ namespace { template bool is_KQKRPs(const Position& pos) { const Color Them = (Us == WHITE ? BLACK : WHITE); return pos.piece_count(Us, PAWN) == 0 - && pos.non_pawn_material(Us) == QueenValueMidgame + && pos.non_pawn_material(Us) == QueenValueMg && pos.piece_count(Us, QUEEN) == 1 && pos.piece_count(Them, ROOK) == 1 && pos.piece_count(Them, PAWN) >= 1; @@ -191,20 +191,20 @@ MaterialEntry* MaterialTable::probe(const Position& pos) { } // No pawns makes it difficult to win, even with a material advantage - if (pos.piece_count(WHITE, PAWN) == 0 && npm_w - npm_b <= BishopValueMidgame) + if (pos.piece_count(WHITE, PAWN) == 0 && npm_w - npm_b <= BishopValueMg) { e->factor[WHITE] = (uint8_t) - (npm_w == npm_b || npm_w < RookValueMidgame ? 0 : NoPawnsSF[std::min(pos.piece_count(WHITE, BISHOP), 2)]); + (npm_w == npm_b || npm_w < RookValueMg ? 0 : NoPawnsSF[std::min(pos.piece_count(WHITE, BISHOP), 2)]); } - if (pos.piece_count(BLACK, PAWN) == 0 && npm_b - npm_w <= BishopValueMidgame) + if (pos.piece_count(BLACK, PAWN) == 0 && npm_b - npm_w <= BishopValueMg) { e->factor[BLACK] = (uint8_t) - (npm_w == npm_b || npm_b < RookValueMidgame ? 0 : NoPawnsSF[std::min(pos.piece_count(BLACK, BISHOP), 2)]); + (npm_w == npm_b || npm_b < RookValueMg ? 0 : NoPawnsSF[std::min(pos.piece_count(BLACK, BISHOP), 2)]); } // Compute the space weight - if (npm_w + npm_b >= 2 * QueenValueMidgame + 4 * RookValueMidgame + 2 * KnightValueMidgame) + if (npm_w + npm_b >= 2 * QueenValueMg + 4 * RookValueMg + 2 * KnightValueMg) { int minorPieceCount = pos.piece_count(WHITE, KNIGHT) + pos.piece_count(WHITE, BISHOP) + pos.piece_count(BLACK, KNIGHT) + pos.piece_count(BLACK, BISHOP); @@ -215,7 +215,7 @@ MaterialEntry* MaterialTable::probe(const Position& pos) { // Evaluate the material imbalance. We use PIECE_TYPE_NONE as a place holder // for the bishop pair "extended piece", this allow us to be more flexible // in defining bishop pair bonuses. - const int pieceCount[2][8] = { + const int pieceCount[COLOR_NB][PIECE_TYPE_NB] = { { pos.piece_count(WHITE, BISHOP) > 1, pos.piece_count(WHITE, PAWN), pos.piece_count(WHITE, KNIGHT), pos.piece_count(WHITE, BISHOP) , pos.piece_count(WHITE, ROOK), pos.piece_count(WHITE, QUEEN) }, { pos.piece_count(BLACK, BISHOP) > 1, pos.piece_count(BLACK, PAWN), pos.piece_count(BLACK, KNIGHT), @@ -230,7 +230,7 @@ MaterialEntry* MaterialTable::probe(const Position& pos) { /// piece type for both colors. template -int MaterialTable::imbalance(const int pieceCount[][8]) { +int MaterialTable::imbalance(const int pieceCount[][PIECE_TYPE_NB]) { const Color Them = (Us == WHITE ? BLACK : WHITE);