In Nalwald I calculate the reductions like this (value is alpha - staticEval - see(move)):
Code: Select all
func futilityReduction(value: Value): Ply =
if value < 150: return 0.Ply
if value < 200: return 1.Ply
if value < 300: return 2.Ply
if value < 500: return 3.Ply
if value < 750: return 4.Ply
if value < 1050: return 5.Ply
if value < 1400: return 6.Ply
7.Ply
Conditions for this are similar to conditions necessary for futility pruning (no check, ...).
Seems to give about ~20 Elo (maybe even more) compared to an equivalent futility pruning version.
I didn't find this described anywhere, so maybe this helps anyone who's looking for a few Elo points.