From: Lucas Braesch Date: Sat, 7 Sep 2013 07:20:22 +0000 (+0200) Subject: Union of 2 changes X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=c86eee391830c9c74bc11be9c537ccbbf6cb412e;ds=sidebyside Union of 2 changes Union of - LMR >= 3 plies from Gary tests.stockfishchess.org/tests/view/522522960ebc595d328fcafd - allows() tweak from Reuven tests.stockfishchess.org/tests/view/5225fa1c0ebc595d328fcb53 Both passed Step I and failed Step II. Instead this union passed both short TC: LLR: 2.95 (-2.94,2.94) Total: 14525 W: 3063 L: 2874 D: 8588 And long TC LLR: 2.94 (-2.94,2.94) Total: 31075 W: 5566 L: 5308 D: 20201 bench: 4238160 --- diff --git a/src/search.cpp b/src/search.cpp index c9f1aee0..17d52cae 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -937,7 +937,7 @@ moves_loop: // When in check and at SpNode search starts from here // Step 15. Reduced depth search (LMR). If the move fails high will be // re-searched at full depth. - if ( depth > 3 * ONE_PLY + if ( depth >= 3 * ONE_PLY && !pvMove && !captureOrPromotion && move != ttMove @@ -1361,7 +1361,10 @@ moves_loop: // When in check and at SpNode search starts from here Square m2to = to_sq(second); // The piece is the same or second's destination was vacated by the first move - if (m1to == m2from || m2to == m1from) + // We exclude the trivial case where a sliding piece does in two moves what + // it could do in one move: eg. Ra1a2, Ra2a3. + if ( m2to == m1from + || (m1to == m2from && !squares_aligned(m1from, m2from, m2to))) return true; // Second one moves through the square vacated by first one