X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=f80d5ccb496d527fa93922a8e060c220239cc706;hp=26d8fde8767a1d26971c43949db7beb648d837ca;hb=5b853c9be6bdcc21ad3b1d4192178ceb97073258;hpb=07b45151d2f7abfac7030f3bf401a36b5b8c7b8b diff --git a/src/search.cpp b/src/search.cpp index 26d8fde8..f80d5ccb 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -729,6 +729,12 @@ namespace { if (UseLogFile) { + if (dbg_show_mean) + dbg_print_mean(LogFile); + + if (dbg_show_hit_rate) + dbg_print_hit_rate(LogFile); + UndoInfo u; LogFile << "Nodes: " << nodes_searched() << std::endl << "Nodes/second: " << nps() << std::endl @@ -2158,31 +2164,34 @@ namespace { tto = move_to(threat); // Case 1: Castling moves are never pruned. - if(move_is_castle(m)) - return false; + if (move_is_castle(m)) + return false; // Case 2: Don't prune moves which move the threatened piece - if(!PruneEscapeMoves && threat != MOVE_NONE && mfrom == tto) - return false; + if (!PruneEscapeMoves && threat != MOVE_NONE && mfrom == tto) + return false; // Case 3: If the threatened piece has value less than or equal to the // value of the threatening piece, don't prune move which defend it. - if(!PruneDefendingMoves && threat != MOVE_NONE - && (piece_value_midgame(pos.piece_on(tfrom)) - >= piece_value_midgame(pos.piece_on(tto))) - && pos.move_attacks_square(m, tto)) + if ( !PruneDefendingMoves + && threat != MOVE_NONE + && pos.type_of_piece_on(tto) != NO_PIECE_TYPE + && ( pos.midgame_value_of_piece_on(tfrom) >= pos.midgame_value_of_piece_on(tto) + || pos.type_of_piece_on(tfrom) == KING) + && pos.move_attacks_square(m, tto)) return false; // Case 4: Don't prune moves with good history. - if(!H.ok_to_prune(pos.piece_on(move_from(m)), m, d)) - return false; + if (!H.ok_to_prune(pos.piece_on(move_from(m)), m, d)) + return false; // Case 5: If the moving piece in the threatened move is a slider, don't // prune safe moves which block its ray. - if(!PruneBlockingMoves && threat != MOVE_NONE - && piece_is_slider(pos.piece_on(tfrom)) - && bit_is_set(squares_between(tfrom, tto), mto) && pos.see(m) >= 0) - return false; + if ( !PruneBlockingMoves + && threat != MOVE_NONE + && piece_is_slider(pos.piece_on(tfrom)) + && bit_is_set(squares_between(tfrom, tto), mto) && pos.see(m) >= 0) + return false; return true; }