mirror of
https://git.musl-libc.org/git/musl
synced 2025-01-24 15:12:04 +03:00
use cleaner code for handling float rounding in vfprintf
CONCAT(0x1p,LDBL_MANT_DIG) is not safe outside of libc, use 2/LDBL_EPSILON instead. fix was proposed by Morten Welinder.
This commit is contained in:
parent
c350468658
commit
bff6095d91
@ -13,8 +13,6 @@
|
||||
|
||||
#define MAX(a,b) ((a)>(b) ? (a) : (b))
|
||||
#define MIN(a,b) ((a)<(b) ? (a) : (b))
|
||||
#define CONCAT2(x,y) x ## y
|
||||
#define CONCAT(x,y) CONCAT2(x,y)
|
||||
|
||||
/* Convenient bit representation for modifier flags, which all fall
|
||||
* within 31 codepoints of the space character. */
|
||||
@ -343,7 +341,7 @@ static int fmt_fp(FILE *f, long double y, int w, int p, int fl, int t)
|
||||
x = *d % i;
|
||||
/* Are there any significant digits past j? */
|
||||
if (x || d+1!=z) {
|
||||
long double round = CONCAT(0x1p,LDBL_MANT_DIG);
|
||||
long double round = 2/LDBL_EPSILON;
|
||||
long double small;
|
||||
if (*d/i & 1) round += 2;
|
||||
if (x<i/2) small=0x0.8p0;
|
||||
|
Loading…
Reference in New Issue
Block a user