- }
- }
-
- pos.undo_move(move);
-
- if (AbortSearch || value < beta)
- break; // We are not failing high
-
- // We are failing high and going to do a research. It's important to update score
- // before research in case we run out of time while researching.
- rml.set_move_score(i, value);
- update_pv(ss, 0);
- TT.extract_pv(pos, ss[0].pv, PLY_MAX);
- rml.set_move_pv(i, ss[0].pv);
-
- // Print search information to the standard output
- cout << "info depth " << Iteration
- << " score " << value_to_string(value)
- << ((value >= beta) ? " lowerbound" :
- ((value <= alpha)? " upperbound" : ""))
- << " time " << current_search_time()
- << " nodes " << nodes_searched()
- << " nps " << nps()
- << " pv ";
-
- for (int j = 0; ss[0].pv[j] != MOVE_NONE && j < PLY_MAX; j++)
- cout << ss[0].pv[j] << " ";
-
- cout << endl;
-
- if (UseLogFile)
- {
- ValueType type = (value >= beta ? VALUE_TYPE_LOWER
- : (value <= alpha ? VALUE_TYPE_UPPER : VALUE_TYPE_EXACT));
-
- LogFile << pretty_pv(pos, current_search_time(), Iteration,
- nodes_searched(), value, type, ss[0].pv) << endl;
- }
-
- // Prepare for research
- researchCount++;
- beta = Min(beta + AspirationDelta * (1 << researchCount), VALUE_INFINITE);
-
- } // End of fail high loop