Re: [LAU] building a debian system for audio

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

 



Fons Adriaensen wrote:
On Wed, May 23, 2007 at 03:25:26PM -0400, Paul Davis wrote:

I am very disappointed to hear that the Debian package is using
SYSLIBS=1.

This gives me two occasions to show my ignorance instead of just
the one I was going to post :-)

1. What does SYSLIBS=1 imply ?

2. (Original reason for this post)

I've been chasing a bug for hours this afternoon, and the conclusion is that apparently g++, under some conditions, is not consistent
in the way it rounds floats to ints in a expression such as

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.

Probably pointing out something obvious:

If you do -march=pentium4 the compiler uses a specific ASM opcode (I forgot which one) to do the conversion, otherwise it generates some very inefficient code. Actually specifying -march=pentium is already enough for this.

The question is: is the behavior still within the spec? If so, there is nothing wrong. Although it would be nice to have some predictability, with floats that seems to be somewhat dubious. But I don't know the spec details, so maybe I should shut up...

Pieter
_______________________________________________
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