00001 #ifndef UTIL_HH
00002 #define UTIL_HH
00003
00004 #include <algorithm>
00005 #include <vector>
00006
00008 namespace util {
00009
00011 template <typename T>
00012 T sqr(T a)
00013 {
00014 return a * a;
00015 }
00016
00020 template <typename T>
00021 T
00022 median(std::vector<T> v)
00023 {
00024 std::sort(v.begin(), v.end());
00025 return v[v.size() / 2];
00026 }
00027
00029 template <typename T>
00030 T
00031 abs(const T &value)
00032 {
00033 if (value < 0)
00034 return -value;
00035 return value;
00036 }
00037
00039 template <typename T>
00040 T
00041 max(const T &a, const T &b)
00042 {
00043 if (a < b)
00044 return b;
00045 return a;
00046 }
00047
00048 };
00049
00050 #endif