bug-glibc
[Top][All Lists]
Advanced

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

ieee754/dbl-64 bug in V2.2.4


From: Marius Groeger
Subject: ieee754/dbl-64 bug in V2.2.4
Date: Fri, 26 Oct 2001 17:11:09 +0200 (CEST)

Hi,

we've encountered erratic behavior in the ieee754 code. We're using
gcc version 2.95.3 20010315 (release) to compile. glibc was configured
with the following options:

--prefix=...
--host=i386-linux
--enable-add-ons=linuxthreads
--with-headers=/opt/elinos/cdk/x86/386/libc6/i386-linux/include
--disable-profile
--without-cvs
--without-fp
--disable-static

Problem-Description:

The log(), sin() and cos() functions hangs in an infinite loop down in
sysdeps/ieee754/dbl-64/mpa.c::norm():141-142. The bug shows up only
under special circumstances, apparently when certain rounding errors
have accumulated. I was able to reproduce the error with the following
code:

------------------------------------------------------------------
#include <stdio.h>
#include <math.h>

union num {
    unsigned int i[2];
    double d;
};

int main(void)
{
    double j;
    union num x;

    /* this is +1.8432000000000004 times 2 to the -10 or 0.18 */
    x.i[1] = 0x3f5d7dbf;
    x.i[0] = 0x487fcb94;

    printf("cos(%g) = ", x.d);
    fflush(stdout);
    j = cos(x.d);
    printf("%g\n", j);

    return 0;
}
------------------------------------------------------------------

If you can't reproduce the bug with this, try:

------------------------------------------------------------------
double j,i;
for(i = 0.0; ; i += 0.0001)
{
    printf("cos(%g) = ", i);
    fflush(stdout);
    j = cos(i);
    printf("%g\n", j);
}
------------------------------------------------------------------


Thanks for any help you can spare!
Marius

-----------------------------------------------------------------------------
Marius Groeger           SYSGO Real-Time Solutions GmbH     address@hidden
Software Engineering     Embedded and Real-Time Software    www.sysgo.de
Voice: +49-6136-9948-0   Am Pfaffenstein 14                 www.osek.de
FAX:   +49-6136-9948-10  55270 Klein-Winternheim, Germany   www.elinos.com





reply via email to

[Prev in Thread] Current Thread [Next in Thread]