From 44a571c1c7494503ee431ef6f974d030bf96af0d Mon Sep 17 00:00:00 2001 From: hxim Date: Mon, 9 Feb 2015 19:12:04 +0100 Subject: [PATCH] Fix KingDanger[] array initialization Use integer arithmetic instead of floating point arithmetic. Floating point arithmetic was causing different results for some 32-bit compiles No functional change Resolves #249 Resolves #250 --- src/evaluate.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/evaluate.cpp b/src/evaluate.cpp index be3c6497..40d59648 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -912,14 +912,14 @@ namespace Eval { void init() { - const double MaxSlope = 8.7; - const double Peak = 1280; - double t = 0.0; + const int MaxSlope = 87; + const int Peak = 12800; + int t = 0; - for (int i = 1; i < 400; ++i) + for (int i = 0; i < 400; ++i) { - t = std::min(Peak, std::min(0.027 * i * i, t + MaxSlope)); - KingDanger[i] = apply_weight(make_score(int(t), 0), Weights[KingSafety]); + t = std::min(Peak, std::min(i * i * 27 / 100, t + MaxSlope)); + KingDanger[i] = apply_weight(make_score(t / 10, 0), Weights[KingSafety]); } } -- 2.39.2