(root)/
gcc-13.2.0/
libquadmath/
strtod/
strtoflt128.c
       1  /* Copyright (C) 1999, 2004 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, write to the Free
      16     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
      17     02111-1307 USA.  */
      18  
      19  /* The actual implementation for all floating point sizes is in strtod.c.
      20     These macros tell it to produce the `__float128' version, `strtold'.  */
      21  
      22  #define FLOAT		__float128
      23  #define FLT		FLT128
      24  #ifdef USE_WIDE_CHAR
      25  # define STRTOF		wcstoflt128
      26  # define __STRTOF	__wcstoflt128
      27  #else
      28  # define STRTOF		strtoflt128
      29  # define __STRTOF	__strtoflt128
      30  #endif
      31  #define MPN2FLOAT	mpn_construct_float128
      32  #define FLOAT_HUGE_VAL	HUGE_VALQ
      33  #define SET_MANTISSA(flt, mant)			\
      34    do { ieee854_float128 u;			\
      35         u.value = (flt);				\
      36         u.ieee_nan.mantissa0 = 0;		\
      37         u.ieee_nan.mantissa1 = 0;		\
      38         u.ieee_nan.mantissa2 = (mant) >> 32;	\
      39         u.ieee_nan.mantissa3 = (mant);		\
      40         u.ieee_nan.quiet_nan = 1;		\
      41         (flt) = u.value;				\
      42    } while (0)
      43  
      44  static inline __attribute__((__always_inline__))
      45  __float128 ____strtoflt128_internal (const char *, char **, int);
      46  
      47  #include "strtod_l.c"
      48  
      49  __float128
      50  strtoflt128 (const char *nptr, char **endptr)
      51  {
      52    return ____STRTOF_INTERNAL (nptr, endptr, 0);
      53  }