Given a real (n), a maximum value this real can be (upper), and a minimum value this real can be (lower), how can we most efficiently clip n, such that it remains between lo
UPDATE: C++17's
In older C++ versions, I'd very rarely go beyond...
return n <= lower ? lower : n >= upper ? upper : n;
...or, if you find it more readable keeping the left-to-right ordering of lower, n and upper...
return n <= lower ? lower : n <= upper ? n : upper;
(using <= lower is better than < lower because when n == lower it avoids having to compare with upper)
If you know you might have them, you'd want to check if NaN / Inf etc. are preserved....
I say rarely and not never just because sometimes less branching can be faster, but you'd sure want to profile it and prove it helped and mattered....