On Feb 11 2007, Falk Hueffner wrote: > [EMAIL PROTECTED] writes: > > > In tracking down issues with ganglia/rrdtool, I found that floor() > > is not working properly in testing on my Avanti - it always seems to > > return zero: > > > > [EMAIL PROTECTED]:~$ cat junk.c > > #include <stdio.h> > > #include <math.h> > > > > int main() > > { > > double x = 1.1; > > > > printf("floor(%f) = %f\n", x, floor(x)); > > > > return(0); > > } > > [EMAIL PROTECTED]:~$ gcc junk.c -o junk -lm > > [EMAIL PROTECTED]:~$ ./junk > > floor(1.100000) = 0.000000 > > > > The same code on EV56 produces the expected result. > > > > Anyone have any ideas or recommendations? > > The EV4 FPU cannot round to minus infinity, as glibc's floor wants to > do, so the kernel emulates this. So it's almost certainly a kernel > bug. <snip>
Or pilot error :-( I finally got a chance to look more into this, and I see that I have gaffed. I did not have the math-emu module loaded. Once loaded, floor() (and other stuff) works fine. Maybe everyone except me knew to have math-emu loaded? I was kind of surprised it was not built-in. Is this intended? Cheers, Craig Here's the Kconfig help for MATHEMU: This option is required for IEEE compliant floating point arithmetic on the Alpha. The only time you would ever not say Y is to say M in order to debug the code. Say Y unless you know what you are doing. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]