Fix bogus mate scores in some positions

Always before pruning the move, it's important to check that:

bestValue > VALUE_MATED_IN_MAX_PLY

See example position:

8/2p1p3/P1NpP3/3k4/1P1BN3/2P1P3/2Q5/6K1 w - - 0 1
http://support.stockfishchess.org/discussions/problems/268-wrong-declaring-a-forced-mate-in-3-moves

This problem was present in 2.3.1, then it was fixed by my patch.

After 24000 games at 15+0.05
ELO: 2.40 +-4.4 (95%) LOS: 95.7%
Total: 24000 W: 4774 L: 4608 D: 14618

bench: 4465997
This commit is contained in:
Joona Kiiski
2013-03-22 08:54:03 +01:00
committed by Marco Costalba
parent d39b22927e
commit 09f1fdf52f

View File

@@ -856,7 +856,8 @@ split_point_start: // At split points actual search starts from here
&& !captureOrPromotion
&& !inCheck
&& !dangerous
&& move != ttMove)
&& move != ttMove
&& bestValue > VALUE_MATED_IN_MAX_PLY)
{
// Move count based pruning
if ( depth < 16 * ONE_PLY