When a move is detected to lead to a repeat, we return the corresponding
score with a validity depth just enough to satisfy the current depth
request. This prevents earlier positions contaminated by the score to
last unnecessarily long in the hash table.
else if(gain == pawn || gain >= (400<<21)) score = INF-1; // quasi-repeat with extra piece in hand
else if(gain == -pawn || gain <= (-400<<21)) score = 1-INF; // or with one piece less
else goto search;// traded one hand piece for another; could still lead somewhere
+ f.depth = (score >= beta ? highDepth+1 : iterDepth); // minimum required depth
*pvPtr = 0; // fake that daughter returned empty PV
} else { // not a repeat: search it
int lmr;