Browse Source

fix incorrect long double parameters on arm (and other future ports)

this was the cause of crashes in printf when attempting to print
floating point values.
rs-1.0
Rich Felker 15 years ago
parent
commit
089aeb08a0
  1. 20
      arch/arm/bits/float.h
  2. 12
      src/stdlib/frexpl.c

20
arch/arm/bits/float.h

@ -1,14 +1,14 @@
#define FLT_ROUNDS 1
#define FLT_EVAL_METHOD 2
#define FLT_EVAL_METHOD 0
#define LDBL_MIN 3.3621031431120935063e-4932L
#define LDBL_MAX 1.1897314953572317650e+4932L
#define LDBL_EPSILON 1.0842021724855044340e-19L
#define LDBL_MIN 2.2250738585072014e-308
#define LDBL_MAX 1.7976931348623157e+308
#define LDBL_EPSILON 2.2204460492503131e-16
#define LDBL_MANT_DIG 64
#define LDBL_MIN_EXP (-16381)
#define LDBL_MAX_EXP 16384
#define LDBL_MANT_DIG 53
#define LDBL_MIN_EXP (-1021)
#define LDBL_MAX_EXP 1024
#define LDBL_DIG 18
#define LDBL_MIN_10_EXP (-4931)
#define LDBL_MAX_10_EXP 4932
#define LDBL_DIG 15
#define LDBL_MIN_10_EXP (-307)
#define LDBL_MAX_10_EXP 308

12
src/stdlib/frexpl.c

@ -1,5 +1,8 @@
#include <math.h>
#include <inttypes.h>
#include <float.h>
#if LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
/* This version is for 80-bit little endian long double */
@ -23,3 +26,12 @@ long double frexpl(long double x, int *e)
y.hw[4] |= 0x3ffe;
return y.ld;
}
#else
long double frexpl(long double x, int *e)
{
return frexp(x, e);
}
#endif

Loading…
Cancel
Save