]> git.sesse.net Git - stockfish/blobdiff - src/pawns.cpp
Introduce PawnsQtyTable[] to refine pawn's drawish calculation
[stockfish] / src / pawns.cpp
index b381b5c4abc3f567cec33c1b7a68964c70e65adf..65bb3dbaa38d1dcc9224639f6d0c5bf4ae860313 100644 (file)
@@ -72,10 +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] = {
-    SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL,
-    SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL
-  };
+  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] = {
@@ -350,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;
 }