/* Some little helpers Copyright 2018 Ahmet Inan */ #ifndef UTILS_HH #define UTILS_HH #include "const.hh" namespace DSP { template int signum(TYPE v) { return (v > TYPE(0)) - (v < TYPE(0)); } template AB lerp(X x, AB a, AB b) { return (X(1) - x) * a + x * b; } template TYPE normal_pdf(TYPE x, TYPE m, TYPE s) { return std::exp(-std::pow((x - m) / s, TYPE(2)) / TYPE(2)) / (Const::SqrtTwoPi() * s); } template TYPE sinc(TYPE x) { return TYPE(0) == x ? TYPE(1) : std::sin(Const::Pi() * x) / (Const::Pi() * x); } template TYPE delta(TYPE x) { return TYPE(0) == x ? TYPE(1) : TYPE(0); } template TYPE decibel(TYPE v) { return TYPE(10) * std::log10(v); } } #endif