demod: lowpass reorder speedup

pull/53/head
Zilog80 2022-09-27 00:39:57 +02:00
rodzic df5ddc2872
commit 02a0fba03f
2 zmienionych plików z 19 dodań i 7 usunięć

Wyświetl plik

@ -274,13 +274,13 @@ static int lowpass_init(float f, int taps, float **pws) {
}
static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
ui32_t n;
ui32_t s = sample % taps;
double complex w = 0;
float complex w = 0; // -Ofast
int n;
int S = taps-1 - (sample % taps);
for (n = 0; n < taps; n++) {
w += buffer[n]*ws[taps+s-n]; // ws[taps+s-n] = ws[(taps+sample-n)%taps]
w += buffer[n]*ws[S+n]; // ws[taps+s-n] = ws[(taps+sample-n)%taps]
}
return (float complex)w;
return w;
// symmetry: ws[n] == ws[taps-1-n]
}

Wyświetl plik

@ -465,7 +465,7 @@ static int f32read_cblock(dsp_t *dsp) {
int n;
int len;
float x, y;
ui8_t s[4*2*dsp->decM]; //uin8,int16,flot32
ui8_t s[4*2*dsp->decM]; //uin8,int16,float32
ui8_t *u = (ui8_t*)s;
short *b = (short*)s;
float *f = (float*)s;
@ -625,7 +625,7 @@ static float complex lowpass0(float complex buffer[], ui32_t sample, ui32_t taps
}
return (float complex)w;
}
static float complex lowpass1(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
static float complex lowpass1d(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
ui32_t n;
ui32_t s = sample % taps;
double complex w = 0;
@ -635,7 +635,19 @@ static float complex lowpass1(float complex buffer[], ui32_t sample, ui32_t taps
return (float complex)w;
// symmetry: ws[n] == ws[taps-1-n]
}
//static __attribute__((optimize("-ffast-math"))) float complex lowpass1bf()
static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
float complex w = 0; // -Ofast
int n;
int S = taps-1 - (sample % taps);
for (n = 0; n < taps; n++) {
w += buffer[n]*ws[S+n]; // ws[taps+s-n] = ws[(taps+sample-n)%taps]
}
return w;
// symmetry: ws[n] == ws[taps-1-n]
}
//static __attribute__((optimize("-ffast-math"))) float complex lowpass2()
static float complex lowpass2(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
float complex w = 0; // -Ofast
int n;
int s = sample % taps; // lpIQ