Static null move pruning looks very much like something that's been in use for years (in gnuchess over 10 years ago etc.), but the SF implementation is far more sophisticated. One like confuses me, though. In the test for whether or not to do the pruning, we have:
Code: Select all
&& refinedValue >= beta + futility_margin(depth, 0))
Code: Select all
&& refinedValue >= beta