X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=4745da0210a921112852c3a3cb69192200660481;hp=c397671cb408d53293b76967260b2d292591f6f1;hb=c8773c720af6fd5c3a8f84550ee36e5eb89f929e;hpb=3ed603cd64624d27de3f3f6e8f4e5dfccaaed420;ds=sidebyside diff --git a/src/evaluate.cpp b/src/evaluate.cpp index c397671c..4745da02 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -289,7 +289,6 @@ namespace { void evaluate_space(const Position &p, Color us, EvalInfo &ei); inline Value apply_weight(Value v, int w); - Value scale_by_game_phase(Value mv, Value ev, Phase ph, const ScaleFactor sf[]); int count_1s_8bit(Bitboard b); @@ -528,6 +527,22 @@ void read_weights(Color us) { } +/// scale_by_game_phase() interpolates between a middle game and an endgame +/// score, based on game phase. It also scales the return value by a +/// ScaleFactor array. + +Value scale_by_game_phase(Value mv, Value ev, Phase ph, const ScaleFactor sf[]) { + + assert(mv > -VALUE_INFINITE && mv < VALUE_INFINITE); + assert(ev > -VALUE_INFINITE && ev < VALUE_INFINITE); + assert(ph >= PHASE_ENDGAME && ph <= PHASE_MIDGAME); + + ev = apply_scale_factor(ev, sf[(ev > Value(0) ? WHITE : BLACK)]); + + Value result = Value(int((mv * ph + ev * (128 - ph)) / 128)); + return Value(int(result) & ~(GrainSize - 1)); +} + namespace { // evaluate_common() computes terms common to all pieces attack @@ -1144,23 +1159,6 @@ namespace { } - // scale_by_game_phase() interpolates between a middle game and an endgame - // score, based on game phase. It also scales the return value by a - // ScaleFactor array. - - Value scale_by_game_phase(Value mv, Value ev, Phase ph, const ScaleFactor sf[]) { - - assert(mv > -VALUE_INFINITE && mv < VALUE_INFINITE); - assert(ev > -VALUE_INFINITE && ev < VALUE_INFINITE); - assert(ph >= PHASE_ENDGAME && ph <= PHASE_MIDGAME); - - ev = apply_scale_factor(ev, sf[(ev > Value(0) ? WHITE : BLACK)]); - - Value result = Value(int((mv * ph + ev * (128 - ph)) / 128)); - return Value(int(result) & ~(GrainSize - 1)); - } - - // count_1s_8bit() counts the number of nonzero bits in the 8 least // significant bits of a Bitboard. This function is used by the king // shield evaluation.