Hi Martin, Can I pick your brain on how this works?
My biggest question is why to use the typedef__u32__attribute__ line inside an inline function. Don't you only have to do this once? If so, wouldn't you place that line outside the function? On Thu, Aug 2, 2012 at 7:39 AM, Martin Homuth-Rosemann <[email protected]> wrote: > static inline float daz( float f ) If we remove the "static" scope of this function, could we make a header and re-use this code efficiently? > { > // define an aliasing type to perform a "reinterpret cast" > typedef __u32 __attribute__ (( __may_alias__ )) u32bit; > if ( *( (u32bit*)&f ) & 0x7F000000 ) // E > 1 : normal. Is there a 64-bit version of the same? This appears to work with a 32-bit unsigned int as a pointer, meaning that it's applicable to 32-bits. How does a "reinterpret cast" work? What this does is check the exponent is non-zero, right? Doesn't this also depend on the mantissa? for example, if the mantissa is 2^24-1 and the exponent is zero, is that number still a denormal? > return f; > else // E <= 1 : zero or _almost_ denormal > // (may become denormal with next operation) > return 0.0; > } > > Ciao, Martin Thanks for the code--any further explanation would be enlightening. Chuck _______________________________________________ Linux-audio-dev mailing list [email protected] http://lists.linuxaudio.org/listinfo/linux-audio-dev
