git-svn-id: http://moon:8086/svn/software/trunk/libsrc/radio@1 b431acfa-c32f-4a4a-93f1-934dc6c82436
84 lines
1.5 KiB
C
Executable File
84 lines
1.5 KiB
C
Executable File
// --------------------------------------------------------------
|
|
#include <string.h>
|
|
#include <math.h>
|
|
#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);
|
|
}
|
|
|
|
// --------------------------------------------------------------
|