(linenum→info "unix/slp.c:2238")

glibc/2.7/misc/qefgcvt.c

    1: /* Compatibility functions for floating point formatting, long double version.
    2:    Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
    3:    This file is part of the GNU C Library.
    4: 
    5:    The GNU C Library is free software; you can redistribute it and/or
    6:    modify it under the terms of the GNU Lesser General Public
    7:    License as published by the Free Software Foundation; either
    8:    version 2.1 of the License, or (at your option) any later version.
    9: 
   10:    The GNU C Library is distributed in the hope that it will be useful,
   11:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13:    Lesser General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU Lesser General Public
   16:    License along with the GNU C Library; if not, write to the Free
   17:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   18:    02111-1307 USA.  */
   19: 
   20: #include <float.h>
   21: 
   22: #define FLOAT_TYPE long double
   23: #define FUNC_PREFIX q
   24: #define FLOAT_FMT_FLAG "L"
   25: /* Actually we have to write (LDBL_DIG + log10 (LDBL_MAX_10_EXP)) but
   26:    we don't have log10 available in the preprocessor.  Since we cannot
   27:    assume anything on the used `long double' format be generous.  */
   28: #define MAXDIG (NDIGIT_MAX + 12)
   29: #define FCVT_MAXDIG (LDBL_MAX_10_EXP + MAXDIG)
   30: #if LDBL_MANT_DIG == 64
   31: # define NDIGIT_MAX 21
   32: #elif LDBL_MANT_DIG == 53
   33: # define NDIGIT_MAX 17
   34: #elif LDBL_MANT_DIG == 113
   35: # define NDIGIT_MAX 36
   36: #elif LDBL_MANT_DIG == 106
   37: # define NDIGIT_MAX 34
   38: #elif LDBL_MANT_DIG == 56
   39: # define NDIGIT_MAX 18
   40: #else
   41: /* See IEEE 854 5.6, table 2 for this formula.  Unfortunately we need a
   42:    compile time constant here, so we cannot use it.  */
   43: # error "NDIGIT_MAX must be precomputed"
   44: # define NDIGIT_MAX (lrint (ceil (M_LN2 / M_LN10 * LDBL_MANT_DIG + 1.0)))
   45: #endif
   46: 
   47: #include "efgcvt.c"
Syntax (Markdown)