X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fsearch.cpp;h=70bd1eab463968717a38c9262a65409baada9a09;hb=d9e3be4790bb04820d80dacfedd162b4b03971f2;hp=577484a9c24b895b224b4e9103d70acad759faa9;hpb=b5685fc564b81be469c14d7778f16498c5a3ad91;p=stockfish diff --git a/src/search.cpp b/src/search.cpp index 577484a9..70bd1eab 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -189,6 +189,9 @@ namespace { // Remaining depth: 1 ply 1.5 ply 2 ply 2.5 ply 3 ply 3.5 ply const Value RazorApprMargins[6] = { Value(0x520), Value(0x300), Value(0x300), Value(0x300), Value(0x300), Value(0x300) }; + // The main transposition table + TranspositionTable TT; + /// Variables initialized by UCI options @@ -268,9 +271,6 @@ namespace { int NodesSincePoll; int NodesBetweenPolls = 30000; - // The main transposition table - TranspositionTable TT; - /// Functions @@ -657,7 +657,7 @@ namespace { // Calculate dynamic search window based on previous iterations Value alpha, beta; - if (MultiPV == 1 && Iteration >= 6) + if (MultiPV == 1 && Iteration >= 6 && abs(IterationInfo[Iteration - 1].value) < VALUE_KNOWN_WIN) { int prevDelta1 = IterationInfo[Iteration - 1].speculatedValue - IterationInfo[Iteration - 2].speculatedValue; int prevDelta2 = IterationInfo[Iteration - 2].speculatedValue - IterationInfo[Iteration - 3].speculatedValue; @@ -1086,7 +1086,7 @@ namespace { && moveCount >= LMRPVMoves && !dangerous && !moveIsCapture - && !move_promotion(move) + && !move_is_promotion(move) && !move_is_castle(move) && !move_is_killer(move, ss[ply])) { @@ -1337,7 +1337,7 @@ namespace { if ( useFutilityPruning && !dangerous && !moveIsCapture - && !move_promotion(move)) + && !move_is_promotion(move)) { // History pruning. See ok_to_prune() definition if ( moveCount >= 2 + int(depth) @@ -1370,7 +1370,7 @@ namespace { && moveCount >= LMRNonPVMoves && !dangerous && !moveIsCapture - && !move_promotion(move) + && !move_is_promotion(move) && !move_is_castle(move) && !move_is_killer(move, ss[ply])) { @@ -1545,7 +1545,7 @@ namespace { if ( enoughMaterial && !isCheck && !pvNode - && !move_promotion(move) + && !move_is_promotion(move) && !pos.move_is_check(move, dcCandidates) && !pos.move_is_passed_pawn_push(move)) { @@ -1566,7 +1566,7 @@ namespace { // Don't search captures and checks with negative SEE values if ( !isCheck - && !move_promotion(move) + && !move_is_promotion(move) && (pos.midgame_value_of_piece_on(move_from(move)) > pos.midgame_value_of_piece_on(move_to(move))) && pos.see(move) < 0) @@ -1663,7 +1663,7 @@ namespace { if ( useFutilityPruning && !dangerous && !moveIsCapture - && !move_promotion(move) + && !move_is_promotion(move) && moveCount >= 2 + int(sp->depth) && ok_to_prune(pos, move, ss[sp->ply].threatMove, sp->depth, Threads[threadID].H)) continue; @@ -1677,7 +1677,7 @@ namespace { if ( !dangerous && moveCount >= LMRNonPVMoves && !moveIsCapture - && !move_promotion(move) + && !move_is_promotion(move) && !move_is_castle(move) && !move_is_killer(move, ss[sp->ply])) { @@ -1780,7 +1780,7 @@ namespace { if ( !dangerous && moveCount >= LMRPVMoves && !moveIsCapture - && !move_promotion(move) + && !move_is_promotion(move) && !move_is_castle(move) && !move_is_killer(move, ss[sp->ply])) { @@ -2236,7 +2236,7 @@ namespace { && pos.type_of_piece_on(move_to(m)) != PAWN && ( pos.non_pawn_material(WHITE) + pos.non_pawn_material(BLACK) - pos.midgame_value_of_piece_on(move_to(m)) == Value(0)) - && !move_promotion(m) + && !move_is_promotion(m) && !move_is_ep(m)) { result += PawnEndgameExtension[pvNode]; @@ -2278,7 +2278,7 @@ namespace { assert(move_is_ok(m)); assert(threat == MOVE_NONE || move_is_ok(threat)); - assert(!move_promotion(m)); + assert(!move_is_promotion(m)); assert(!pos.move_is_check(m)); assert(!pos.move_is_capture(m)); assert(!pos.move_is_passed_pawn_push(m)); @@ -2347,7 +2347,7 @@ namespace { bool ok_to_history(const Position& pos, Move m) { - return !pos.move_is_capture(m) && !move_promotion(m); + return !pos.move_is_capture(m) && !move_is_promotion(m); }