diff options
Diffstat (limited to 'REORG.TODO/misc/qefgcvt_r.c')
-rw-r--r-- | REORG.TODO/misc/qefgcvt_r.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/REORG.TODO/misc/qefgcvt_r.c b/REORG.TODO/misc/qefgcvt_r.c new file mode 100644 index 0000000000..7725274916 --- /dev/null +++ b/REORG.TODO/misc/qefgcvt_r.c @@ -0,0 +1,57 @@ +/* Compatibility functions for floating point formatting, reentrant, + long double versions. + Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <float.h> + +#define FLOAT_TYPE long double +#define FUNC_PREFIX q +#define FLOAT_FMT_FLAG "L" +#define FLOAT_NAME_EXT l +#define FLOAT_MIN_10_EXP LDBL_MIN_10_EXP +#if LDBL_MANT_DIG == 64 +# define NDIGIT_MAX 21 +#elif LDBL_MANT_DIG == 53 +# define NDIGIT_MAX 17 +#elif LDBL_MANT_DIG == 113 +# define NDIGIT_MAX 36 +#elif LDBL_MANT_DIG == 106 +# define NDIGIT_MAX 34 +#elif LDBL_MANT_DIG == 56 +# define NDIGIT_MAX 18 +#else +/* See IEEE 854 5.6, table 2 for this formula. Unfortunately we need a + compile time constant here, so we cannot use it. */ +# error "NDIGIT_MAX must be precomputed" +# define NDIGIT_MAX (lrint (ceil (M_LN2 / M_LN10 * LDBL_MANT_DIG + 1.0))) +#endif +#if LDBL_MIN_10_EXP == -37 +# define FLOAT_MIN_10_NORM 1.0e-37L +#elif LDBL_MIN_10_EXP == -291 +# define FLOAT_MIN_10_NORM 1.0e-291L +#elif LDBL_MIN_10_EXP == -307 +# define FLOAT_MIN_10_NORM 1.0e-307L +#elif LDBL_MIN_10_EXP == -4931 +# define FLOAT_MIN_10_NORM 1.0e-4931L +#else +/* libc can't depend on libm. */ +# error "FLOAT_MIN_10_NORM must be precomputed" +# define FLOAT_MIN_10_NORM exp10l (LDBL_MIN_10_EXP) +#endif + +#include "efgcvt_r.c" |