+ if (FailLow)
+ {
+ //Here we face the rare, but extremely difficult case:
+ //Our aspiration search has failed low and we've run out of time!
+ //So we have no move to play!
+ //Now use the emergency time and try as quickly as possible to
+ //find even one playable move.
+
+ //FIXME: this is only for grepping logs purpose. Remove me when we are sure that this stuff really works!!
+ if (AbortSearch)
+ std::cout << "info depth " << 999 << std::endl;
+ else
+ std::cout << "info depth " << 998 << std::endl;
+
+ //Prepare variables for emergency search
+ AbortSearch = false;
+ FailLow = false;
+ AbsoluteMaxSearchTime = EmergencyMaxSearchTime;
+ MaxSearchTime = EmergencyMaxSearchTime;
+ ExtraSearchTime = 0;
+ rml.sort();
+
+ std::cout << "info depth " << Iteration << std::endl;
+
+ //Cause we failed low, it's _likely_ that we couldn't get over alpha anyway.
+ root_search(p, ss, rml, -VALUE_INFINITE, alpha);
+ }
+