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

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

# Interaction between rounding direction and trigonometric functions

• From: Roberto Bagnara <bagnara at cs dot unipr dot it>
• To: libc-help at sourceware dot org
• Date: Fri, 05 Sep 2008 19:29:42 +0200
• Subject: Interaction between rounding direction and trigonometric functions
• Organization: Department of Mathematics, University of Parma, Italy

Hi there,

I have the following observation:

```\$ cat bug2.cc
#include <fenv.h>
#include <iostream>
#include <cmath>```

```int main() {
double theta = 5.27905511969922880410877041867934167385101318359375;```

```  std::cout << "theta = " << theta << "\n";
std::cout << "sin(theta) = " << sin(theta) << "\n";
std::cout << "cos(theta) = " << cos(theta) << "\n";```

```  std::cout << "Repeating after setting the rounding direction to UPWARD:"
<< std::endl;```

```  fesetround(FE_UPWARD);
std::cout << "theta = " << theta << "\n";
std::cout << "sin(theta) = " << sin(theta) << "\n";
std::cout << "cos(theta) = " << cos(theta) << "\n";
}
\$ g++ -W -Wall bug2.cc
\$ a.out
theta = 5.27906
sin(theta) = -0.843695
cos(theta) = 0.536822
Repeating after setting the rounding direction to UPWARD:
theta = 5.27906
sin(theta) = -0.119458
cos(theta) = 12.1636
\$```

```This happens on a Fedora 7, x86_64  system, with glibc-2.6-4
and GCC 4.3.2.```

```As you see, after setting the rounding direction to UPWARD,
the results are grossly wrong, to the point of cos() returning
12.1636.  I wonder if this is a bug or if I am using sin()
and cos() outside their specification.  I have checked
the glibc manual, but I did not find anything allowing to
All the best,```

Roberto

```--
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara@cs.unipr.it```

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