NXPCUP-libary
Library for car's control board on NXPCUP competition based on the Mbed framework.
util.h
Go to the documentation of this file.
1 #pragma once
2 
3 namespace nxpcup {
4 
5 template <typename T>
6 T clamp(T value, T min, T max)
7 {
8  static_assert(std::is_arithmetic<T>::value);
9  if (value < min)
10  return min;
11  if (value > max)
12  return max;
13  return value;
14 }
15 
16 template <typename T>
17 T abs(const T& v)
18 {
19  return v < 0 ? -v : v;
20 }
21 
22 template <typename T>
23 T sign(const T& v)
24 {
25  if (v > 0)
26  return 1;
27  else if (v < 0)
28  return -1;
29  else
30  return 0;
31 }
32 
33 template <typename T>
34 T pow(T base, uint8_t exp = 2)
35 {
36  T res = base;
37  if (exp == 0)
38  return 1;
39  while (--exp != 0)
40  res *= base;
41  return res;
42 }
43 
44 } // namespace nxpcup
T pow(T base, uint8_t exp=2)
Definition: util.h:34
Definition: BorderDetector.h:6
T abs(const T &v)
Definition: util.h:17
T clamp(T value, T min, T max)
Definition: util.h:6
T sign(const T &v)
Definition: util.h:23