]> git.sesse.net Git - stockfish/blobdiff - src/search.cpp
Stockfish 1.8
[stockfish] / src / search.cpp
index 8ea1b718825dc1fc684c156235718e412fb49f64..9cffc1cc3aff6aab23242113aa34acf18a740fed 100644 (file)
@@ -312,7 +312,7 @@ namespace {
   void ponderhit();
   void wait_for_stop_or_ponderhit();
   void init_ss_array(SearchStack* ss, int size);
-  void print_pv_info(const Position& pos, Move* ss, Value alpha, Value beta, Value value);
+  void print_pv_info(const Position& pos, Move pv[], Value alpha, Value beta, Value value);
 
 #if !defined(_MSC_VER)
   void *init_thread(void *threadID);
@@ -1061,7 +1061,7 @@ namespace {
     Depth ext, newDepth;
     Value bestValue, value, oldAlpha;
     Value refinedValue, nullValue, futilityValueScaled; // Non-PV specific
-    bool isCheck, singleEvasion, moveIsCheck, captureOrPromotion, dangerous;
+    bool isCheck, singleEvasion, singularExtensionNode, moveIsCheck, captureOrPromotion, dangerous;
     bool mateThreat = false;
     int moveCount = 0;
     int threadID = pos.thread();
@@ -1257,11 +1257,12 @@ namespace {
     // Initialize a MovePicker object for the current position
     MovePicker mp = MovePicker(pos, ttMove, depth, H, ss, (PvNode ? -VALUE_INFINITE : beta));
     CheckInfo ci(pos);
-    bool singularExtensionNode =   depth >= SingularExtensionDepth[PvNode]
-                                && tte && tte->move()
-                                && !excludedMove // Do not allow recursive singular extension search
-                                && is_lower_bound(tte->type())
-                                && tte->depth() >= depth - 3 * OnePly;
+    singleEvasion = isCheck && mp.number_of_evasions() == 1;
+    singularExtensionNode =   depth >= SingularExtensionDepth[PvNode]
+                           && tte && tte->move()
+                           && !excludedMove // Do not allow recursive singular extension search
+                           && is_lower_bound(tte->type())
+                           && tte->depth() >= depth - 3 * OnePly;
 
     // Step 10. Loop through moves
     // Loop through all legal moves until no moves remain or a beta cutoff occurs
@@ -1274,7 +1275,6 @@ namespace {
       if (move == excludedMove)
           continue;
 
-      singleEvasion = (isCheck && mp.number_of_evasions() == 1);
       moveIsCheck = pos.move_is_check(move, ci);
       captureOrPromotion = pos.move_is_capture_or_promotion(move);
 
@@ -2245,29 +2245,28 @@ namespace {
   // print_pv_info() prints to standard output and eventually to log file information on
   // the current PV line. It is called at each iteration or after a new pv is found.
 
-  void print_pv_info(const Position& pos, Move* pv, Value alpha, Value beta, Value value) {
+  void print_pv_info(const Position& pos, Move pv[], Value alpha, Value beta, Value value) {
 
     cout << "info depth " << Iteration
-         << " score " << value_to_string(value)
-         << ((value >= beta) ? " lowerbound" :
-            ((value <= alpha)? " upperbound" : ""))
+         << " score "     << value_to_string(value)
+         << (value >= beta ? " lowerbound" : value <= alpha ? " upperbound" : "")
          << " time "  << current_search_time()
          << " nodes " << TM.nodes_searched()
          << " nps "   << nps()
          << " pv ";
 
-    for (int j = 0; pv[j] != MOVE_NONE && j < PLY_MAX; j++)
-        cout << pv[j] << " ";
+    for (Move* m = pv; *m != MOVE_NONE; m++)
+        cout << *m << " ";
 
     cout << endl;
 
     if (UseLogFile)
     {
-        ValueType type =  (value >= beta  ? VALUE_TYPE_LOWER
-            : (value <= alpha ? VALUE_TYPE_UPPER : VALUE_TYPE_EXACT));
+        ValueType t = value >= beta  ? VALUE_TYPE_LOWER :
+                      value <= alpha ? VALUE_TYPE_UPPER : VALUE_TYPE_EXACT;
 
         LogFile << pretty_pv(pos, current_search_time(), Iteration,
-                             TM.nodes_searched(), value, type, pv) << endl;
+                             TM.nodes_searched(), value, t, pv) << endl;
     }
   }