diff --git a/src/leansdr/dsp.h b/src/leansdr/dsp.h index 5f4bb65..fe43948 100644 --- a/src/leansdr/dsp.h +++ b/src/leansdr/dsp.h @@ -253,8 +253,8 @@ namespace leansdr { float current_freq; void set_freq(float f) { for ( int i=0; i 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 &expi(unsigned short a) const { return lut[a]; diff --git a/src/leansdr/sdr.h b/src/leansdr/sdr.h index 8e0bcba..c564790 100644 --- a/src/leansdr/sdr.h +++ b/src/leansdr/sdr.h @@ -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 - 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 - 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);