28 #ifndef _SR_MATH_UTILS_HPP_ 29 #define _SR_MATH_UTILS_HPP_ 31 #include <boost/random/mersenne_twister.hpp> 32 #include <boost/random/uniform_int.hpp> 33 #include <boost/random/uniform_real.hpp> 34 #include <boost/thread/detail/singleton.hpp> 42 static const double pi = 3.14159265;
51 static inline double to_rad(
double degrees)
53 return degrees * 0.017453292519943295;
65 return rad * 57.295779513082323;
68 static inline int ipow(
int base,
int exp)
86 if (bit_mask & (((int64_t) 1) << index))
114 uint16_t last_value = full_value & 0xFFFF;
115 full_value &= (uint64_t) 0xFFFFFFFFFFFF0000LL;
117 if (new_value < last_value)
119 full_value += (uint64_t) 0x0000000000010000LL;
122 full_value |= (uint64_t) new_value;
141 double x0,
double y0,
142 double x1,
double y1)
179 std::pair<double, double>
compute(
double q,
double timestamp)
195 if (
tau > 0.0 &&
dt > 0.0)
226 xk_1(0.0), vk_1(0.0), xk(0.0), vk(0.0), rk(0.0),
241 std::pair<double, double>
compute(
double xm,
double timestamp)
245 xk = xk_1 + (vk_1 *
dt);
258 timestamp_1 = timestamp;
279 static inline int sign(
double x)
281 return x < 0.0 ? -1 : 1;
300 dist(
boost::uniform_real<>(0.0, 1.0))
312 T
generate(T min = static_cast<T> (0), T max = static_cast<T> (1))
314 return static_cast<T
> (
min + dist(gen) * (
max -
min));
335 typedef boost::detail::thread::singleton<class Random_>
Random;
static int sign(double x)
static uint64_t counter_with_overflow(uint64_t full_value, uint16_t new_value)
static double to_degrees(double rad)
T generate(T min=static_cast< T >(0), T max=static_cast< T >(1))
std::pair< double, double > value_derivative
static int ipow(int base, int exp)
static double to_rad(double degrees)
std::pair< double, double > compute(double xm, double timestamp)
std::pair< double, double > value_derivative
double min(double a, double b)
static double linear_interpolate_(double x, double x0, double y0, double x1, double y1)
LowPassFilter(double tau=0.05)
INLINE Rall1d< T, V, S > exp(const Rall1d< T, V, S > &arg)
boost::detail::thread::singleton< class Random_ > Random
AlphaBetaFilter(double alpha=0.85, double beta=0.05)
static bool is_bit_mask_index_true(int64_t bit_mask, int index)
static bool is_bit_mask_index_false(int64_t bit_mask, int index)
std::pair< double, double > compute(double q, double timestamp)
double max(double a, double b)