// -------------------------------------------------------------- #include #include #include "radio_types.h" // -------------------------------------------------------------- // Real Functions // -------------------------------------------------------------- radio_float_t dabs(radio_float_t x) { if (x < 0) return -x; return x; } radio_float_t dsign(radio_float_t x) { if (x < 0) return -1.0; return 1.0; } radio_float_t dmod(radio_float_t x, radio_float_t y) { int xy; if (y == 0) return x; xy = (int)floor(x/y); return dsign(y)*(radio_float_t)fabs(x - y*(radio_float_t)xy); } radio_float_t dmax(radio_float_t x, radio_float_t y) { if (x > y) return x; return y; } radio_float_t dmin(radio_float_t x, radio_float_t y) { if (x < y) return x; return y; } radio_float_t dclamp(radio_float_t x, radio_float_t limit_low, radio_float_t limit_high) { return dmin(dmax(x, limit_low), limit_high); } radio_float_t powerDB(radio_float_t v1, radio_float_t preScale) { return (radio_float_t)(10*log10(RADIO_POWER_EPS + v1*preScale)); } radio_float_t dsum(radio_float_t *pSrc, int len) { radio_float_t sum = 0; while(len--) sum += *(pSrc++); return sum; } radio_float_t dmean(radio_float_t *pSrc, int len) { return dsum(pSrc, len)/len; } radio_float_t dpow(radio_float_t base, radio_float_t exp) { return (radio_float_t)pow(base, exp); } // --------------------------------------------------------------