The root cause was a classic fixed-size epsilon issue. The code that
checked if an fcurve was effectively flat, and thus shouldn't be
normalized, used a fixed-size epsilon that was reasonable for values
close-ish to zero, but didn't work well for values >= 1.0.
This patch addresses the issue by introducing a robust ulps-based
comparison, to ensure that a minimum number of representable floats
exist between the min/max values of the curve. This approach scales
appropriately up and down to both huge and tiny values.