On Thu, Jun 24, 2004 at 02:11:34AM -0300, Juan Linietsky wrote:
#define undenormalise(sample) if(((*(unsigned
int*)&sample)&0x7f800000)==0)
sample=0.0f
however gcc 3.3 and 3.4 seem to produce an undesired effect
when the optimizer is turned on, rendering this macro unusable..
this breaks freeverb and a few other stuff I have that uses it.
It violates C99's pointer aliasing rules. I've posed a C99 friendly
version later in the thread.
Another point of differentiation between denomal hacks is tht this one
doesnt even analyse the potential denomal as a float, so you miss one
denomal operation that can occur with cleaner methods.
- Steve