]> git.sesse.net Git - stockfish/blobdiff - src/pawns.cpp
Introduce PawnsQtyTable[] to refine pawn's drawish calculation
[stockfish] / src / pawns.cpp
index c6d390b32efb0ea9e9a22276605a0c688485a0ae..65bb3dbaa38d1dcc9224639f6d0c5bf4ae860313 100644 (file)
@@ -72,7 +72,10 @@ namespace {
 
   // UnpairedPawnsTable[] gives a score according to the number
   // of panws that do not have an enemy pawn in front of them.
-  const int UnpairedPawnsTable[8] = { 32, 48, 64, 80, 96, 112, 128, 128 };
+  const int UnpairedPawnsTable[16] = { 32, 48, 64, 80, 96, 112, 128, 128, 128 };
+
+  // PawnsQtyTable[] gives a score according to the number of panws
+  const int PawnsQtyTable[16] = { 16, 16, 16, 16, 16, 16, 16, 16, 16 };
 
   // Pawn storm tables for positions with opposite castling
   const int QStormTable[64] = {
@@ -347,7 +350,7 @@ Score PawnInfoTable::evaluate_pawns(const Position& pos, Bitboard ourPawns,
   }
 
   // Calculate a scale factor to be used to evaluate if position is drawish
-  pi->factor[Us] = UnpairedPawnsTable[unpairedPawnsNum];
+  pi->factor[Us] = UnpairedPawnsTable[unpairedPawnsNum] * PawnsQtyTable[pos.piece_count(Us, PAWN)] / 16;
 
   return value;
 }