On Sun, Jan 30, 2011 at 02:46:21PM +0100, Philipp Überbacher wrote:
  Thanks, I see this now after Peter did another test
with quite different
 results. I looked at it out of context because I simply don't understand
 the context. I only know what a ft does but not how it works, nor have I
 implemented a fft, so the code with its two-letter variables is
 meaningless to me. 
It's not clear if Peter's test included the '+ 1e-6'. I'd expect the
result to be correct then even with -O3. If not, increasing the added
constant should fix it.
   There's
nothing funky about them, they are part of C and C++. 
 They were funky to me mainly because I had to look them up but also
 because operating on the bit representation requires a different mode of
 thinking. I bet it also has its own set of pitfalls. 
 
If your machine uses BCD integers you could have some surprises...
If you don't like m <<= 1, just write m *= 2. The compiler will
very probably use a bit shift to do this even at low optimisation
levels.
Ciao,
--
FA
There are three of them, and Alleline.