Using a #define for constant 2^22 (not pow())

pow() might require the math library to be linked with
rtl-sdl (e.g. when compiling with clang), even though
it's actually constant.

Signed-off-by: Steve Markgraf <steve@steve-m.de>
master
Christian Vogel 13 years ago committed by Steve Markgraf
parent c426e94093
commit 589e96e8d8
  1. 7
      src/librtlsdr.c

@ -675,6 +675,9 @@ int rtlsdr_set_tuner_gain_mode(rtlsdr_dev_t *dev, int mode)
return r; return r;
} }
/* two raised to the power of n */
#define TWO_POW(n) ((double)(1ULL<<(n)))
int rtlsdr_set_sample_rate(rtlsdr_dev_t *dev, uint32_t samp_rate) int rtlsdr_set_sample_rate(rtlsdr_dev_t *dev, uint32_t samp_rate)
{ {
uint16_t tmp; uint16_t tmp;
@ -688,10 +691,10 @@ int rtlsdr_set_sample_rate(rtlsdr_dev_t *dev, uint32_t samp_rate)
if (samp_rate > MAX_SAMP_RATE) if (samp_rate > MAX_SAMP_RATE)
samp_rate = MAX_SAMP_RATE; samp_rate = MAX_SAMP_RATE;
rsamp_ratio = (dev->rtl_xtal * pow(2, 22)) / samp_rate; rsamp_ratio = (dev->rtl_xtal * TWO_POW(22)) / samp_rate;
rsamp_ratio &= ~3; rsamp_ratio &= ~3;
real_rate = (dev->rtl_xtal * pow(2, 22)) / rsamp_ratio; real_rate = (dev->rtl_xtal * TWO_POW(22)) / rsamp_ratio;
if ( ((double)samp_rate) != real_rate ) if ( ((double)samp_rate) != real_rate )
fprintf(stderr, "Exact sample rate is: %f Hz\n", real_rate); fprintf(stderr, "Exact sample rate is: %f Hz\n", real_rate);

Loading…
Cancel
Save