]> git.sesse.net Git - stockfish/blobdiff - src/endgame.cpp
Add KNNvKP Endgame Heuristic
[stockfish] / src / endgame.cpp
index 835173c468b68bed46b7159dfafe5e32d74c9b0a..3e572205970d63cba9da91421e81bd291cf5e36c 100644 (file)
@@ -286,6 +286,21 @@ Value Endgame<KQKR>::operator()(const Position& pos) const {
 }
 
 
+/// KNN vs KP. Simply push the opposing king to the corner.
+template<>
+Value Endgame<KNNKP>::operator()(const Position& pos) const {
+
+    assert(verify_material(pos, strongSide, 2 * KnightValueMg, 0));
+    assert(verify_material(pos, weakSide, VALUE_ZERO, 1));
+
+    Value result =  2 * KnightValueEg
+                  - PawnValueEg
+                  + PushToEdges[pos.square<KING>(weakSide)];
+
+    return strongSide == pos.side_to_move() ? result : -result;
+}
+
+
 /// Some cases of trivial draws
 template<> Value Endgame<KNNK>::operator()(const Position&) const { return VALUE_DRAW; }