From: Marco Costalba Date: Mon, 19 Apr 2010 07:06:34 +0000 (+0200) Subject: Introduce PawnsQtyTable[] to refine pawn's drawish calculation X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=97f5d19bdc0439f297ad11dd59997aba9342ce93;hp=fc89dbcab2616603ba6edbf6277c3edecfc3a64a Introduce PawnsQtyTable[] to refine pawn's drawish calculation Also fix dimension of UnpairedPawnsTable[] to accomodate the case in which we have 8 unpaired pawns, i.e. only one side has pawns, the other side has no pawns. No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/pawns.cpp b/src/pawns.cpp index c6d390b3..65bb3dba 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -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; }