kopia lustrzana https://github.com/pabr/leansdr
Portability: Do not use glibc-specific sincosf
rodzic
2a598a4c44
commit
da7ac42e89
|
@ -253,8 +253,8 @@ namespace leansdr {
|
|||
float current_freq;
|
||||
void set_freq(float f) {
|
||||
for ( int i=0; i<ncoeffs; ++i ) {
|
||||
float c, s;
|
||||
sincosf(2*M_PI*f*(i-ncoeffs/2), &s, &c);
|
||||
float a = 2*M_PI * f * (i-ncoeffs/2);
|
||||
float c=cosf(a), s=sinf(a);
|
||||
// TBD Support T=complex
|
||||
shifted_coeffs[i].re = coeffs[i] * c;
|
||||
shifted_coeffs[i].im = coeffs[i] * s;
|
||||
|
@ -336,8 +336,8 @@ namespace leansdr {
|
|||
float current_freq;
|
||||
void set_freq(float f) {
|
||||
for ( int i=0; i<ncoeffs; ++i ) {
|
||||
float c, s;
|
||||
sincosf(2*M_PI*f*i, &s, &c);
|
||||
float a = 2*M_PI * f * i;
|
||||
float c=cosf(a), s=sinf(a);
|
||||
// TBD Support T=complex
|
||||
shifted_coeffs[i].re = coeffs[i] * c;
|
||||
shifted_coeffs[i].im = coeffs[i] * s;
|
||||
|
|
|
@ -72,8 +72,11 @@ namespace leansdr {
|
|||
struct trig16 {
|
||||
complex<float> lut[65536]; // TBD static and shared
|
||||
trig16() {
|
||||
for ( int a=0; a<65536; ++a )
|
||||
sincosf(a*2*M_PI/65536, &lut[a].im, &lut[a].re);
|
||||
for ( int a=0; a<65536; ++a ) {
|
||||
float af = a * 2*M_PI / 65536;
|
||||
lut[a].re = cosf(af);
|
||||
lut[a].im = sinf(af);
|
||||
}
|
||||
}
|
||||
inline const complex<float> &expi(unsigned short a) const {
|
||||
return lut[a];
|
||||
|
|
|
@ -873,15 +873,16 @@ namespace leansdr {
|
|||
s.im = (int)(p0r->im + (p1r->im-p0r->im)*mu);
|
||||
symbol_arg = fast_arg(s);
|
||||
#else // Linear floating-point, for reference
|
||||
float cosph, sinph;
|
||||
sincosf(-(int)phase*M_PI/32768, &sinph, &cosph);
|
||||
float a0 = -(int)phase*M_PI/32768;
|
||||
float cosa0=cosf(a0), sina0=sinf(a0);
|
||||
complex<float>
|
||||
p0r(((float)pin[0].re-128)*cosph - ((float)pin[0].im-128)*sinph,
|
||||
((float)pin[0].re-128)*sinph + ((float)pin[0].im-128)*cosph);
|
||||
sincosf(-(int)(phase+freqw)*M_PI/32768, &sinph, &cosph);
|
||||
p0r(((float)pin[0].re-128)*cosa0 - ((float)pin[0].im-128)*sina0,
|
||||
((float)pin[0].re-128)*sina0 + ((float)pin[0].im-128)*cosa0);
|
||||
float a1 = -(int)(phase+freqw)*M_PI/32768;
|
||||
float cosa1=cosf(a1), sina1=sinf(a1);
|
||||
complex<float>
|
||||
p1r(((float)pin[1].re-128)*cosph - ((float)pin[1].im-128)*sinph,
|
||||
((float)pin[1].re-128)*sinph + ((float)pin[1].im-128)*cosph);
|
||||
p1r(((float)pin[1].re-128)*cosa1 - ((float)pin[1].im-128)*sina1,
|
||||
((float)pin[1].re-128)*sina1 + ((float)pin[1].im-128)*cosa1);
|
||||
s.re = (int)(128 + p0r.re + (p1r.re-p0r.re)*mu);
|
||||
s.im = (int)(128 + p0r.im + (p1r.im-p0r.im)*mu);
|
||||
symbol_arg = fast_arg(s);
|
||||
|
|
Ładowanie…
Reference in New Issue