#include "evaluate.h"
#include "material.h"
#include "pawns.h"
-#include "scale.h"
#include "thread.h"
#include "ucioption.h"
assert(eg_value(v) > -VALUE_INFINITE && eg_value(v) < VALUE_INFINITE);
assert(ph >= PHASE_ENDGAME && ph <= PHASE_MIDGAME);
- Value ev = apply_scale_factor(eg_value(v), sf[(eg_value(v) > Value(0) ? WHITE : BLACK)]);
+ Value eg = eg_value(v);
+ ScaleFactor f = sf[eg > Value(0) ? WHITE : BLACK];
+ Value ev = Value((eg * f) / int(SCALE_FACTOR_NORMAL));
int result = (mg_value(v) * ph + ev * (128 - ph)) / 128;
return Value(result & ~(GrainSize - 1));
+++ /dev/null
-/*
- Stockfish, a UCI chess playing engine derived from Glaurung 2.1
- Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
- Copyright (C) 2008-2010 Marco Costalba, Joona Kiiski, Tord Romstad
-
- Stockfish is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Stockfish is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-#if !defined(SCALE_H_INCLUDED)
-#define SCALE_H_INCLUDED
-
-////
-//// Includes
-////
-
-#include "value.h"
-
-
-////
-//// Types
-////
-
-enum ScaleFactor {
- SCALE_FACTOR_ZERO = 0,
- SCALE_FACTOR_NORMAL = 64,
- SCALE_FACTOR_MAX = 128,
- SCALE_FACTOR_NONE = 255
-};
-
-
-////
-//// Inline functions
-////
-
-inline Value apply_scale_factor(Value v, ScaleFactor f) {
- return Value((v * f) / int(SCALE_FACTOR_NORMAL));
-}
-
-
-#endif // !defined(SCALE_H_INCLUDED)
enum Value {
- VALUE_DRAW = 0,
+ VALUE_DRAW = 0,
VALUE_KNOWN_WIN = 15000,
- VALUE_MATE = 30000,
- VALUE_INFINITE = 30001,
- VALUE_NONE = 30002,
+ VALUE_MATE = 30000,
+ VALUE_INFINITE = 30001,
+ VALUE_NONE = 30002,
VALUE_ENSURE_SIGNED = -1
};
+enum ScaleFactor {
+ SCALE_FACTOR_ZERO = 0,
+ SCALE_FACTOR_NORMAL = 64,
+ SCALE_FACTOR_MAX = 128,
+ SCALE_FACTOR_NONE = 255
+};
+
+
/// Score enum keeps a midgame and an endgame value in a single
/// integer (enum), first LSB 16 bits are used to store endgame
/// value, while upper bits are used for midgame value.