This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug math/15388] New: Erroneous output from floating point tan
- From: "simplyrahul17 at gmail dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Tue, 23 Apr 2013 02:59:46 +0000
- Subject: [Bug math/15388] New: Erroneous output from floating point tan
- Auto-submitted: auto-generated
http://sourceware.org/bugzilla/show_bug.cgi?id=15388
Bug #: 15388
Summary: Erroneous output from floating point tan
Product: glibc
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: math
AssignedTo: unassigned@sourceware.org
ReportedBy: simplyrahul17@gmail.com
Classification: Unclassified
On executing the following code (compiled with g++ 4.6.3 on Intel(R) Core(TM)
i7-2600 CPU @ 3.40GHz running Ubuntu 12.04.1 LTS):
#include<cmath>
#include<stdio.h>
using namespace std;
int main()
{
float f = 4386557896710122704971697171202048.0;
printf("%.16f\n", tan(f));
return 0;
}
I get the output as 33554432.0
The expected output is 97800744.0
In hex, this means libm says
tan(0x77584625) = 0x4C000000
However, the output should be 0x4CBA8A45.
The "correct" output was obtained using WolframAlpha
(97800745.2669871207241704332677514328806018068212018723832)
and one other compiler does produce the right output
(in hex 0x4CBA8A45, in decimal 97800744.0)
for the same program.
I know that the input is a bit strange, but looking at the hex
it seems to be a valid representable floating point number.
Using double instead of float makes the problem go away.
--
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.