X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmaterial.cpp;h=ee5d4bceabdaa5b056f0f712fd4cf85856779f57;hb=eb07775583c39893bc6eb65a40b5f62a7799deee;hp=ef7bb14333aa51b0190f19264c30abe268ef3839;hpb=4d22d3e52d561b9c0c7aeacee3df5d1b762f0a38;p=stockfish
diff --git a/src/material.cpp b/src/material.cpp
index ef7bb143..ee5d4bce 100644
--- a/src/material.cpp
+++ b/src/material.cpp
@@ -2,7 +2,7 @@
Stockfish, a UCI chess playing engine derived from Glaurung 2.1
Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad
- Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad
+ Copyright (C) 2015-2019 Marco Costalba, Joona Kiiski, Gary Linscott, 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
@@ -18,7 +18,6 @@
along with this program. If not, see .
*/
-#include // For std::min
#include
#include // For std::memset
@@ -70,14 +69,12 @@ namespace {
bool is_KBPsK(const Position& pos, Color us) {
return pos.non_pawn_material(us) == BishopValueMg
- && pos.count(us) == 1
&& pos.count(us) >= 1;
}
bool is_KQKRPs(const Position& pos, Color us) {
return !pos.count(us)
&& pos.non_pawn_material(us) == QueenValueMg
- && pos.count(us) == 1
&& pos.count(~us) == 1
&& pos.count(~us) >= 1;
}
@@ -132,7 +129,7 @@ Entry* probe(const Position& pos) {
Value npm_w = pos.non_pawn_material(WHITE);
Value npm_b = pos.non_pawn_material(BLACK);
- Value npm = std::max(EndgameLimit, std::min(npm_w + npm_b, MidgameLimit));
+ Value npm = clamp(npm_w + npm_b, EndgameLimit, MidgameLimit);
// Map total non-pawn material into [PHASE_ENDGAME, PHASE_MIDGAME]
e->gamePhase = Phase(((npm - EndgameLimit) * PHASE_MIDGAME) / (MidgameLimit - EndgameLimit));
@@ -152,9 +149,9 @@ Entry* probe(const Position& pos) {
// OK, we didn't find any special evaluation function for the current material
// configuration. Is there a suitable specialized scaling function?
- const EndgameBase* sf;
+ const auto* sf = pos.this_thread()->endgames.probe(key);
- if ((sf = pos.this_thread()->endgames.probe(key)) != nullptr)
+ if (sf)
{
e->scalingFunction[sf->strongSide] = sf; // Only strong color assigned
return e;