mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
Remove all references to Score type
Score is obsolete with the removal of psqt. No functional change. Signed-off-by: Cody Ho <codyho@stanford.edu> closes https://github.com/official-stockfish/Stockfish/pull/4724
This commit is contained in:
parent
5c2111cc30
commit
e64b817e0a
3 changed files with 2 additions and 72 deletions
13
src/tune.cpp
13
src/tune.cpp
|
@ -92,19 +92,6 @@ template<> void Tune::Entry<Value>::read_option() {
|
||||||
value = Value(int(Options[name]));
|
value = Value(int(Options[name]));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<> void Tune::Entry<Score>::init_option() {
|
|
||||||
make_option("m" + name, mg_value(value), range);
|
|
||||||
make_option("e" + name, eg_value(value), range);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<> void Tune::Entry<Score>::read_option() {
|
|
||||||
if (Options.count("m" + name))
|
|
||||||
value = make_score(int(Options["m" + name]), eg_value(value));
|
|
||||||
|
|
||||||
if (Options.count("e" + name))
|
|
||||||
value = make_score(mg_value(value), int(Options["e" + name]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Instead of a variable here we have a PostUpdate function: just call it
|
// Instead of a variable here we have a PostUpdate function: just call it
|
||||||
template<> void Tune::Entry<Tune::PostUpdate>::init_option() {}
|
template<> void Tune::Entry<Tune::PostUpdate>::init_option() {}
|
||||||
template<> void Tune::Entry<Tune::PostUpdate>::read_option() { value(); }
|
template<> void Tune::Entry<Tune::PostUpdate>::read_option() { value(); }
|
||||||
|
|
|
@ -51,18 +51,17 @@ struct SetRange {
|
||||||
/// qualifiers from the variables you want to tune and flag them for tuning, so
|
/// qualifiers from the variables you want to tune and flag them for tuning, so
|
||||||
/// if you have:
|
/// if you have:
|
||||||
///
|
///
|
||||||
/// const Score myScore = S(10, 15);
|
|
||||||
/// const Value myValue[][2] = { { V(100), V(20) }, { V(7), V(78) } };
|
/// const Value myValue[][2] = { { V(100), V(20) }, { V(7), V(78) } };
|
||||||
///
|
///
|
||||||
/// If you have a my_post_update() function to run after values have been updated,
|
/// If you have a my_post_update() function to run after values have been updated,
|
||||||
/// and a my_range() function to set custom Option's min-max values, then you just
|
/// and a my_range() function to set custom Option's min-max values, then you just
|
||||||
/// remove the 'const' qualifiers and write somewhere below in the file:
|
/// remove the 'const' qualifiers and write somewhere below in the file:
|
||||||
///
|
///
|
||||||
/// TUNE(SetRange(my_range), myScore, myValue, my_post_update);
|
/// TUNE(SetRange(my_range), myValue, my_post_update);
|
||||||
///
|
///
|
||||||
/// You can also set the range directly, and restore the default at the end
|
/// You can also set the range directly, and restore the default at the end
|
||||||
///
|
///
|
||||||
/// TUNE(SetRange(-100, 100), myScore, SetDefaultRange);
|
/// TUNE(SetRange(-100, 100), myValue, SetDefaultRange);
|
||||||
///
|
///
|
||||||
/// In case update function is slow and you have many parameters, you can add:
|
/// In case update function is slow and you have many parameters, you can add:
|
||||||
///
|
///
|
||||||
|
@ -98,7 +97,6 @@ class Tune {
|
||||||
|
|
||||||
static_assert( std::is_same<T, int>::value
|
static_assert( std::is_same<T, int>::value
|
||||||
|| std::is_same<T, Value>::value
|
|| std::is_same<T, Value>::value
|
||||||
|| std::is_same<T, Score>::value
|
|
||||||
|| std::is_same<T, PostUpdate>::value, "Parameter type not supported!");
|
|| std::is_same<T, PostUpdate>::value, "Parameter type not supported!");
|
||||||
|
|
||||||
Entry(const std::string& n, T& v, const SetRange& r) : name(n), value(v), range(r) {}
|
Entry(const std::string& n, T& v, const SetRange& r) : name(n), value(v), range(r) {}
|
||||||
|
|
55
src/types.h
55
src/types.h
|
@ -154,8 +154,6 @@ enum CastlingRights {
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Phase {
|
enum Phase {
|
||||||
PHASE_ENDGAME,
|
|
||||||
PHASE_MIDGAME = 128,
|
|
||||||
MG = 0, EG = 1, PHASE_NB = 2
|
MG = 0, EG = 1, PHASE_NB = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -194,8 +192,6 @@ enum Value : int {
|
||||||
BishopValueMg = 825, BishopValueEg = 915,
|
BishopValueMg = 825, BishopValueEg = 915,
|
||||||
RookValueMg = 1276, RookValueEg = 1380,
|
RookValueMg = 1276, RookValueEg = 1380,
|
||||||
QueenValueMg = 2538, QueenValueEg = 2682,
|
QueenValueMg = 2538, QueenValueEg = 2682,
|
||||||
|
|
||||||
MidgameLimit = 15258, EndgameLimit = 3915
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum PieceType {
|
enum PieceType {
|
||||||
|
@ -281,29 +277,6 @@ struct DirtyPiece {
|
||||||
Square to[3];
|
Square to[3];
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Score enum stores a middlegame and an endgame value in a single integer (enum).
|
|
||||||
/// The least significant 16 bits are used to store the middlegame value and the
|
|
||||||
/// upper 16 bits are used to store the endgame value. We have to take care to
|
|
||||||
/// avoid left-shifting a signed int to avoid undefined behavior.
|
|
||||||
enum Score : int { SCORE_ZERO };
|
|
||||||
|
|
||||||
constexpr Score make_score(int mg, int eg) {
|
|
||||||
return Score((int)((unsigned int)eg << 16) + mg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Extracting the signed lower and upper 16 bits is not so trivial because
|
|
||||||
/// according to the standard a simple cast to short is implementation defined
|
|
||||||
/// and so is a right shift of a signed integer.
|
|
||||||
inline Value eg_value(Score s) {
|
|
||||||
union { uint16_t u; int16_t s; } eg = { uint16_t(unsigned(s + 0x8000) >> 16) };
|
|
||||||
return Value(eg.s);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline Value mg_value(Score s) {
|
|
||||||
union { uint16_t u; int16_t s; } mg = { uint16_t(unsigned(s)) };
|
|
||||||
return Value(mg.s);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define ENABLE_BASE_OPERATORS_ON(T) \
|
#define ENABLE_BASE_OPERATORS_ON(T) \
|
||||||
constexpr T operator+(T d1, int d2) { return T(int(d1) + d2); } \
|
constexpr T operator+(T d1, int d2) { return T(int(d1) + d2); } \
|
||||||
constexpr T operator-(T d1, int d2) { return T(int(d1) - d2); } \
|
constexpr T operator-(T d1, int d2) { return T(int(d1) - d2); } \
|
||||||
|
@ -333,8 +306,6 @@ ENABLE_INCR_OPERATORS_ON(Square)
|
||||||
ENABLE_INCR_OPERATORS_ON(File)
|
ENABLE_INCR_OPERATORS_ON(File)
|
||||||
ENABLE_INCR_OPERATORS_ON(Rank)
|
ENABLE_INCR_OPERATORS_ON(Rank)
|
||||||
|
|
||||||
ENABLE_BASE_OPERATORS_ON(Score)
|
|
||||||
|
|
||||||
#undef ENABLE_FULL_OPERATORS_ON
|
#undef ENABLE_FULL_OPERATORS_ON
|
||||||
#undef ENABLE_INCR_OPERATORS_ON
|
#undef ENABLE_INCR_OPERATORS_ON
|
||||||
#undef ENABLE_BASE_OPERATORS_ON
|
#undef ENABLE_BASE_OPERATORS_ON
|
||||||
|
@ -345,32 +316,6 @@ constexpr Square operator-(Square s, Direction d) { return Square(int(s) - int(d
|
||||||
inline Square& operator+=(Square& s, Direction d) { return s = s + d; }
|
inline Square& operator+=(Square& s, Direction d) { return s = s + d; }
|
||||||
inline Square& operator-=(Square& s, Direction d) { return s = s - d; }
|
inline Square& operator-=(Square& s, Direction d) { return s = s - d; }
|
||||||
|
|
||||||
/// Only declared but not defined. We don't want to multiply two scores due to
|
|
||||||
/// a very high risk of overflow. So user should explicitly convert to integer.
|
|
||||||
Score operator*(Score, Score) = delete;
|
|
||||||
|
|
||||||
/// Division of a Score must be handled separately for each term
|
|
||||||
inline Score operator/(Score s, int i) {
|
|
||||||
return make_score(mg_value(s) / i, eg_value(s) / i);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Multiplication of a Score by an integer. We check for overflow in debug mode.
|
|
||||||
inline Score operator*(Score s, int i) {
|
|
||||||
|
|
||||||
Score result = Score(int(s) * i);
|
|
||||||
|
|
||||||
assert(eg_value(result) == (i * eg_value(s)));
|
|
||||||
assert(mg_value(result) == (i * mg_value(s)));
|
|
||||||
assert((i == 0) || (result / i) == s);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Multiplication of a Score by a boolean
|
|
||||||
inline Score operator*(Score s, bool b) {
|
|
||||||
return b ? s : SCORE_ZERO;
|
|
||||||
}
|
|
||||||
|
|
||||||
constexpr Color operator~(Color c) {
|
constexpr Color operator~(Color c) {
|
||||||
return Color(c ^ BLACK); // Toggle color
|
return Color(c ^ BLACK); // Toggle color
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue