The clamp(v,a,b) function wraps v around the interval [a,b).
However prior to this commit, `clamp` was ignoring the third argument
and using the second argument again in its place. This resulted in a
division by zero. Hence `clamp` didn't work at all.
Even if the arguments were treated correctly, `clamp` incorrectly
multiplied rather than added whenever v < a. This would have produced
bogus results. (Thanks to Shona McNeill for pointing this out.)
Note that as implemented, `clamp` is undefined for b >= a.
These errors are present in the last upstream C version, v2.7.
They've been corrected in the C++ version that upstream now maintains
instead.
Thanks-to: Shona McNeill <prufrax@googlemail.com>
FS-7070 #resolve