fix type-punning warning with -fstrict-aliasing
This commit is contained in:
@ -781,23 +781,27 @@ int ADDCALL hackrf_set_sample_rate(hackrf_device* device, const double freq)
|
|||||||
const int MAX_N = 32;
|
const int MAX_N = 32;
|
||||||
uint32_t freq_hz, divider;
|
uint32_t freq_hz, divider;
|
||||||
double freq_frac = 1.0 + freq - (int)freq;
|
double freq_frac = 1.0 + freq - (int)freq;
|
||||||
uint64_t v, a, m;
|
uint64_t a, m;
|
||||||
int i, e;
|
int i, e;
|
||||||
|
|
||||||
v = *((uint64_t*)&freq);
|
union {
|
||||||
e = (v >> 52) - 1023;
|
uint64_t u64;
|
||||||
|
double d;
|
||||||
|
} v = { .d = freq };
|
||||||
|
|
||||||
|
e = (v.u64 >> 52) - 1023;
|
||||||
|
|
||||||
m = ((1ULL << 52) - 1);
|
m = ((1ULL << 52) - 1);
|
||||||
|
|
||||||
v = *((uint64_t*)&freq_frac);
|
v.d = freq_frac;
|
||||||
v &= m;
|
v.u64 &= m;
|
||||||
|
|
||||||
m &= ~((1 << (e+4)) - 1);
|
m &= ~((1 << (e+4)) - 1);
|
||||||
|
|
||||||
a = 0;
|
a = 0;
|
||||||
|
|
||||||
for (i=1; i<MAX_N; i++) {
|
for (i=1; i<MAX_N; i++) {
|
||||||
a += v;
|
a += v.u64;
|
||||||
if (!(a & m) || !(~a & m))
|
if (!(a & m) || !(~a & m))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user