From 97f5d19bdc0439f297ad11dd59997aba9342ce93 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Mon, 19 Apr 2010 09:06:34 +0200 Subject: [PATCH] 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 --- src/pawns.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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; } -- 2.30.2