diff --git a/range.cpp b/range.cpp index 55b8d763..3e70aa82 100644 --- a/range.cpp +++ b/range.cpp @@ -95,6 +95,23 @@ range::normalise (T val) const { } +template +range& +range::operator*= (T val) { + min *= val; + max *= val; + + return *this; +} + + +template +range +range::operator* (T val) const { + return range (min * val, max * val); +} + + namespace util { template <> double diff --git a/range.hpp b/range.hpp index 3a809f1f..4c76e99e 100644 --- a/range.hpp +++ b/range.hpp @@ -48,9 +48,22 @@ namespace util { /// Expand the range to include this value if necessary void expand (T val); + /// Normalise a number to [0, 1] within the range. Does not check bounds. double normalise (T val) const; + range& operator*= (T); + range operator* (T) const; + + range& operator/= (T); + range operator/ (T) const; + + range& operator+= (T); + range operator+ (T) const; + + range& operator-= (T); + range operator- (T) const; + /// Return a pseudo-random uniformly distributed value within the range. /// There are no statistical randomness guarantees whatsoever. T random (void) const;