This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug math/13381] New: rounding problem wih sincosl


http://sourceware.org/bugzilla/show_bug.cgi?id=13381

             Bug #: 13381
           Summary: rounding problem wih sincosl
           Product: glibc
           Version: 2.14
            Status: NEW
          Severity: normal
          Priority: P2
         Component: math
        AssignedTo: aj@suse.de
        ReportedBy: gastineau@imcce.fr
    Classification: Unclassified


With some input values, the sincosl function and sinl returns a different value
for the sin part. 

This problem occurs with glibc 2.14.

The code source is at the end of the message.

The output with these compilers is :
gcc -m64 bugsincos.c -O0 -o bugsincos -lm
./bugsincos
diffC=0.000000e+00 C1=0xf.e8f0776670a18eap-4 C=0xf.e8f0776670a18eap-4
diffS=-6.776264e-21 S1=0xd.903ba52345a81a4p-7 S=0xd.903ba52345a81a5p-7

diffS must be 0 if same algorithm is used inside the math library.

If I compile with "-O3", the problem doesn't occur because it doesn't use the
math library.
I give some system information below and the source code.

MickaÃl

xxxxx$ gcc  -m64 bugsincos.c -O0 -o bugsincos -lm
xxxxx$ ./bugsincos
diffC=0.000000e+00 C1=0xf.e8f0776670a18eap-4 C=0xf.e8f0776670a18eap-4
diffS=-6.776264e-21 S1=0xd.903ba52345a81a4p-7 S=0xd.903ba52345a81a5p-7
xxxxx$ nm bugsincos | grep sincosl
                 U sincosl@@GLIBC_2.2.5
xxxxx$ rpm -qa | grep glibc
glibc-static-2.14-5.x86_64
glibc-headers-2.14-5.x86_64
glibc-devel-2.14-5.x86_64
glibc-2.14-5.i686
glibc-common-2.14-5.x86_64
glibc-2.14-5.x86_64
xxxxx$ gcc --version
gcc (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9)
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


-------------- cut here----------------
#include <mathimf.h>
#include <stdio.h>

int main()
{
long double X=0xd.96c3941c1094ed5p-7L;
long double C=cosl(X);
long double S=sinl(X);
long double C1, S1;
sincosl(X, &S1, &C1);
printf("diffC=%Le C1=%La C=%La\n", C1-C, C1, C);
printf("diffS=%Le S1=%La S=%La\n", S1-S, S1, S);
return 0;

}
-------------- cut here----------------

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]