The old shrinker would simply subtract one from the current value, which was ineffective when shrinking large ranges (e.g. choose(0, 16#ffffffff)). This new shrinker converges towards min by repeatedly halving the difference between current value and min. Below are outputs from sample shrink:
The old shrinker would simply subtract one from the current value, which was ineffective when shrinking large ranges (e.g.
choose(0, 16#ffffffff)
). This new shrinker converges towards min by repeatedly halving the difference between current value and min. Below are outputs from sample shrink:Old Shrinker
New Shrinker