third-party-mirror / GRTEv4 / 262be5abc585813b1766119db73641d44ba3741e / . / google3 / third_party / grte / v4_src / glibc-2.19 / misc / qefgcvt_r.c

/* Compatibility functions for floating point formatting, reentrant, | |

long double versions. | |

Copyright (C) 1996-2014 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" |