diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/ieee754/ldbl-96/s_lroundl.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sysdeps/ieee754/ldbl-96/s_lroundl.c b/sysdeps/ieee754/ldbl-96/s_lroundl.c index e34edd307d..7a59835783 100644 --- a/sysdeps/ieee754/ldbl-96/s_lroundl.c +++ b/sysdeps/ieee754/ldbl-96/s_lroundl.c @@ -58,13 +58,15 @@ __lroundl (long double x) else { u_int32_t j = i1 + (0x80000000 >> (j0 - 31)); + unsigned long int ures = i0; + if (j < i1) - ++i0; + ++ures; if (j0 == 31) - result = (long int) i0; + result = ures; else - result = ((long int) i0 << (j0 - 31)) | (j >> (63 - j0)); + result = (ures << (j0 - 31)) | (j >> (63 - j0)); } } else |