31 template<
typename T>
static inline T Clamp(T val, T min, T max)
50 template<
typename T>
static inline T Rescale(T val, T min0, T max0, T min1, T max1)
54 val = Clamp<T> (val, min0, max0);
55 return (val - min0) * (max1 - min1) / (max0 - min0) + min1;
63 template<
typename T>
static inline std::string ToString(T val)
75 template<
typename T>
static inline int Sign(T val)
89 template<
typename T>
static inline T Abs(T val)
104 template<
typename T>
static void MinMaxMean(T val[],
int n, T* minOut,
105 T* maxOut, T* meanOut)
115 T min = val[0], max = val[0];
117 for (
int i = 0; i < n; ++i)
138 template<
typename T>
static inline T AddDeadband(T raw, T deadbandSize)
140 if (Util::Abs<T>(raw) < deadbandSize)
142 return Util::Sign<T>(raw) * Util::Rescale<T>(Util::Abs<T>(raw),
143 deadbandSize, 1, 0, 1);
153 static inline T ValWithAbsMax(T val1, T val2)
155 if (Util::Abs<T>(val1) > Util::Abs<T>(val2))
167 static inline T Max(T val1, T val2)
181 static inline T Min(T val1, T val2)
195 static inline T MinAbs(T val1, T val2)
197 if (fabs(val1) < fabs(val2))
209 static inline T PowPreseveSign(T val,
int power)
211 T result = pow(val, power);
212 if (Sign<T> (val) == Sign<T> (result))
219 static inline T lexical_cast(
string value)
222 stringstream sstream(value);
223 sstream >> std::boolalpha >> temp;
228 static inline string lexical_cast(T value)
230 return std::string(static_cast<ostringstream*>(&(ostringstream() << value))->str());
236 template<
class A,
class B>
237 static bool DeleteMapFirst(pair<A, B> x)
250 template<
class A,
class B>
251 static bool DeleteMapSecond(pair<A, B> x)
264 template<
class A,
class B>
265 static bool DeleteMapBoth(pair<A, B> x)
285 static bool DeleteVector(A x)
304 static void Die(
const char* message);
312 static bool Assert(
bool test,
const char* message);