X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fsearch.cpp;h=e02529327435b46f49f4780d591877b201042cbf;hb=314faa905a60962595d610c26727c4b603c6ed62;hp=1786a6fdc60ebb235e708a7d7cfedaa63479987e;hpb=5e340346db94446587c78e791507ab9e2cffe3fa;p=stockfish diff --git a/src/search.cpp b/src/search.cpp index 1786a6fd..e0252932 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -333,14 +333,14 @@ namespace { int perft(Position& pos, Depth depth) { Move move; - MovePicker mp = MovePicker(pos, MOVE_NONE, depth, H); int sum = 0; + MovePicker mp = MovePicker(pos, MOVE_NONE, depth, H); // If we are at the last ply we don't need to do and undo // the moves, just to count them. if (depth <= OnePly) // Replace with '<' to test also qsearch { - while ((move = mp.get_next_move()) != MOVE_NONE) sum++; + while (mp.get_next_move()) sum++; return sum; } @@ -348,10 +348,10 @@ int perft(Position& pos, Depth depth) CheckInfo ci(pos); while ((move = mp.get_next_move()) != MOVE_NONE) { - StateInfo st; - pos.do_move(move, st, ci, pos.move_is_check(move, ci)); - sum += perft(pos, depth - OnePly); - pos.undo_move(move); + StateInfo st; + pos.do_move(move, st, ci, pos.move_is_check(move, ci)); + sum += perft(pos, depth - OnePly); + pos.undo_move(move); } return sum; } @@ -1314,7 +1314,13 @@ namespace { ss[ply].currentMove = MOVE_NULL; pos.do_null_move(st); - int R = (depth >= 5 * OnePly ? 4 : 3); // Null move dynamic reduction + + // Null move dynamic reduction based on depth + int R = (depth >= 5 * OnePly ? 4 : 3); + + // Null move dynamic reduction based on value + if (approximateEval - beta > PawnValueMidgame) + R++; nullValue = -search(pos, ss, -(beta-1), depth-R*OnePly, ply+1, false, threadID);