kopia lustrzana https://github.com/rs1729/RS
demod_mod: decimate/lowpass -Ofast speed-up
rodzic
f2402c3b3d
commit
d7497540e2
|
@ -625,7 +625,7 @@ static float complex lowpass0(float complex buffer[], ui32_t sample, ui32_t taps
|
|||
}
|
||||
return (float complex)w;
|
||||
}
|
||||
static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
static float complex lowpass1(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
ui32_t n;
|
||||
ui32_t s = sample % taps;
|
||||
double complex w = 0;
|
||||
|
@ -635,6 +635,22 @@ static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps,
|
|||
return (float complex)w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
float complex w = 0; // -Ofast
|
||||
int n;
|
||||
int s = sample % taps; // lpIQ
|
||||
int S1 = s+1;
|
||||
int S1N = S1-taps;
|
||||
int n0 = taps-1-s;
|
||||
for (n = 0; n < n0; n++) {
|
||||
w += buffer[S1+n]*ws[n];
|
||||
}
|
||||
for (n = n0; n < taps; n++) {
|
||||
w += buffer[S1N+n]*ws[n];
|
||||
}
|
||||
return w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
|
||||
static float re_lowpass0(float buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
ui32_t n;
|
||||
|
|
|
@ -699,7 +699,7 @@ static float complex lowpass0(float complex buffer[], ui32_t sample, ui32_t taps
|
|||
}
|
||||
return (float complex)w;
|
||||
}
|
||||
static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
static float complex lowpass1(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
ui32_t n;
|
||||
ui32_t s = sample % taps;
|
||||
double complex w = 0;
|
||||
|
@ -709,6 +709,22 @@ static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps,
|
|||
return (float complex)w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
float complex w = 0; // -Ofast
|
||||
int n;
|
||||
int s = sample % taps; // lpIQ
|
||||
int S1 = s+1;
|
||||
int S1N = S1-taps;
|
||||
int n0 = taps-1-s;
|
||||
for (n = 0; n < n0; n++) {
|
||||
w += buffer[S1+n]*ws[n];
|
||||
}
|
||||
for (n = n0; n < taps; n++) {
|
||||
w += buffer[S1N+n]*ws[n];
|
||||
}
|
||||
return w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
|
||||
static float re_lowpass0(float buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
ui32_t n;
|
||||
|
|
|
@ -395,7 +395,7 @@ 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) {
|
||||
static float complex lowpass1(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
ui32_t n;
|
||||
ui32_t s = sample % taps;
|
||||
double complex w = 0;
|
||||
|
@ -405,6 +405,22 @@ static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps,
|
|||
return (float complex)w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
float complex w = 0; // -Ofast
|
||||
int n;
|
||||
int s = sample % taps; // lpIQ
|
||||
int S1 = s+1;
|
||||
int S1N = S1-taps;
|
||||
int n0 = taps-1-s;
|
||||
for (n = 0; n < n0; n++) {
|
||||
w += buffer[S1+n]*ws[n];
|
||||
}
|
||||
for (n = n0; n < taps; n++) {
|
||||
w += buffer[S1N+n]*ws[n];
|
||||
}
|
||||
return w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
|
||||
static float re_lowpass(float buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
ui32_t n;
|
||||
|
|
|
@ -733,7 +733,7 @@ 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) {
|
||||
static float complex lowpass1(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
ui32_t n;
|
||||
ui32_t s = sample % taps;
|
||||
double complex w = 0;
|
||||
|
@ -743,6 +743,22 @@ static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps,
|
|||
return (float complex)w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
float complex w = 0; // -Ofast
|
||||
int n;
|
||||
int s = sample % taps; // lpIQ
|
||||
int S1 = s+1;
|
||||
int S1N = S1-taps;
|
||||
int n0 = taps-1-s;
|
||||
for (n = 0; n < n0; n++) {
|
||||
w += buffer[S1+n]*ws[n];
|
||||
}
|
||||
for (n = n0; n < taps; n++) {
|
||||
w += buffer[S1N+n]*ws[n];
|
||||
}
|
||||
return w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
|
||||
static float re_lowpass(float buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
ui32_t n;
|
||||
|
|
|
@ -650,7 +650,7 @@ static float complex lowpass0(float complex buffer[], ui32_t sample, ui32_t taps
|
|||
}
|
||||
return (float complex)w;
|
||||
}
|
||||
static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
static float complex lowpass1(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
ui32_t n;
|
||||
ui32_t s = sample % taps;
|
||||
double complex w = 0;
|
||||
|
@ -660,6 +660,22 @@ static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps,
|
|||
return (float complex)w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
float complex w = 0; // -Ofast
|
||||
int n;
|
||||
int s = sample % taps; // lpIQ
|
||||
int S1 = s+1;
|
||||
int S1N = S1-taps;
|
||||
int n0 = taps-1-s;
|
||||
for (n = 0; n < n0; n++) {
|
||||
w += buffer[S1+n]*ws[n];
|
||||
}
|
||||
for (n = n0; n < taps; n++) {
|
||||
w += buffer[S1N+n]*ws[n];
|
||||
}
|
||||
return w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
|
||||
|
||||
static int f32buf_sample(FILE *fp, int inv) {
|
||||
|
|
Ładowanie…
Reference in New Issue