- if(ext == Depth(0) && moveCount >= LMRNonPVMoves
- && !moveIsCapture && !move_promotion(move) && !moveIsPassedPawnPush
- && !move_is_castle(move)
- && move != ss[sp->ply].killer1 && move != ss[sp->ply].killer2) {
- ss[sp->ply].reduction = OnePly;
- value = -search(pos, ss, -(sp->beta-1), newDepth - OnePly, sp->ply+1,
- true, threadID);
+
+ // Try to reduce non-pv search depth by one ply if move seems not problematic,
+ // if the move fails high will be re-searched at full depth.
+ if ( ext == Depth(0)
+ && moveCount >= LMRNonPVMoves
+ && !moveIsCapture
+ && !moveIsPassedPawnPush
+ && !move_promotion(move)
+ && !move_is_castle(move)
+ && move != ss[sp->ply].killer1
+ && move != ss[sp->ply].killer2)
+ {
+ ss[sp->ply].reduction = OnePly;
+ value = -search(pos, ss, -(sp->beta-1), newDepth - OnePly, sp->ply+1, true, threadID);