// RootMove::operator<() is the comparison function used when
// sorting the moves. A move m1 is considered to be better
// than a move m2 if it has a higher score, or if the moves
- // have equal score but m1 has the higher node count.
+ // have equal score but m1 has the higher beta cut-off count.
bool operator<(const RootMove& m) const {
return score != m.score ? score < m.score : theirBeta <= m.theirBeta;
// better than the second best move.
const Value EasyMoveMargin = Value(0x200);
+ // Maximum number of moves to try before to split (strong YBWC)
+ const int MaximumSplitMove = 3;
+
// Last seconds noise filtering (LSN)
const bool UseLSNFiltering = true;
const int LSNTime = 4000; // In milliseconds
if ( TM.active_threads() > 1
&& bestValue < beta
&& depth >= MinimumSplitDepth
+ && (PvNode || moveCount > MaximumSplitMove * MinimumSplitDepth / depth)
&& Iteration <= 99
&& TM.available_thread_exists(threadID)
&& !AbortSearch