assert(pos.pawn_passed(Us, s));
- Rank r = relative_rank(Us, s) - RANK_2;
- Rank rr = r * (r - 1);
+ int r = relative_rank(Us, s) - RANK_2;
+ int rr = r * (r - 1);
// Base bonus based on rank
Value mbonus = Value(17 * rr), ebonus = Value(7 * (rr + r + 1));
// If blockSq is not the queening square then consider also a second push
if (relative_rank(Us, blockSq) != RANK_8)
- ebonus -= rr * square_distance(pos.king_square(Us), blockSq + pawn_push(Us));
+ ebonus -= square_distance(pos.king_square(Us), blockSq + pawn_push(Us)) * rr;
// If the pawn is free to advance, then increase the bonus
if (pos.empty(blockSq))
for (int t = 0, i = 1; i < 100; ++i)
{
- t = std::min(Peak, std::min(0.4 * i * i, t + MaxSlope));
+ t = int(std::min(Peak, std::min(0.4 * i * i, t + MaxSlope)));
KingDanger[1][i] = apply_weight(make_score(t, 0), Weights[KingDangerUs]);
KingDanger[0][i] = apply_weight(make_score(t, 0), Weights[KingDangerThem]);
// Init futility move count array
for (d = 0; d < 32; ++d)
{
- FutilityMoveCounts[0][d] = 2.4 + 0.222 * pow(d + 0.00, 1.8);
- FutilityMoveCounts[1][d] = 3.0 + 0.300 * pow(d + 0.98, 1.8);
+ FutilityMoveCounts[0][d] = int(2.4 + 0.222 * pow(d + 0.00, 1.8));
+ FutilityMoveCounts[1][d] = int(3.0 + 0.300 * pow(d + 0.98, 1.8));
}
}
double ratio1 = (TMaxRatio * thisMoveImportance) / (TMaxRatio * thisMoveImportance + otherMovesImportance);
double ratio2 = (thisMoveImportance + TStealRatio * otherMovesImportance) / (thisMoveImportance + otherMovesImportance);
- return floor(myTime * std::min(ratio1, ratio2));
+ return int(floor(myTime * std::min(ratio1, ratio2)));
}
} // namespace
public:
void init(const Search::LimitsType& limits, int currentPly, Color us);
void pv_instability(double bestMoveChanges) { unstablePvFactor = 1 + bestMoveChanges; }
- int available_time() const { return optimumSearchTime * unstablePvFactor * 0.71; }
+ int available_time() const { return int(optimumSearchTime * unstablePvFactor * 0.71); }
int maximum_time() const { return maximumSearchTime; }
private: