Value apply_weight(Value v, int w);
Value scale_by_game_phase(Value mv, Value ev, Phase ph, ScaleFactor sf[]);
- int count_1s_8bit(int b);
+ int count_1s_8bit(Bitboard b);
int compute_weight(int uciWeight, int internalWeight);
void init_safety();
else
ev = apply_scale_factor(ev, sf[BLACK]);
- Value result = Value(int((mv * ph + ev * (128 - ph)) / 128));
+ // Superlinear interpolator
+ int sli_ph = int(ph);
+ sli_ph -= (64 - sli_ph) / 4;
+ sli_ph = Min(PHASE_MIDGAME, Max(PHASE_ENDGAME, sli_ph)); // ceiling
+
+ Value result = Value(int((mv * sli_ph + ev * (128 - sli_ph)) / 128));
return Value(int(result) & ~(GrainSize - 1));
}
// count_1s_8bit() counts the number of nonzero bits in the 8 least
- // significant bits of an integer. This function is used by the king
+ // significant bits of a Bitboard. This function is used by the king
// shield evaluation.
- int count_1s_8bit(int b) {
+ int count_1s_8bit(Bitboard b) {
return int(BitCount8Bit[b & 0xFF]);
}