+ // update_gains() updates the gains table of a non-capture move given
+ // the static position evaluation before and after the move.
+
+ void update_gains(const Position& pos, Move m, Value before, Value after) {
+
+ if ( m != MOVE_NULL
+ && before != VALUE_NONE
+ && after != VALUE_NONE
+ && pos.captured_piece() == NO_PIECE_TYPE
+ && !move_is_castle(m)
+ && !move_is_promotion(m))
+ H.set_gain(pos.piece_on(move_to(m)), move_from(m), move_to(m), -(before + after));
+ }
+
+