Re: [LAU] building a debian system for audio

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



fons@xxxxxxxxxxxxxxx:
> On Wed, May 23, 2007 at 10:33:12PM +0200, Karl Hammar wrote:
> > On Wed, May 23, 2007 at 10:00:38PM +0200, Fons Adriaensen wrote:
...
> > > float  a, b, x;
> > > int    y;
> > > 
> > >    y = (int)((x - a) * b + 0.5f);
> > > 
> > > I have this calculation twice, in the same source file. In one
> > > case it's within a for loop, in the second case it's just a single
> > > calculation. Both use exactly the same values for a, b, and x, yet
> > > the result is different (by 1). The value before the cast its something
> > > like 115.50424, and that gets rounded up in one case and down in the
> > > other.
> > > 
> > > This is with -O3. Same with -O2, -O1, but OK without optimisation, and
> > > also OK if I use -O3 -march=pentium4.
> > > 
> > > Is this to be expected, and should I use floorf() to avoid it, or is it
> > > something that should not happen ?
> > 
> > It might not be a bug. You are not guaranteed of the same order of
> > evaluation of arithmetic expressions in C. If you want that you have
> > to use FORTRAN or assembler (maybe some other language has it also).
> 
> 1. There is absolutely no ambiguity in order of execution of the statement
>    above.
> 
> 	- subtract a from x
> 	- multiply by b
> 	- add 0.5
>         - cast to int

No, but as others has discussed, you have used an optimiser.
Also, what are the values of x, a, b and f, or, what is the numerical
error of the sum? If it is greater than 0.004, you are basically
looking at noise. That is the reason it suggested using doubles.

> 2. In both cases the floating point result was the same. Only the case to int
>    was different.

Which cases?

Regards,
/Karl

-----------------------------------------------------------------------
Karl Hammar                    Aspö Data               karl@xxxxxxxxxxx
Lilla Aspö 2340                                                Networks
S-742 94 Östhammar          +46  173 140 57                   Computers
Sweden                     +46  70 511 97 84                 Consulting
-----------------------------------------------------------------------


_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@xxxxxxxxxxxxxxxxxxxx
http://lists.linuxaudio.org/mailman/listinfo.cgi/linux-audio-user

[Index of Archives]     [Linux Sound]     [ALSA Users]     [Pulse Audio]     [ALSA Devel]     [Sox Users]     [Linux Media]     [Kernel]     [Photo Sharing]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux