From: Marco Costalba Date: Mon, 9 Jan 2012 21:34:00 +0000 (+0100) Subject: Introduce piece_moved() to simplify common code X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=bede30e7a658dbb5e013351c86f77c3fd4bc8537 Introduce piece_moved() to simplify common code No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/movepick.cpp b/src/movepick.cpp index 9ada404b..8a7e9ae3 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -255,7 +255,7 @@ void MovePicker::score_captures() { { m = cur->move; cur->score = PieceValueMidgame[pos.piece_on(to_sq(m))] - - type_of(pos.piece_on(from_sq(m))); + - type_of(pos.piece_moved(m)); if (is_promotion(m)) cur->score += PieceValueMidgame[Piece(promotion_piece_type(m))]; @@ -294,9 +294,9 @@ void MovePicker::score_evasions() { cur->score = seeScore - History::MaxValue; // Be sure we are at the bottom else if (pos.is_capture(m)) cur->score = PieceValueMidgame[pos.piece_on(to_sq(m))] - - type_of(pos.piece_on(from_sq(m))) + History::MaxValue; + - type_of(pos.piece_moved(m)) + History::MaxValue; else - cur->score = H.value(pos.piece_on(from_sq(m)), to_sq(m)); + cur->score = H.value(pos.piece_moved(m), to_sq(m)); } } diff --git a/src/position.cpp b/src/position.cpp index d5a28222..085b9a3b 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -641,7 +641,7 @@ bool Position::move_gives_check(Move m, const CheckInfo& ci) const { assert(is_ok(m)); assert(ci.dcCandidates == discovered_check_candidates()); - assert(color_of(piece_on(from_sq(m))) == side_to_move()); + assert(color_of(piece_moved(m)) == side_to_move()); Square from = from_sq(m); Square to = to_sq(m); diff --git a/src/position.h b/src/position.h index 4583212c..634fbc0d 100644 --- a/src/position.h +++ b/src/position.h @@ -101,6 +101,7 @@ public: // The piece on a given square Piece piece_on(Square s) const; + Piece piece_moved(Move m) const; bool square_is_empty(Square s) const; // Side to move @@ -278,6 +279,10 @@ inline Piece Position::piece_on(Square s) const { return board[s]; } +inline Piece Position::piece_moved(Move m) const { + return board[from_sq(m)]; +} + inline bool Position::square_is_empty(Square s) const { return board[s] == NO_PIECE; } diff --git a/src/search.cpp b/src/search.cpp index 3ed8ced0..6f018d81 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -200,7 +200,7 @@ namespace { FORCE_INLINE bool is_dangerous(const Position& pos, Move m, bool captureOrPromotion) { // Test for a pawn pushed to 7th or a passed pawn move - if (type_of(pos.piece_on(from_sq(m))) == PAWN) + if (type_of(pos.piece_moved(m)) == PAWN) { Color c = pos.side_to_move(); if ( relative_rank(c, to_sq(m)) == RANK_7 @@ -970,7 +970,7 @@ split_point_start: // At split points actual search starts from here // but fixing this made program slightly weaker. Depth predictedDepth = newDepth - reduction(depth, moveCount); futilityValue = futilityBase + futility_margin(predictedDepth, moveCount) - + H.gain(pos.piece_on(from_sq(move)), to_sq(move)); + + H.gain(pos.piece_moved(move), to_sq(move)); if (futilityValue < beta) { @@ -1154,13 +1154,13 @@ split_point_start: // At split points actual search starts from here // Increase history value of the cut-off move Value bonus = Value(int(depth) * int(depth)); - H.add(pos.piece_on(from_sq(move)), to_sq(move), bonus); + H.add(pos.piece_moved(move), to_sq(move), bonus); // Decrease history of all the other played non-capture moves for (int i = 0; i < playedMoveCount - 1; i++) { Move m = movesSearched[i]; - H.add(pos.piece_on(from_sq(m)), to_sq(m), -bonus); + H.add(pos.piece_moved(m), to_sq(m), -bonus); } } }