|  | /* Header file for constants used in floating point <-> decimal conversions. | 
|  | Copyright (C) 1995-2016 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/>.  */ | 
|  |  | 
|  | #ifndef _FPIOCONST_H | 
|  | #define	_FPIOCONST_H | 
|  |  | 
|  | #include <float.h> | 
|  | #include <math.h> | 
|  | #include <gmp.h> | 
|  |  | 
|  |  | 
|  | /* These values are used by __printf_fp, where they are noncritical (if the | 
|  | value is not large enough, it will just be slower); and by | 
|  | strtof/strtod/strtold, where it is critical (it's used for overflow | 
|  | detection). | 
|  |  | 
|  | XXX These should be defined in <float.h>.  For the time being, we have the | 
|  | IEEE754 values here.  */ | 
|  |  | 
|  | #if !defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024 | 
|  | # define LDBL_MAX_10_EXP_LOG	12 /* = floor(log_2(LDBL_MAX_10_EXP)) */ | 
|  | #else | 
|  | # define LDBL_MAX_10_EXP_LOG	8 /* = floor(log_2(LDBL_MAX_10_EXP)) */ | 
|  | #endif | 
|  | #define DBL_MAX_10_EXP_LOG	8 /* = floor(log_2(DBL_MAX_10_EXP)) */ | 
|  | #define FLT_MAX_10_EXP_LOG	5 /* = floor(log_2(FLT_MAX_10_EXP)) */ | 
|  |  | 
|  | /* For strtold, we need powers of 10 up to floor (log_2 (LDBL_MANT_DIG | 
|  | - LDBL_MIN_EXP + 2)).  */ | 
|  | #if !defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024 | 
|  | # define FPIOCONST_POW10_ARRAY_SIZE	15 | 
|  | #else | 
|  | # define FPIOCONST_POW10_ARRAY_SIZE	11 | 
|  | #endif | 
|  |  | 
|  | /* The array with the number representation. */ | 
|  | extern const mp_limb_t __tens[] attribute_hidden; | 
|  |  | 
|  | /* Table of powers of ten.  This is used by __printf_fp and by | 
|  | strtof/strtod/strtold.  */ | 
|  | struct mp_power | 
|  | { | 
|  | size_t arrayoff;		/* Offset in `__tens'.  */ | 
|  | mp_size_t arraysize;	/* Size of the array.  */ | 
|  | int p_expo;			/* Exponent of the number 10^(2^i).  */ | 
|  | int m_expo;			/* Exponent of the number 10^-(2^i-1).  */ | 
|  | }; | 
|  | extern const struct mp_power _fpioconst_pow10[FPIOCONST_POW10_ARRAY_SIZE] | 
|  | attribute_hidden; | 
|  |  | 
|  | /* The constants in the array `_fpioconst_pow10' have an offset.  */ | 
|  | #if BITS_PER_MP_LIMB == 32 | 
|  | # define _FPIO_CONST_OFFSET	2 | 
|  | #else | 
|  | # define _FPIO_CONST_OFFSET	1 | 
|  | #endif | 
|  |  | 
|  |  | 
|  | #endif	/* fpioconst.h */ |