From: Marco Costalba Date: Tue, 9 May 2017 11:50:05 +0000 (+0200) Subject: Default argument for see_ge() X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=0c1f119069bf915b85126159d4865c4bcc532239;hp=99d914985f6ddb1ee22b232d41f17a35e1d34f89 Default argument for see_ge() No functional change. Closes #1111 --- diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 9202c9ed..3bd790bd 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -174,8 +174,8 @@ namespace { S(-20,-12), S( 1, -8), S( 2, 10), S( 9, 10) }; - // KingProtector[PieceType-2] * "distance to own king" determines a bonus for each piece. - const Score KingProtector[] = {S(-3, -5), S(-4, -3), S(-3, 0), S(-1, 1) }; + // KingProtector[PieceType-2] contains a bonus according to distance from king + const Score KingProtector[] = { S(-3, -5), S(-4, -3), S(-3, 0), S(-1, 1) }; // Assorted bonuses and penalties used by evaluation const Score MinorBehindPawn = S( 16, 0); @@ -291,9 +291,10 @@ namespace { int mob = popcount(b & ei.mobilityArea[Us]); - mobility[Us] += MobilityBonus[Pt-2][mob]; + mobility[Us] += MobilityBonus[Pt - 2][mob]; - score += KingProtector[Pt-2] * distance(s, pos.square(Us)); + // Bonus for this piece as a king protector + score += KingProtector[Pt - 2] * distance(s, pos.square(Us)); if (Pt == BISHOP || Pt == KNIGHT) { diff --git a/src/movepick.cpp b/src/movepick.cpp index 5c246664..6b9f2be0 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -202,7 +202,7 @@ Move MovePicker::next_move(bool skipQuiets) { move = pick_best(cur++, endMoves); if (move != ttMove) { - if (pos.see_ge(move, VALUE_ZERO)) + if (pos.see_ge(move)) return move; // Losing capture, move it to the beginning of the array diff --git a/src/pawns.cpp b/src/pawns.cpp index 95d5fb4c..dab280cc 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -163,12 +163,14 @@ namespace { && popcount(phalanx) >= popcount(leverPush)) e->passedPawns[Us] |= s; - else if ( stoppers == SquareBB[s + Up] - && relative_rank(Us, s) >= RANK_5 - && (b = (shift(supported) & ~theirPawns))) - while(b) - if(!more_than_one(theirPawns & PawnAttacks[Us][pop_lsb(&b)])) + else if ( stoppers == SquareBB[s + Up] + && relative_rank(Us, s) >= RANK_5) + { + b = shift(supported) & ~theirPawns; + while (b) + if (!more_than_one(theirPawns & PawnAttacks[Us][pop_lsb(&b)])) e->passedPawns[Us] |= s; + } // Score this pawn if (!neighbours) @@ -184,7 +186,7 @@ namespace { score += Connected[opposed][!!phalanx][more_than_one(supported)][relative_rank(Us, s)]; if (doubled && !supported) - score -= Doubled; + score -= Doubled; if (lever) score += Lever[relative_rank(Us, s)]; diff --git a/src/position.cpp b/src/position.cpp index 03d8bf8c..0449222e 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -65,7 +65,7 @@ PieceType min_attacker(const Bitboard* bb, Square to, Bitboard stmAttackers, Bitboard b = stmAttackers & bb[Pt]; if (!b) - return min_attacker(bb, to, stmAttackers, occupied, attackers); + return min_attacker(bb, to, stmAttackers, occupied, attackers); occupied ^= b & ~(b - 1); diff --git a/src/position.h b/src/position.h index 2361132f..2b44ef32 100644 --- a/src/position.h +++ b/src/position.h @@ -136,7 +136,7 @@ public: void undo_null_move(); // Static Exchange Evaluation - bool see_ge(Move m, Value value) const; + bool see_ge(Move m, Value value = VALUE_ZERO) const; // Accessing hash keys Key key() const; diff --git a/src/search.cpp b/src/search.cpp index 2c924014..fc877f30 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -556,7 +556,7 @@ namespace { // Step 1. Initialize node Thread* thisThread = pos.this_thread(); inCheck = pos.checkers(); - moveCount = quietCount = ss->moveCount = 0; + moveCount = quietCount = ss->moveCount = 0; ss->history = 0; bestValue = -VALUE_INFINITE; ss->ply = (ss-1)->ply + 1; @@ -895,7 +895,7 @@ moves_loop: // When in check search starts from here } else if ( givesCheck && !moveCountPruning - && pos.see_ge(move, VALUE_ZERO)) + && pos.see_ge(move)) extension = ONE_PLY; // Calculate new depth for this move @@ -979,8 +979,8 @@ moves_loop: // When in check search starts from here // Decrease reduction for moves that escape a capture. Filter out // castling moves, because they are coded as "king captures rook" and // hence break make_move(). - else if ( type_of(move) == NORMAL - && !pos.see_ge(make_move(to_sq(move), from_sq(move)), VALUE_ZERO)) + else if ( type_of(move) == NORMAL + && !pos.see_ge(make_move(to_sq(move), from_sq(move)))) r -= 2 * ONE_PLY; ss->history = cmh[moved_piece][to_sq(move)] @@ -1116,7 +1116,6 @@ moves_loop: // When in check search starts from here : inCheck ? mated_in(ss->ply) : DrawValue[pos.side_to_move()]; else if (bestMove) { - // Quiet best move: update move sorting heuristics if (!pos.capture_or_promotion(bestMove)) update_stats(pos, ss, bestMove, quietsSearched, quietCount, stat_bonus(depth)); @@ -1290,7 +1289,7 @@ moves_loop: // When in check search starts from here // Don't search moves with negative SEE values if ( (!InCheck || evasionPrunable) && type_of(move) != PROMOTION - && !pos.see_ge(move, VALUE_ZERO)) + && !pos.see_ge(move)) continue; // Speculative prefetch as early as possible