fn snmp_can_be_applied<const PV: bool>(
    context: &mut SearchContext,
    depth: i8,
    beta: i16,
    friendly_king_checked: bool
) -> bool
Expand description

The main idea of the static null move pruning (also called as reverse futility pruning) is to prune all nodes, which (based on static evaluation) are too good compared to the current beta, and will very likely be a cut-node. To save time, we skip move loop entirely and return beta + some margin score. The concept is very similar to null move pruning, but without performing any search.

Conditions:

  • only non-PV nodes
  • depth >= snmp_min_depth
  • depth <= snmp_max_depth
  • beta is not a mate score
  • friendly king is not checked