This part is a composite literal :
(union { float v; uint32_t r; }){(int)x}
This is basically a conversion from a variable cast in intto float(the first element union)
Uses this floatas uint32_t:
.r
And removes the last 21 bits (mantissa?):
>>21
-496
:
union t {
float v;
uint32_t r;
};
union t u;
u.v = (int)x;
u.r >>= 21;
return u.r - 496;