template<class T>
class DataSqueezer< T >
Fits values into a pre-defined range.
The Squeezer has 2 ranges: The limits The 'untouched' limits
No data will go outside the limits. If you only want a one-sided squeeze, pass an undefined value (not a very large number!). For good squeezing, you have to give the squeezer some 'work space'. You can do this by defining an 'untouched' range. In that range, output will be the same as input. In the zone outside that range, the Squeezer will return a value between the limit value and the input value, in such a way that the output will be nicely continuous - up to first derivative.
For example: DataSqueezer<float> sq( Interval<float>(mUdf(float),10) ); sq.setUntouchedRange( Interval<float>(mUdf(float),8) ); will map values in range [8,Inf] on [8,10].
By default, the Squeezer will behave like a 'Clipper'. You have to use setUntouchedRange() to get proper squeezing behaviour.
<>