X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=40c98a982d897af633ef4f8315f771f8d7229bbc;hp=69f0e4c27fa75e4caff8b23db06d911e23819de6;hb=55df3fa2d7631ed67e46f9433aa7f3a71c18e5e7;hpb=cedbd3332a4a1574e701bda098a9df1153e299c6 diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 69f0e4c2..40c98a98 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -42,7 +42,7 @@ namespace { // attackedBy[color][piece type] is a bitboard representing all squares // attacked by a given color and piece type, attackedBy[color][0] contains // all squares attacked by the given color. - Bitboard attackedBy[2][8]; + Bitboard attackedBy[COLOR_NB][PIECE_TYPE_NB]; // kingRing[color] is the zone around the king which is considered // by the king safety evaluation. This consists of the squares directly @@ -50,25 +50,25 @@ namespace { // squares two ranks in front of the king. For instance, if black's king // is on g8, kingRing[BLACK] is a bitboard containing the squares f8, h8, // f7, g7, h7, f6, g6 and h6. - Bitboard kingRing[2]; + Bitboard kingRing[COLOR_NB]; // kingAttackersCount[color] is the number of pieces of the given color // which attack a square in the kingRing of the enemy king. - int kingAttackersCount[2]; + int kingAttackersCount[COLOR_NB]; // kingAttackersWeight[color] is the sum of the "weight" of the pieces of the // given color which attack a square in the kingRing of the enemy king. The // weights of the individual piece types are given by the variables // QueenAttackWeight, RookAttackWeight, BishopAttackWeight and // KnightAttackWeight in evaluate.cpp - int kingAttackersWeight[2]; + int kingAttackersWeight[COLOR_NB]; // kingAdjacentZoneAttacksCount[color] is the number of attacks to squares // directly adjacent to the king of the given color. Pieces which attack // more than one square are counted multiple times. For instance, if black's // king is on g8 and there's a white knight on g5, this knight adds // 2 to kingAdjacentZoneAttacksCount[BLACK]. - int kingAdjacentZoneAttacksCount[2]; + int kingAdjacentZoneAttacksCount[COLOR_NB]; }; // Evaluation grain size, must be a power of 2 @@ -114,7 +114,7 @@ namespace { // OutpostBonus[PieceType][Square] contains outpost bonuses of knights and // bishops, indexed by piece type and square (from white's point of view). - const Value OutpostBonus[][64] = { + const Value OutpostBonus[][SQUARE_NB] = { { // A B C D E F G H V(0), V(0), V(0), V(0), V(0), V(0), V(0), V(0), // Knights @@ -134,7 +134,7 @@ namespace { // ThreatBonus[attacking][attacked] contains threat bonuses according to // which piece type attacks which one. - const Score ThreatBonus[][8] = { + const Score ThreatBonus[][PIECE_TYPE_NB] = { {}, {}, { S(0, 0), S( 7, 39), S( 0, 0), S(24, 49), S(41,100), S(41,100) }, // KNIGHT { S(0, 0), S( 7, 39), S(24, 49), S( 0, 0), S(41,100), S(41,100) }, // BISHOP @@ -221,11 +221,11 @@ namespace { // KingDangerTable[Color][attackUnits] contains the actual king danger // weighted scores, indexed by color and by a calculated integer number. - Score KingDangerTable[2][128]; + Score KingDangerTable[COLOR_NB][128]; // TracedTerms[Color][PieceType || TracedType] contains a breakdown of the // evaluation terms, used when tracing. - Score TracedScores[2][16]; + Score TracedScores[COLOR_NB][16]; std::stringstream TraceStream; enum TracedType { @@ -267,10 +267,6 @@ namespace { namespace Eval { - Color RootColor; - Value ContemptFactor; - Value ValueDraw[2]; - /// evaluate() is the main evaluation function. It always computes two /// values, an endgame score and a middle game score, and interpolates /// between them based on the remaining material. @@ -309,11 +305,6 @@ namespace Eval { KingDangerTable[1][i] = apply_weight(make_score(t, 0), Weights[KingDangerUs]); KingDangerTable[0][i] = apply_weight(make_score(t, 0), Weights[KingDangerThem]); } - - if (Options["UCI_AnalyseMode"]) - ContemptFactor = VALUE_ZERO; - else - ContemptFactor = Options["Contempt Factor"] * PawnValueMg / 100; } @@ -326,7 +317,7 @@ namespace Eval { Value margin; std::string totals; - RootColor = pos.side_to_move(); + Search::RootColor = pos.side_to_move(); TraceStream.str(""); TraceStream << std::showpoint << std::showpos << std::fixed << std::setprecision(2); @@ -373,7 +364,7 @@ Value do_evaluate(const Position& pos, Value& margin) { assert(!pos.in_check()); EvalInfo ei; - Value margins[2]; + Value margins[COLOR_NB]; Score score, mobilityWhite, mobilityBlack; // margins[] store the uncertainty estimation of position's evaluation @@ -860,8 +851,8 @@ Value do_evaluate(const Position& pos, Value& margin) { // value that will be used for pruning because this value can sometimes // be very big, and so capturing a single attacking piece can therefore // result in a score change far bigger than the value of the captured piece. - score -= KingDangerTable[Us == Eval::RootColor][attackUnits]; - margins[Us] += mg_value(KingDangerTable[Us == Eval::RootColor][attackUnits]); + score -= KingDangerTable[Us == Search::RootColor][attackUnits]; + margins[Us] += mg_value(KingDangerTable[Us == Search::RootColor][attackUnits]); } if (Trace)