This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug math/15470] New: On ARM llrintl() and llroundl() do not raise FE_INVALID with argument out of range
- From: "gcc.hall at gmail dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Wed, 15 May 2013 17:01:15 +0000
- Subject: [Bug math/15470] New: On ARM llrintl() and llroundl() do not raise FE_INVALID with argument out of range
- Auto-submitted: auto-generated
http://sourceware.org/bugzilla/show_bug.cgi?id=15470
Bug #: 15470
Summary: On ARM llrintl() and llroundl() do not raise
FE_INVALID with argument out of range
Product: glibc
Version: 2.13
Status: NEW
Severity: normal
Priority: P2
Component: math
AssignedTo: unassigned@sourceware.org
ReportedBy: gcc.hall@gmail.com
Classification: Unclassified
In the test program below, llrintl() and llroundl() do not raise FE_INVALID
when passed a number one larger than the maximum signed long long int.
The problem was found on ARM hf, it does not occur on x86.
=======================================================================
#include <stdio.h>
#include <math.h>
#include <fenv.h>
int main( void )
{
long long int result;
long double x = 9223372036854775808.0L; // LLONG_MAX + 1.0
printf( "x is %.20Lg\n", x );
feclearexcept( FE_INVALID );
result = llroundl( x );
if( fetestexcept( FE_INVALID ) )
printf( "FE_INVALID set\n" );
else
printf( "FE_INVALID not set!\n" );
printf( "result is %lld\n", result );
return 0;
}
====================================================================
Result:
x is 9223372036854775808
FE_INVALID not set!
result is -9223372036854775808
--
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.