emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/android 76cac8ae6f6 2/2: Update from Gnulib, remove printf-posix


From: Po Lu
Subject: feature/android 76cac8ae6f6 2/2: Update from Gnulib, remove printf-posix
Date: Sun, 6 Aug 2023 20:18:30 -0400 (EDT)

branch: feature/android
commit 76cac8ae6f600be34f83bd3aaf9b38355eab773e
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Update from Gnulib, remove printf-posix
    
    * m4, lib: Update from Gnulib.
    
    * msdos/sedlibmk.inp: Remove variables deleted as part of previous
    change.
    
    * admin/merge-gnulib (GNULIB_MODULES): Remove vasprintf and
    printf-posix.
---
 ChangeLog.android     |   10 +
 admin/merge-gnulib    |    2 +-
 lib/asnprintf.c       |   34 -
 lib/asprintf.c        |   39 -
 lib/float+.h          |  147 --
 lib/float.c           |   33 -
 lib/float.in.h        |  194 --
 lib/fpucw.h           |  108 -
 lib/frexp.c           |  168 --
 lib/frexpl.c          |   35 -
 lib/fseterr.c         |   84 -
 lib/fseterr.h         |   50 -
 lib/gnulib.mk.in      |  883 +------
 lib/isnan.c           |  190 --
 lib/isnand-nolibm.h   |   38 -
 lib/isnand.c          |   19 -
 lib/isnanf-nolibm.h   |   46 -
 lib/isnanf.c          |   20 -
 lib/isnanl-nolibm.h   |   39 -
 lib/isnanl.c          |   20 -
 lib/itold.c           |   28 -
 lib/math.c            |   22 -
 lib/math.in.h         | 2743 -------------------
 lib/mini-gmp.c        |   11 +-
 lib/printf-args.c     |  306 ---
 lib/printf-args.h     |  205 --
 lib/printf-frexp.c    |  190 --
 lib/printf-frexp.h    |   23 -
 lib/printf-frexpl.c   |   37 -
 lib/printf-frexpl.h   |   23 -
 lib/printf-parse.c    |  714 -----
 lib/printf-parse.h    |  193 --
 lib/printf.c          |   40 -
 lib/signbitd.c        |   64 -
 lib/signbitf.c        |   64 -
 lib/signbitl.c        |   64 -
 lib/size_max.h        |   35 -
 lib/vasnprintf.c      | 6963 -------------------------------------------------
 lib/vasnprintf.h      |   77 -
 lib/vasprintf.c       |   50 -
 lib/vfprintf.c        |   70 -
 lib/xsize.c           |   21 -
 lib/xsize.h           |  110 -
 m4/asm-underscore.m4  |   83 -
 m4/exponentd.m4       |  116 -
 m4/exponentf.m4       |   92 -
 m4/exponentl.m4       |  112 -
 m4/float_h.m4         |  106 -
 m4/frexp.m4           |  181 --
 m4/frexpl.m4          |  233 --
 m4/fseterr.m4         |   13 -
 m4/gnulib-comp.m4     |  210 --
 m4/intmax_t.m4        |   59 -
 m4/inttypes_h.m4      |   29 -
 m4/isnand.m4          |   96 -
 m4/isnanf.m4          |  197 --
 m4/isnanl.m4          |  248 --
 m4/ldexpl.m4          |  135 -
 m4/math_h.m4          |  391 ---
 m4/printf-frexp.m4    |   38 -
 m4/printf-frexpl.m4   |   48 -
 m4/printf-posix.m4    |   36 -
 m4/printf.m4          | 2158 ---------------
 m4/signbit.m4         |  393 ---
 m4/size_max.m4        |   75 -
 m4/stdint_h.m4        |   27 -
 m4/vasnprintf.m4      |  462 ----
 m4/vasprintf-posix.m4 |  113 -
 m4/vasprintf.m4       |   46 -
 m4/vfprintf-posix.m4  |  122 -
 m4/xsize.m4           |   12 -
 msdos/sedlibmk.inp    |    5 -
 72 files changed, 58 insertions(+), 19990 deletions(-)

diff --git a/ChangeLog.android b/ChangeLog.android
index 45d245336ec..54fbfc6e3b1 100644
--- a/ChangeLog.android
+++ b/ChangeLog.android
@@ -1,3 +1,13 @@
+2023-08-07  Po Lu  <luangruo@yahoo.com>
+
+       * m4, lib: Update from Gnulib.
+
+       * msdos/sedlibmk.inp: Remove variables deleted as part of previous
+       change.
+
+       * admin/merge-gnulib (GNULIB_MODULES): Remove vasprintf and
+       printf-posix.
+
 2023-08-06  Po Lu  <luangruo@yahoo.com>
 
        * java/org/gnu/emacs/EmacsService.java (readDirectoryEntry): Fix
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index a0dbaae1519..b533f69cceb 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -42,7 +42,7 @@ GNULIB_MODULES='
   manywarnings memmem-simple mempcpy memrchr memset_explicit
   minmax mkostemp mktime
   nanosleep nproc nstrftime
-  pathmax pipe2 printf-posix vasprintf-posix pselect pthread_sigmask
+  pathmax pipe2 pselect pthread_sigmask
   qcopy-acl readlink readlinkat regex
   sig2str sigdescr_np socklen stat-time std-gnu11 stdbool stdckdint stddef 
stdio
   stpcpy stpncpy strnlen strnlen strtoimax symlink sys_stat sys_time
diff --git a/lib/asnprintf.c b/lib/asnprintf.c
deleted file mode 100644
index f4861bf8457..00000000000
--- a/lib/asnprintf.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Formatted output to strings.
-   Copyright (C) 1999, 2002, 2006, 2009-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "vasnprintf.h"
-
-#include <stdarg.h>
-
-char *
-asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
-{
-  va_list args;
-  char *result;
-
-  va_start (args, format);
-  result = vasnprintf (resultbuf, lengthp, format, args);
-  va_end (args);
-  return result;
-}
diff --git a/lib/asprintf.c b/lib/asprintf.c
deleted file mode 100644
index ba58e06481f..00000000000
--- a/lib/asprintf.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Formatted output to strings.
-   Copyright (C) 1999, 2002, 2006-2007, 2009-2023 Free Software Foundation,
-   Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#ifdef IN_LIBASPRINTF
-# include "vasprintf.h"
-#else
-# include <stdio.h>
-#endif
-
-#include <stdarg.h>
-
-int
-asprintf (char **resultp, const char *format, ...)
-{
-  va_list args;
-  int result;
-
-  va_start (args, format);
-  result = vasprintf (resultp, format, args);
-  va_end (args);
-  return result;
-}
diff --git a/lib/float+.h b/lib/float+.h
deleted file mode 100644
index e7531e46a38..00000000000
--- a/lib/float+.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Supplemental information about the floating-point formats.
-   Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-   Written by Bruno Haible <bruno@clisp.org>, 2007.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#ifndef _FLOATPLUS_H
-#define _FLOATPLUS_H
-
-#include <float.h>
-#include <limits.h>
-
-/* Number of bits in the mantissa of a floating-point number, including the
-   "hidden bit".  */
-#if FLT_RADIX == 2
-# define FLT_MANT_BIT FLT_MANT_DIG
-# define DBL_MANT_BIT DBL_MANT_DIG
-# define LDBL_MANT_BIT LDBL_MANT_DIG
-#elif FLT_RADIX == 4
-# define FLT_MANT_BIT (FLT_MANT_DIG * 2)
-# define DBL_MANT_BIT (DBL_MANT_DIG * 2)
-# define LDBL_MANT_BIT (LDBL_MANT_DIG * 2)
-#elif FLT_RADIX == 16
-# define FLT_MANT_BIT (FLT_MANT_DIG * 4)
-# define DBL_MANT_BIT (DBL_MANT_DIG * 4)
-# define LDBL_MANT_BIT (LDBL_MANT_DIG * 4)
-#endif
-
-/* Bit mask that can be used to mask the exponent, as an unsigned number.  */
-#define FLT_EXP_MASK ((FLT_MAX_EXP - FLT_MIN_EXP) | 7)
-#define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7)
-#define LDBL_EXP_MASK ((LDBL_MAX_EXP - LDBL_MIN_EXP) | 7)
-
-/* Number of bits used for the exponent of a floating-point number, including
-   the exponent's sign.  */
-#define FLT_EXP_BIT \
-  (FLT_EXP_MASK < 0x100 ? 8 : \
-   FLT_EXP_MASK < 0x200 ? 9 : \
-   FLT_EXP_MASK < 0x400 ? 10 : \
-   FLT_EXP_MASK < 0x800 ? 11 : \
-   FLT_EXP_MASK < 0x1000 ? 12 : \
-   FLT_EXP_MASK < 0x2000 ? 13 : \
-   FLT_EXP_MASK < 0x4000 ? 14 : \
-   FLT_EXP_MASK < 0x8000 ? 15 : \
-   FLT_EXP_MASK < 0x10000 ? 16 : \
-   FLT_EXP_MASK < 0x20000 ? 17 : \
-   FLT_EXP_MASK < 0x40000 ? 18 : \
-   FLT_EXP_MASK < 0x80000 ? 19 : \
-   FLT_EXP_MASK < 0x100000 ? 20 : \
-   FLT_EXP_MASK < 0x200000 ? 21 : \
-   FLT_EXP_MASK < 0x400000 ? 22 : \
-   FLT_EXP_MASK < 0x800000 ? 23 : \
-   FLT_EXP_MASK < 0x1000000 ? 24 : \
-   FLT_EXP_MASK < 0x2000000 ? 25 : \
-   FLT_EXP_MASK < 0x4000000 ? 26 : \
-   FLT_EXP_MASK < 0x8000000 ? 27 : \
-   FLT_EXP_MASK < 0x10000000 ? 28 : \
-   FLT_EXP_MASK < 0x20000000 ? 29 : \
-   FLT_EXP_MASK < 0x40000000 ? 30 : \
-   FLT_EXP_MASK <= 0x7fffffff ? 31 : \
-   32)
-#define DBL_EXP_BIT \
-  (DBL_EXP_MASK < 0x100 ? 8 : \
-   DBL_EXP_MASK < 0x200 ? 9 : \
-   DBL_EXP_MASK < 0x400 ? 10 : \
-   DBL_EXP_MASK < 0x800 ? 11 : \
-   DBL_EXP_MASK < 0x1000 ? 12 : \
-   DBL_EXP_MASK < 0x2000 ? 13 : \
-   DBL_EXP_MASK < 0x4000 ? 14 : \
-   DBL_EXP_MASK < 0x8000 ? 15 : \
-   DBL_EXP_MASK < 0x10000 ? 16 : \
-   DBL_EXP_MASK < 0x20000 ? 17 : \
-   DBL_EXP_MASK < 0x40000 ? 18 : \
-   DBL_EXP_MASK < 0x80000 ? 19 : \
-   DBL_EXP_MASK < 0x100000 ? 20 : \
-   DBL_EXP_MASK < 0x200000 ? 21 : \
-   DBL_EXP_MASK < 0x400000 ? 22 : \
-   DBL_EXP_MASK < 0x800000 ? 23 : \
-   DBL_EXP_MASK < 0x1000000 ? 24 : \
-   DBL_EXP_MASK < 0x2000000 ? 25 : \
-   DBL_EXP_MASK < 0x4000000 ? 26 : \
-   DBL_EXP_MASK < 0x8000000 ? 27 : \
-   DBL_EXP_MASK < 0x10000000 ? 28 : \
-   DBL_EXP_MASK < 0x20000000 ? 29 : \
-   DBL_EXP_MASK < 0x40000000 ? 30 : \
-   DBL_EXP_MASK <= 0x7fffffff ? 31 : \
-   32)
-#define LDBL_EXP_BIT \
-  (LDBL_EXP_MASK < 0x100 ? 8 : \
-   LDBL_EXP_MASK < 0x200 ? 9 : \
-   LDBL_EXP_MASK < 0x400 ? 10 : \
-   LDBL_EXP_MASK < 0x800 ? 11 : \
-   LDBL_EXP_MASK < 0x1000 ? 12 : \
-   LDBL_EXP_MASK < 0x2000 ? 13 : \
-   LDBL_EXP_MASK < 0x4000 ? 14 : \
-   LDBL_EXP_MASK < 0x8000 ? 15 : \
-   LDBL_EXP_MASK < 0x10000 ? 16 : \
-   LDBL_EXP_MASK < 0x20000 ? 17 : \
-   LDBL_EXP_MASK < 0x40000 ? 18 : \
-   LDBL_EXP_MASK < 0x80000 ? 19 : \
-   LDBL_EXP_MASK < 0x100000 ? 20 : \
-   LDBL_EXP_MASK < 0x200000 ? 21 : \
-   LDBL_EXP_MASK < 0x400000 ? 22 : \
-   LDBL_EXP_MASK < 0x800000 ? 23 : \
-   LDBL_EXP_MASK < 0x1000000 ? 24 : \
-   LDBL_EXP_MASK < 0x2000000 ? 25 : \
-   LDBL_EXP_MASK < 0x4000000 ? 26 : \
-   LDBL_EXP_MASK < 0x8000000 ? 27 : \
-   LDBL_EXP_MASK < 0x10000000 ? 28 : \
-   LDBL_EXP_MASK < 0x20000000 ? 29 : \
-   LDBL_EXP_MASK < 0x40000000 ? 30 : \
-   LDBL_EXP_MASK <= 0x7fffffff ? 31 : \
-   32)
-
-/* Number of bits used for a floating-point number: the mantissa (not
-   counting the "hidden bit", since it may or may not be explicit), the
-   exponent, and the sign.  */
-#define FLT_TOTAL_BIT ((FLT_MANT_BIT - 1) + FLT_EXP_BIT + 1)
-#define DBL_TOTAL_BIT ((DBL_MANT_BIT - 1) + DBL_EXP_BIT + 1)
-#define LDBL_TOTAL_BIT ((LDBL_MANT_BIT - 1) + LDBL_EXP_BIT + 1)
-
-/* Number of bytes used for a floating-point number.
-   This can be smaller than the 'sizeof'.  For example, on i386 systems,
-   'long double' most often have LDBL_MANT_BIT = 64, LDBL_EXP_BIT = 16, hence
-   LDBL_TOTAL_BIT = 80 bits, i.e. 10 bytes of consecutive memory, but
-   sizeof (long double) = 12 or = 16.  */
-#define SIZEOF_FLT ((FLT_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
-#define SIZEOF_DBL ((DBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
-#define SIZEOF_LDBL ((LDBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
-
-/* Verify that SIZEOF_FLT <= sizeof (float) etc.  */
-typedef int verify_sizeof_flt[SIZEOF_FLT <= sizeof (float) ? 1 : -1];
-typedef int verify_sizeof_dbl[SIZEOF_DBL <= sizeof (double) ? 1 : - 1];
-typedef int verify_sizeof_ldbl[SIZEOF_LDBL <= sizeof (long double) ? 1 : - 1];
-
-#endif /* _FLOATPLUS_H */
diff --git a/lib/float.c b/lib/float.c
deleted file mode 100644
index f81ff33d3b7..00000000000
--- a/lib/float.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Auxiliary definitions for <float.h>.
-   Copyright (C) 2011-2023 Free Software Foundation, Inc.
-   Written by Bruno Haible <bruno@clisp.org>, 2011.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include <float.h>
-
-#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined 
__linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__
-const union gl_long_double_union gl_LDBL_MAX =
-  { { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } };
-#elif defined __i386__
-const union gl_long_double_union gl_LDBL_MAX =
-  { { 0xFFFFFFFF, 0xFFFFFFFF, 32766 } };
-#else
-/* This declaration is solely to ensure that after preprocessing
-   this file is never empty.  */
-typedef int dummy;
-#endif
diff --git a/lib/float.in.h b/lib/float.in.h
deleted file mode 100644
index bf2c502c7f5..00000000000
--- a/lib/float.in.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/* A correct <float.h>.
-
-   Copyright (C) 2007-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#ifndef _@GUARD_PREFIX@_FLOAT_H
-
-#if __GNUC__ >= 3
-@PRAGMA_SYSTEM_HEADER@
-#endif
-@PRAGMA_COLUMNS@
-
-/* The include_next requires a split double-inclusion guard.  */
-#@INCLUDE_NEXT@ @NEXT_FLOAT_H@
-
-#ifndef _@GUARD_PREFIX@_FLOAT_H
-#define _@GUARD_PREFIX@_FLOAT_H
-
-/* 'long double' properties.  */
-
-#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
-/* Number of mantissa units, in base FLT_RADIX.  */
-# undef LDBL_MANT_DIG
-# define LDBL_MANT_DIG   64
-/* Number of decimal digits that is sufficient for representing a number.  */
-# undef LDBL_DIG
-# define LDBL_DIG        18
-/* x-1 where x is the smallest representable number > 1.  */
-# undef LDBL_EPSILON
-# define LDBL_EPSILON    1.0842021724855044340E-19L
-/* Minimum e such that FLT_RADIX^(e-1) is a normalized number.  */
-# undef LDBL_MIN_EXP
-# define LDBL_MIN_EXP    (-16381)
-/* Maximum e such that FLT_RADIX^(e-1) is a representable finite number.  */
-# undef LDBL_MAX_EXP
-# define LDBL_MAX_EXP    16384
-/* Minimum positive normalized number.  */
-# undef LDBL_MIN
-# define LDBL_MIN        3.3621031431120935063E-4932L
-/* Maximum representable finite number.  */
-# undef LDBL_MAX
-# define LDBL_MAX        1.1897314953572317650E+4932L
-/* Minimum e such that 10^e is in the range of normalized numbers.  */
-# undef LDBL_MIN_10_EXP
-# define LDBL_MIN_10_EXP (-4931)
-/* Maximum e such that 10^e is in the range of representable finite numbers.  
*/
-# undef LDBL_MAX_10_EXP
-# define LDBL_MAX_10_EXP 4932
-#endif
-
-/* On FreeBSD/x86 6.4, the 'long double' type really has only 53 bits of
-   precision in the compiler but 64 bits of precision at runtime.  See
-   <https://lists.gnu.org/r/bug-gnulib/2008-07/msg00063.html>.  */
-#if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__)
-/* Number of mantissa units, in base FLT_RADIX.  */
-# undef LDBL_MANT_DIG
-# define LDBL_MANT_DIG   64
-/* Number of decimal digits that is sufficient for representing a number.  */
-# undef LDBL_DIG
-# define LDBL_DIG        18
-/* x-1 where x is the smallest representable number > 1.  */
-# undef LDBL_EPSILON
-# define LDBL_EPSILON 1.084202172485504434007452800869941711426e-19L /* 2^-63 
*/
-/* Minimum e such that FLT_RADIX^(e-1) is a normalized number.  */
-# undef LDBL_MIN_EXP
-# define LDBL_MIN_EXP    (-16381)
-/* Maximum e such that FLT_RADIX^(e-1) is a representable finite number.  */
-# undef LDBL_MAX_EXP
-# define LDBL_MAX_EXP    16384
-/* Minimum positive normalized number.  */
-# undef LDBL_MIN
-# define LDBL_MIN        3.362103143112093506262677817321752E-4932L /* = 
0x1p-16382L */
-/* Maximum representable finite number.  */
-# undef LDBL_MAX
-/* LDBL_MAX is represented as { 0xFFFFFFFF, 0xFFFFFFFF, 32766 }.
-   But the largest literal that GCC allows us to write is
-   0x0.fffffffffffff8p16384L = { 0xFFFFF800, 0xFFFFFFFF, 32766 }.
-   So, define it like this through a reference to an external variable
-
-     const unsigned int LDBL_MAX[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 32766 };
-     extern const long double LDBL_MAX;
-
-   Unfortunately, this is not a constant expression.  */
-# if !GNULIB_defined_long_double_union
-union gl_long_double_union
-  {
-    struct { unsigned int lo; unsigned int hi; unsigned int exponent; } xd;
-    long double ld;
-  };
-#  define GNULIB_defined_long_double_union 1
-# endif
-extern const union gl_long_double_union gl_LDBL_MAX;
-# define LDBL_MAX (gl_LDBL_MAX.ld)
-/* Minimum e such that 10^e is in the range of normalized numbers.  */
-# undef LDBL_MIN_10_EXP
-# define LDBL_MIN_10_EXP (-4931)
-/* Maximum e such that 10^e is in the range of representable finite numbers.  
*/
-# undef LDBL_MAX_10_EXP
-# define LDBL_MAX_10_EXP 4932
-#endif
-
-/* On AIX 7.1 with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX are
-   wrong.
-   On Linux/PowerPC with gcc 4.4, the value of LDBL_MAX is wrong.  */
-#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 
106) && defined __GNUC__
-# undef LDBL_MIN_EXP
-# define LDBL_MIN_EXP DBL_MIN_EXP
-# undef LDBL_MIN_10_EXP
-# define LDBL_MIN_10_EXP DBL_MIN_10_EXP
-# undef LDBL_MIN
-# define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 
2^-1022 */
-#endif
-#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined 
__linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__
-# undef LDBL_MAX
-/* LDBL_MAX is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xFFFFFFFF 
}.
-   It is not easy to define:
-     #define LDBL_MAX 1.79769313486231580793728971405302307166e308L
-   is too small, whereas
-     #define LDBL_MAX 1.79769313486231580793728971405302307167e308L
-   is too large.  Apparently a bug in GCC decimal-to-binary conversion.
-   Also, I can't get values larger than
-     #define LDBL63 ((long double) (1ULL << 63))
-     #define LDBL882 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * 
LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63)
-     #define LDBL945 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * 
LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63)
-     #define LDBL1008 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * 
LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 
* LDBL63)
-     #define LDBL_MAX (LDBL1008 * 65535.0L + LDBL945 * (long double) 
9223372036821221375ULL + LDBL882 * (long double) 4611686018427387904ULL)
-   which is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xF8000000 }.
-   So, define it like this through a reference to an external variable
-
-     const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / (double)134217728UL / 
(double)134217728UL };
-     extern const long double LDBL_MAX;
-
-   or through a pointer cast
-
-     #define LDBL_MAX \
-       (*(const long double *) (double[]) { DBL_MAX, DBL_MAX / 
(double)134217728UL / (double)134217728UL })
-
-   Unfortunately, this is not a constant expression, and the latter expression
-   does not work well when GCC is optimizing..  */
-# if !GNULIB_defined_long_double_union
-union gl_long_double_union
-  {
-    struct { double hi; double lo; } dd;
-    long double ld;
-  };
-#  define GNULIB_defined_long_double_union 1
-# endif
-extern const union gl_long_double_union gl_LDBL_MAX;
-# define LDBL_MAX (gl_LDBL_MAX.ld)
-#endif
-
-/* On IRIX 6.5, with cc, the value of LDBL_MANT_DIG is wrong.
-   On IRIX 6.5, with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, 
LDBL_EPSILON
-   are wrong.  */
-#if defined __sgi && (LDBL_MANT_DIG >= 106)
-# undef LDBL_MANT_DIG
-# define LDBL_MANT_DIG 106
-# if defined __GNUC__
-#  undef LDBL_MIN_EXP
-#  define LDBL_MIN_EXP DBL_MIN_EXP
-#  undef LDBL_MIN_10_EXP
-#  define LDBL_MIN_10_EXP DBL_MIN_10_EXP
-#  undef LDBL_MIN
-#  define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 
2^-1022 */
-#  undef LDBL_EPSILON
-#  define LDBL_EPSILON 2.46519032881566189191165176650870696773e-32L /* 2^-105 
*/
-# endif
-#endif
-
-#if @REPLACE_ITOLD@
-/* Pull in a function that fixes the 'int' to 'long double' conversion
-   of glibc 2.7.  */
-extern
-# ifdef __cplusplus
-"C"
-# endif
-void _Qp_itoq (long double *, int);
-static void (*_gl_float_fix_itold) (long double *, int) = _Qp_itoq;
-#endif
-
-#endif /* _@GUARD_PREFIX@_FLOAT_H */
-#endif /* _@GUARD_PREFIX@_FLOAT_H */
diff --git a/lib/fpucw.h b/lib/fpucw.h
deleted file mode 100644
index 7dcb310eaf5..00000000000
--- a/lib/fpucw.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Manipulating the FPU control word.  -*- coding: utf-8 -*-
-   Copyright (C) 2007-2023 Free Software Foundation, Inc.
-   Written by Bruno Haible <bruno@clisp.org>, 2007.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#ifndef _FPUCW_H
-#define _FPUCW_H
-
-/* The i386 floating point hardware (the 387 compatible FPU, not the modern
-   SSE/SSE2 hardware) has a controllable rounding precision.  It is specified
-   through the 'PC' bits in the FPU control word ('fctrl' register).  (See
-   the GNU libc i386 <fpu_control.h> header for details.)
-
-   On some platforms, such as Linux or Solaris, the default precision setting
-   is set to "extended precision".  This means that 'long double' instructions
-   operate correctly, but 'double' computations often produce slightly
-   different results as on strictly IEEE 754 conforming systems.
-
-   On some platforms, such as NetBSD, the default precision is set to
-   "double precision".  This means that 'long double' instructions will operate
-   only as 'double', i.e. lead to wrong results.  Similarly on FreeBSD 6.4, at
-   least for the division of 'long double' numbers.
-
-   The FPU control word is under control of the application, i.e. it is
-   not required to be set either way by the ABI.  (In fact, the i386 ABI
-   https://www.linux-mips.org/pub/linux/mips/doc/ABI/abi386-4.pdf page 3-12 = 
page 38
-   is not clear about it.  But in any case, gcc treats the control word
-   like a "preserved" register: it emits code that assumes that the control
-   word is preserved across calls, and it restores the control word at the
-   end of functions that modify it.)
-
-   See Vincent Lefèvre's page https://www.vinc17.net/research/extended.en.html
-   for a good explanation.
-   See 
https://web.archive.org/web/20060905133417/http://www.uwsg.iu.edu/hypermail/linux/kernel/0103.0/0453.html
-   some argumentation which setting should be the default.  */
-
-/* This header file provides the following facilities:
-     fpucw_t                        integral type holding the value of 'fctrl'
-     FPU_PC_MASK                    bit mask denoting the precision control
-     FPU_PC_DOUBLE                  precision control for 53 bits mantissa
-     FPU_PC_EXTENDED                precision control for 64 bits mantissa
-     GET_FPUCW ()                   yields the current FPU control word
-     SET_FPUCW (word)               sets the FPU control word
-     DECL_LONG_DOUBLE_ROUNDING      variable declaration for
-                                    BEGIN/END_LONG_DOUBLE_ROUNDING
-     BEGIN_LONG_DOUBLE_ROUNDING ()  starts a sequence of instructions with
-                                    'long double' safe operation precision
-     END_LONG_DOUBLE_ROUNDING ()    ends a sequence of instructions with
-                                    'long double' safe operation precision
- */
-
-/* Inline assembler like this works only with GNU C and clang.  */
-#if (defined __i386__ || defined __x86_64__) && (defined __GNUC__ || defined 
__clang__)
-
-typedef unsigned short fpucw_t; /* glibc calls this fpu_control_t */
-
-# define FPU_PC_MASK 0x0300
-# define FPU_PC_DOUBLE 0x200    /* glibc calls this _FPU_DOUBLE */
-# define FPU_PC_EXTENDED 0x300  /* glibc calls this _FPU_EXTENDED */
-
-# define GET_FPUCW() __extension__ \
-  ({ fpucw_t _cw;                                               \
-     __asm__ __volatile__ ("fnstcw %0" : "=m" (*&_cw));         \
-     _cw;                                                       \
-   })
-# define SET_FPUCW(word) __extension__ \
-  (void)({ fpucw_t _ncw = (word);                               \
-           __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw));  \
-         })
-
-# define DECL_LONG_DOUBLE_ROUNDING \
-  fpucw_t oldcw;
-# define BEGIN_LONG_DOUBLE_ROUNDING() \
-  (void)(oldcw = GET_FPUCW (),                                  \
-         SET_FPUCW ((oldcw & ~FPU_PC_MASK) | FPU_PC_EXTENDED))
-# define END_LONG_DOUBLE_ROUNDING() \
-  SET_FPUCW (oldcw)
-
-#else
-
-typedef unsigned int fpucw_t;
-
-# define FPU_PC_MASK 0
-# define FPU_PC_DOUBLE 0
-# define FPU_PC_EXTENDED 0
-
-# define GET_FPUCW() 0
-# define SET_FPUCW(word) (void)(word)
-
-# define DECL_LONG_DOUBLE_ROUNDING
-# define BEGIN_LONG_DOUBLE_ROUNDING()
-# define END_LONG_DOUBLE_ROUNDING()
-
-#endif
-
-#endif /* _FPUCW_H */
diff --git a/lib/frexp.c b/lib/frexp.c
deleted file mode 100644
index 78d627b5876..00000000000
--- a/lib/frexp.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/* Split a double into fraction and mantissa.
-   Copyright (C) 2007-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* Written by Paolo Bonzini <bonzini@gnu.org>, 2003, and
-   Bruno Haible <bruno@clisp.org>, 2007.  */
-
-#if ! defined USE_LONG_DOUBLE
-# include <config.h>
-#endif
-
-/* Specification.  */
-#include <math.h>
-
-#include <float.h>
-#ifdef USE_LONG_DOUBLE
-# include "isnanl-nolibm.h"
-# include "fpucw.h"
-#else
-# include "isnand-nolibm.h"
-#endif
-
-/* This file assumes FLT_RADIX = 2.  If FLT_RADIX is a power of 2 greater
-   than 2, or not even a power of 2, some rounding errors can occur, so that
-   then the returned mantissa is only guaranteed to be <= 1.0, not < 1.0.  */
-
-#ifdef USE_LONG_DOUBLE
-# define FUNC frexpl
-# define DOUBLE long double
-# define ISNAN isnanl
-# define DECL_ROUNDING DECL_LONG_DOUBLE_ROUNDING
-# define BEGIN_ROUNDING() BEGIN_LONG_DOUBLE_ROUNDING ()
-# define END_ROUNDING() END_LONG_DOUBLE_ROUNDING ()
-# define L_(literal) literal##L
-#else
-# define FUNC frexp
-# define DOUBLE double
-# define ISNAN isnand
-# define DECL_ROUNDING
-# define BEGIN_ROUNDING()
-# define END_ROUNDING()
-# define L_(literal) literal
-#endif
-
-DOUBLE
-FUNC (DOUBLE x, int *expptr)
-{
-  int sign;
-  int exponent;
-  DECL_ROUNDING
-
-  /* Test for NaN, infinity, and zero.  */
-  if (ISNAN (x) || x + x == x)
-    {
-      *expptr = 0;
-      return x;
-    }
-
-  sign = 0;
-  if (x < 0)
-    {
-      x = - x;
-      sign = -1;
-    }
-
-  BEGIN_ROUNDING ();
-
-  {
-    /* Since the exponent is an 'int', it fits in 64 bits.  Therefore the
-       loops are executed no more than 64 times.  */
-    DOUBLE pow2[64]; /* pow2[i] = 2^2^i */
-    DOUBLE powh[64]; /* powh[i] = 2^-2^i */
-    int i;
-
-    exponent = 0;
-    if (x >= L_(1.0))
-      {
-        /* A positive exponent.  */
-        DOUBLE pow2_i; /* = pow2[i] */
-        DOUBLE powh_i; /* = powh[i] */
-
-        /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i,
-           x * 2^exponent = argument, x >= 1.0.  */
-        for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5);
-             ;
-             i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i)
-          {
-            if (x >= pow2_i)
-              {
-                exponent += (1 << i);
-                x *= powh_i;
-              }
-            else
-              break;
-
-            pow2[i] = pow2_i;
-            powh[i] = powh_i;
-          }
-        /* Avoid making x too small, as it could become a denormalized
-           number and thus lose precision.  */
-        while (i > 0 && x < pow2[i - 1])
-          {
-            i--;
-            powh_i = powh[i];
-          }
-        exponent += (1 << i);
-        x *= powh_i;
-        /* Here 2^-2^i <= x < 1.0.  */
-      }
-    else
-      {
-        /* A negative or zero exponent.  */
-        DOUBLE pow2_i; /* = pow2[i] */
-        DOUBLE powh_i; /* = powh[i] */
-
-        /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i,
-           x * 2^exponent = argument, x < 1.0.  */
-        for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5);
-             ;
-             i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i)
-          {
-            if (x < powh_i)
-              {
-                exponent -= (1 << i);
-                x *= pow2_i;
-              }
-            else
-              break;
-
-            pow2[i] = pow2_i;
-            powh[i] = powh_i;
-          }
-        /* Here 2^-2^i <= x < 1.0.  */
-      }
-
-    /* Invariants: x * 2^exponent = argument, and 2^-2^i <= x < 1.0.  */
-    while (i > 0)
-      {
-        i--;
-        if (x < powh[i])
-          {
-            exponent -= (1 << i);
-            x *= pow2[i];
-          }
-      }
-    /* Here 0.5 <= x < 1.0.  */
-  }
-
-  if (sign < 0)
-    x = - x;
-
-  END_ROUNDING ();
-
-  *expptr = exponent;
-  return x;
-}
diff --git a/lib/frexpl.c b/lib/frexpl.c
deleted file mode 100644
index 8b17094d50c..00000000000
--- a/lib/frexpl.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Split a 'long double' into fraction and mantissa.
-   Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
-
-/* Specification.  */
-# include <math.h>
-
-long double
-frexpl (long double x, int *expptr)
-{
-  return frexp (x, expptr);
-}
-
-#else
-
-# define USE_LONG_DOUBLE
-# include "frexp.c"
-
-#endif
diff --git a/lib/fseterr.c b/lib/fseterr.c
deleted file mode 100644
index 9b39305c6d5..00000000000
--- a/lib/fseterr.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Set the error indicator of a stream.
-   Copyright (C) 2007-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "fseterr.h"
-
-#include <errno.h>
-
-#include "stdio-impl.h"
-
-/* This file is not used on systems that have the __fseterr function,
-   namely musl libc.  */
-
-void
-fseterr (FILE *fp)
-{
-  /* Most systems provide FILE as a struct and the necessary bitmask in
-     <stdio.h>, because they need it for implementing getc() and putc() as
-     fast macros.  */
-#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1
-  /* GNU libc, BeOS, Haiku, Linux libc5 */
-  fp->_flags |= _IO_ERR_SEEN;
-#elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
-  /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
-  fp_->_flags |= __SERR;
-#elif defined __EMX__               /* emx+gcc */
-  fp->_flags |= _IOERR;
-#elif defined __minix               /* Minix */
-  fp->_flags |= _IOERR;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, UnixWare, mingw, MSVC, NonStop Kernel, OpenVMS */
-  fp_->_flag |= _IOERR;
-#elif defined __UCLIBC__            /* uClibc */
-  fp->__modeflags |= __FLAG_ERROR;
-#elif defined __QNX__               /* QNX */
-  fp->_Mode |= 0x200 /* _MERR */;
-#elif defined __MINT__              /* Atari FreeMiNT */
-  fp->__error = 1;
-#elif defined EPLAN9                /* Plan9 */
-  if (fp->state != 0 /* CLOSED */)
-    fp->state = 5 /* ERR */;
-#elif 0                             /* unknown  */
-  /* Portable fallback, based on an idea by Rich Felker.
-     Wow! 6 system calls for something that is just a bit operation!
-     Not activated on any system, because there is no way to repair FP when
-     the sequence of system calls fails, and library code should not call
-     abort().  */
-  int saved_errno;
-  int fd;
-  int fd2;
-
-  saved_errno = errno;
-  fflush (fp);
-  fd = fileno (fp);
-  fd2 = dup (fd);
-  if (fd2 >= 0)
-    {
-      close (fd);
-      fputc ('\0', fp); /* This should set the error indicator.  */
-      fflush (fp);      /* Or this.  */
-      if (dup2 (fd2, fd) < 0)
-        /* Whee... we botched the stream and now cannot restore it!  */
-        abort ();
-      close (fd2);
-    }
-  errno = saved_errno;
-#else
- #error "Please port gnulib fseterr.c to your platform! Look at the 
definitions of ferror and clearerr on your system, then report this to 
bug-gnulib."
-#endif
-}
diff --git a/lib/fseterr.h b/lib/fseterr.h
deleted file mode 100644
index 87dc347332d..00000000000
--- a/lib/fseterr.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Set the error indicator of a stream.
-   Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#ifndef _FSETERR_H
-#define _FSETERR_H
-
-/* This file uses HAVE___FSETERR.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-#include <stdio.h>
-
-/* Set the error indicator of the stream FP.
-   The "error indicator" is set when an I/O operation on the stream fails, and
-   is cleared (together with the "end-of-file" indicator) by clearerr (FP).  */
-
-#if HAVE___FSETERR /* musl libc */
-
-# include <stdio_ext.h>
-# define fseterr(fp) __fseterr (fp)
-
-#else
-
-# ifdef __cplusplus
-extern "C" {
-# endif
-
-extern void fseterr (FILE *fp);
-
-# ifdef __cplusplus
-}
-# endif
-
-#endif
-
-#endif /* _FSETERR_H */
diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in
index 4fef3c4c82d..1bfa1daa0b3 100644
--- a/lib/gnulib.mk.in
+++ b/lib/gnulib.mk.in
@@ -136,7 +136,6 @@
 #  nstrftime \
 #  pathmax \
 #  pipe2 \
-#  printf-posix \
 #  pselect \
 #  pthread_sigmask \
 #  qcopy-acl \
@@ -170,7 +169,6 @@
 #  unlocked-io \
 #  update-copyright \
 #  utimensat \
-#  vasprintf-posix \
 #  vla \
 #  warnings \
 #  year2038
@@ -198,11 +196,11 @@ ANDROID_OBJ = @ANDROID_OBJ@
 ANDROID_SDK_18_OR_EARLIER = @ANDROID_SDK_18_OR_EARLIER@
 ANDROID_SDK_8_OR_EARLIER = @ANDROID_SDK_8_OR_EARLIER@
 ANDROID_SHARED_USER_ID = @ANDROID_SHARED_USER_ID@
+ANDROID_SHARED_USER_NAME = @ANDROID_SHARED_USER_NAME@
 APKSIGNER = @APKSIGNER@
 APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
 AR = @AR@
 ARFLAGS = @ARFLAGS@
-ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
 ASSERT_H = @ASSERT_H@
 AUTO_DEPEND = @AUTO_DEPEND@
 AWK = @AWK@
@@ -270,7 +268,6 @@ EXEEXT = @EXEEXT@
 FILE_HAS_ACL_LIB = @FILE_HAS_ACL_LIB@
 FIND_DELETE = @FIND_DELETE@
 FIRSTFILE_OBJ = @FIRSTFILE_OBJ@
-FLOAT_H = @FLOAT_H@
 FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
 FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
 FONT_OBJ = @FONT_OBJ@
@@ -299,10 +296,8 @@ GL_COND_OBJ_FACCESSAT_CONDITION = 
@GL_COND_OBJ_FACCESSAT_CONDITION@
 GL_COND_OBJ_FCHMODAT_CONDITION = @GL_COND_OBJ_FCHMODAT_CONDITION@
 GL_COND_OBJ_FCNTL_CONDITION = @GL_COND_OBJ_FCNTL_CONDITION@
 GL_COND_OBJ_FDOPENDIR_CONDITION = @GL_COND_OBJ_FDOPENDIR_CONDITION@
-GL_COND_OBJ_FLOAT_CONDITION = @GL_COND_OBJ_FLOAT_CONDITION@
 GL_COND_OBJ_FPENDING_CONDITION = @GL_COND_OBJ_FPENDING_CONDITION@
 GL_COND_OBJ_FREE_CONDITION = @GL_COND_OBJ_FREE_CONDITION@
-GL_COND_OBJ_FSETERR_CONDITION = @GL_COND_OBJ_FSETERR_CONDITION@
 GL_COND_OBJ_FSTATAT_CONDITION = @GL_COND_OBJ_FSTATAT_CONDITION@
 GL_COND_OBJ_FSUSAGE_CONDITION = @GL_COND_OBJ_FSUSAGE_CONDITION@
 GL_COND_OBJ_FSYNC_CONDITION = @GL_COND_OBJ_FSYNC_CONDITION@
@@ -316,7 +311,6 @@ GL_COND_OBJ_GETOPT_CONDITION = 
@GL_COND_OBJ_GETOPT_CONDITION@
 GL_COND_OBJ_GETRANDOM_CONDITION = @GL_COND_OBJ_GETRANDOM_CONDITION@
 GL_COND_OBJ_GETTIMEOFDAY_CONDITION = @GL_COND_OBJ_GETTIMEOFDAY_CONDITION@
 GL_COND_OBJ_GROUP_MEMBER_CONDITION = @GL_COND_OBJ_GROUP_MEMBER_CONDITION@
-GL_COND_OBJ_ITOLD_CONDITION = @GL_COND_OBJ_ITOLD_CONDITION@
 GL_COND_OBJ_LCHMOD_CONDITION = @GL_COND_OBJ_LCHMOD_CONDITION@
 GL_COND_OBJ_LSTAT_CONDITION = @GL_COND_OBJ_LSTAT_CONDITION@
 GL_COND_OBJ_MEMPCPY_CONDITION = @GL_COND_OBJ_MEMPCPY_CONDITION@
@@ -334,7 +328,6 @@ GL_COND_OBJ_READLINK_CONDITION = 
@GL_COND_OBJ_READLINK_CONDITION@
 GL_COND_OBJ_REGEX_CONDITION = @GL_COND_OBJ_REGEX_CONDITION@
 GL_COND_OBJ_SIG2STR_CONDITION = @GL_COND_OBJ_SIG2STR_CONDITION@
 GL_COND_OBJ_SIGDESCR_NP_CONDITION = @GL_COND_OBJ_SIGDESCR_NP_CONDITION@
-GL_COND_OBJ_SIGNBIT3_CONDITION = @GL_COND_OBJ_SIGNBIT3_CONDITION@
 GL_COND_OBJ_STDIO_READ_CONDITION = @GL_COND_OBJ_STDIO_READ_CONDITION@
 GL_COND_OBJ_STDIO_WRITE_CONDITION = @GL_COND_OBJ_STDIO_WRITE_CONDITION@
 GL_COND_OBJ_STPCPY_CONDITION = @GL_COND_OBJ_STPCPY_CONDITION@
@@ -352,7 +345,6 @@ GL_GENERATE_ASSERT_H_CONDITION = 
@GL_GENERATE_ASSERT_H_CONDITION@
 GL_GENERATE_BYTESWAP_H_CONDITION = @GL_GENERATE_BYTESWAP_H_CONDITION@
 GL_GENERATE_ERRNO_H_CONDITION = @GL_GENERATE_ERRNO_H_CONDITION@
 GL_GENERATE_EXECINFO_H_CONDITION = @GL_GENERATE_EXECINFO_H_CONDITION@
-GL_GENERATE_FLOAT_H_CONDITION = @GL_GENERATE_FLOAT_H_CONDITION@
 GL_GENERATE_GETOPT_CDEFS_H_CONDITION = @GL_GENERATE_GETOPT_CDEFS_H_CONDITION@
 GL_GENERATE_GETOPT_H_CONDITION = @GL_GENERATE_GETOPT_H_CONDITION@
 GL_GENERATE_GMP_GMP_H_CONDITION = @GL_GENERATE_GMP_GMP_H_CONDITION@
@@ -364,37 +356,18 @@ GL_GENERATE_STDCKDINT_H_CONDITION = 
@GL_GENERATE_STDCKDINT_H_CONDITION@
 GL_GENERATE_STDDEF_H_CONDITION = @GL_GENERATE_STDDEF_H_CONDITION@
 GL_GENERATE_STDINT_H_CONDITION = @GL_GENERATE_STDINT_H_CONDITION@
 GL_GNULIB_ACCESS = @GL_GNULIB_ACCESS@
-GL_GNULIB_ACOSF = @GL_GNULIB_ACOSF@
-GL_GNULIB_ACOSL = @GL_GNULIB_ACOSL@
 GL_GNULIB_ALIGNED_ALLOC = @GL_GNULIB_ALIGNED_ALLOC@
 GL_GNULIB_ALPHASORT = @GL_GNULIB_ALPHASORT@
-GL_GNULIB_ASINF = @GL_GNULIB_ASINF@
-GL_GNULIB_ASINL = @GL_GNULIB_ASINL@
-GL_GNULIB_ATAN2F = @GL_GNULIB_ATAN2F@
-GL_GNULIB_ATANF = @GL_GNULIB_ATANF@
-GL_GNULIB_ATANL = @GL_GNULIB_ATANL@
 GL_GNULIB_ATOLL = @GL_GNULIB_ATOLL@
 GL_GNULIB_CALLOC_GNU = @GL_GNULIB_CALLOC_GNU@
 GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@
 GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@
-GL_GNULIB_CBRT = @GL_GNULIB_CBRT@
-GL_GNULIB_CBRTF = @GL_GNULIB_CBRTF@
-GL_GNULIB_CBRTL = @GL_GNULIB_CBRTL@
-GL_GNULIB_CEIL = @GL_GNULIB_CEIL@
-GL_GNULIB_CEILF = @GL_GNULIB_CEILF@
-GL_GNULIB_CEILL = @GL_GNULIB_CEILL@
 GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@
 GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@
 GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@
 GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@
 GL_GNULIB_CLOSEDIR = @GL_GNULIB_CLOSEDIR@
-GL_GNULIB_COPYSIGN = @GL_GNULIB_COPYSIGN@
-GL_GNULIB_COPYSIGNF = @GL_GNULIB_COPYSIGNF@
-GL_GNULIB_COPYSIGNL = @GL_GNULIB_COPYSIGNL@
 GL_GNULIB_COPY_FILE_RANGE = @GL_GNULIB_COPY_FILE_RANGE@
-GL_GNULIB_COSF = @GL_GNULIB_COSF@
-GL_GNULIB_COSHF = @GL_GNULIB_COSHF@
-GL_GNULIB_COSL = @GL_GNULIB_COSL@
 GL_GNULIB_CREAT = @GL_GNULIB_CREAT@
 GL_GNULIB_CTIME = @GL_GNULIB_CTIME@
 GL_GNULIB_DIRFD = @GL_GNULIB_DIRFD@
@@ -411,17 +384,7 @@ GL_GNULIB_EXECV = @GL_GNULIB_EXECV@
 GL_GNULIB_EXECVE = @GL_GNULIB_EXECVE@
 GL_GNULIB_EXECVP = @GL_GNULIB_EXECVP@
 GL_GNULIB_EXECVPE = @GL_GNULIB_EXECVPE@
-GL_GNULIB_EXP2 = @GL_GNULIB_EXP2@
-GL_GNULIB_EXP2F = @GL_GNULIB_EXP2F@
-GL_GNULIB_EXP2L = @GL_GNULIB_EXP2L@
-GL_GNULIB_EXPF = @GL_GNULIB_EXPF@
-GL_GNULIB_EXPL = @GL_GNULIB_EXPL@
 GL_GNULIB_EXPLICIT_BZERO = @GL_GNULIB_EXPLICIT_BZERO@
-GL_GNULIB_EXPM1 = @GL_GNULIB_EXPM1@
-GL_GNULIB_EXPM1F = @GL_GNULIB_EXPM1F@
-GL_GNULIB_EXPM1L = @GL_GNULIB_EXPM1L@
-GL_GNULIB_FABSF = @GL_GNULIB_FABSF@
-GL_GNULIB_FABSL = @GL_GNULIB_FABSL@
 GL_GNULIB_FACCESSAT = @GL_GNULIB_FACCESSAT@
 GL_GNULIB_FCHDIR = @GL_GNULIB_FCHDIR@
 GL_GNULIB_FCHMODAT = @GL_GNULIB_FCHMODAT@
@@ -436,15 +399,6 @@ GL_GNULIB_FFSL = @GL_GNULIB_FFSL@
 GL_GNULIB_FFSLL = @GL_GNULIB_FFSLL@
 GL_GNULIB_FGETC = @GL_GNULIB_FGETC@
 GL_GNULIB_FGETS = @GL_GNULIB_FGETS@
-GL_GNULIB_FLOOR = @GL_GNULIB_FLOOR@
-GL_GNULIB_FLOORF = @GL_GNULIB_FLOORF@
-GL_GNULIB_FLOORL = @GL_GNULIB_FLOORL@
-GL_GNULIB_FMA = @GL_GNULIB_FMA@
-GL_GNULIB_FMAF = @GL_GNULIB_FMAF@
-GL_GNULIB_FMAL = @GL_GNULIB_FMAL@
-GL_GNULIB_FMOD = @GL_GNULIB_FMOD@
-GL_GNULIB_FMODF = @GL_GNULIB_FMODF@
-GL_GNULIB_FMODL = @GL_GNULIB_FMODL@
 GL_GNULIB_FOPEN = @GL_GNULIB_FOPEN@
 GL_GNULIB_FOPEN_GNU = @GL_GNULIB_FOPEN_GNU@
 GL_GNULIB_FPRINTF = @GL_GNULIB_FPRINTF@
@@ -455,9 +409,6 @@ GL_GNULIB_FPUTS = @GL_GNULIB_FPUTS@
 GL_GNULIB_FREAD = @GL_GNULIB_FREAD@
 GL_GNULIB_FREE_POSIX = @GL_GNULIB_FREE_POSIX@
 GL_GNULIB_FREOPEN = @GL_GNULIB_FREOPEN@
-GL_GNULIB_FREXP = @GL_GNULIB_FREXP@
-GL_GNULIB_FREXPF = @GL_GNULIB_FREXPF@
-GL_GNULIB_FREXPL = @GL_GNULIB_FREXPL@
 GL_GNULIB_FSCANF = @GL_GNULIB_FSCANF@
 GL_GNULIB_FSEEK = @GL_GNULIB_FSEEK@
 GL_GNULIB_FSEEKO = @GL_GNULIB_FSEEKO@
@@ -494,43 +445,14 @@ GL_GNULIB_GETUMASK = @GL_GNULIB_GETUMASK@
 GL_GNULIB_GETUSERSHELL = @GL_GNULIB_GETUSERSHELL@
 GL_GNULIB_GRANTPT = @GL_GNULIB_GRANTPT@
 GL_GNULIB_GROUP_MEMBER = @GL_GNULIB_GROUP_MEMBER@
-GL_GNULIB_HYPOT = @GL_GNULIB_HYPOT@
-GL_GNULIB_HYPOTF = @GL_GNULIB_HYPOTF@
-GL_GNULIB_HYPOTL = @GL_GNULIB_HYPOTL@
-GL_GNULIB_ILOGB = @GL_GNULIB_ILOGB@
-GL_GNULIB_ILOGBF = @GL_GNULIB_ILOGBF@
-GL_GNULIB_ILOGBL = @GL_GNULIB_ILOGBL@
 GL_GNULIB_IMAXABS = @GL_GNULIB_IMAXABS@
 GL_GNULIB_IMAXDIV = @GL_GNULIB_IMAXDIV@
 GL_GNULIB_ISATTY = @GL_GNULIB_ISATTY@
-GL_GNULIB_ISFINITE = @GL_GNULIB_ISFINITE@
-GL_GNULIB_ISINF = @GL_GNULIB_ISINF@
-GL_GNULIB_ISNAN = @GL_GNULIB_ISNAN@
-GL_GNULIB_ISNAND = @GL_GNULIB_ISNAND@
-GL_GNULIB_ISNANF = @GL_GNULIB_ISNANF@
-GL_GNULIB_ISNANL = @GL_GNULIB_ISNANL@
 GL_GNULIB_LCHMOD = @GL_GNULIB_LCHMOD@
 GL_GNULIB_LCHOWN = @GL_GNULIB_LCHOWN@
-GL_GNULIB_LDEXPF = @GL_GNULIB_LDEXPF@
-GL_GNULIB_LDEXPL = @GL_GNULIB_LDEXPL@
 GL_GNULIB_LINK = @GL_GNULIB_LINK@
 GL_GNULIB_LINKAT = @GL_GNULIB_LINKAT@
 GL_GNULIB_LOCALTIME = @GL_GNULIB_LOCALTIME@
-GL_GNULIB_LOG = @GL_GNULIB_LOG@
-GL_GNULIB_LOG10 = @GL_GNULIB_LOG10@
-GL_GNULIB_LOG10F = @GL_GNULIB_LOG10F@
-GL_GNULIB_LOG10L = @GL_GNULIB_LOG10L@
-GL_GNULIB_LOG1P = @GL_GNULIB_LOG1P@
-GL_GNULIB_LOG1PF = @GL_GNULIB_LOG1PF@
-GL_GNULIB_LOG1PL = @GL_GNULIB_LOG1PL@
-GL_GNULIB_LOG2 = @GL_GNULIB_LOG2@
-GL_GNULIB_LOG2F = @GL_GNULIB_LOG2F@
-GL_GNULIB_LOG2L = @GL_GNULIB_LOG2L@
-GL_GNULIB_LOGB = @GL_GNULIB_LOGB@
-GL_GNULIB_LOGBF = @GL_GNULIB_LOGBF@
-GL_GNULIB_LOGBL = @GL_GNULIB_LOGBL@
-GL_GNULIB_LOGF = @GL_GNULIB_LOGF@
-GL_GNULIB_LOGL = @GL_GNULIB_LOGL@
 GL_GNULIB_LSEEK = @GL_GNULIB_LSEEK@
 GL_GNULIB_LSTAT = @GL_GNULIB_LSTAT@
 GL_GNULIB_MALLOC_GNU = @GL_GNULIB_MALLOC_GNU@
@@ -575,9 +497,6 @@ GL_GNULIB_MDA_GETCWD = @GL_GNULIB_MDA_GETCWD@
 GL_GNULIB_MDA_GETPID = @GL_GNULIB_MDA_GETPID@
 GL_GNULIB_MDA_GETW = @GL_GNULIB_MDA_GETW@
 GL_GNULIB_MDA_ISATTY = @GL_GNULIB_MDA_ISATTY@
-GL_GNULIB_MDA_J0 = @GL_GNULIB_MDA_J0@
-GL_GNULIB_MDA_J1 = @GL_GNULIB_MDA_J1@
-GL_GNULIB_MDA_JN = @GL_GNULIB_MDA_JN@
 GL_GNULIB_MDA_LSEEK = @GL_GNULIB_MDA_LSEEK@
 GL_GNULIB_MDA_MEMCCPY = @GL_GNULIB_MDA_MEMCCPY@
 GL_GNULIB_MDA_MKDIR = @GL_GNULIB_MDA_MKDIR@
@@ -594,9 +513,6 @@ GL_GNULIB_MDA_TZSET = @GL_GNULIB_MDA_TZSET@
 GL_GNULIB_MDA_UMASK = @GL_GNULIB_MDA_UMASK@
 GL_GNULIB_MDA_UNLINK = @GL_GNULIB_MDA_UNLINK@
 GL_GNULIB_MDA_WRITE = @GL_GNULIB_MDA_WRITE@
-GL_GNULIB_MDA_Y0 = @GL_GNULIB_MDA_Y0@
-GL_GNULIB_MDA_Y1 = @GL_GNULIB_MDA_Y1@
-GL_GNULIB_MDA_YN = @GL_GNULIB_MDA_YN@
 GL_GNULIB_MEMCHR = @GL_GNULIB_MEMCHR@
 GL_GNULIB_MEMMEM = @GL_GNULIB_MEMMEM@
 GL_GNULIB_MEMPCPY = @GL_GNULIB_MEMPCPY@
@@ -614,9 +530,6 @@ GL_GNULIB_MKOSTEMPS = @GL_GNULIB_MKOSTEMPS@
 GL_GNULIB_MKSTEMP = @GL_GNULIB_MKSTEMP@
 GL_GNULIB_MKSTEMPS = @GL_GNULIB_MKSTEMPS@
 GL_GNULIB_MKTIME = @GL_GNULIB_MKTIME@
-GL_GNULIB_MODF = @GL_GNULIB_MODF@
-GL_GNULIB_MODFF = @GL_GNULIB_MODFF@
-GL_GNULIB_MODFL = @GL_GNULIB_MODFL@
 GL_GNULIB_NANOSLEEP = @GL_GNULIB_NANOSLEEP@
 GL_GNULIB_NONBLOCKING = @GL_GNULIB_NONBLOCKING@
 GL_GNULIB_OBSTACK_PRINTF = @GL_GNULIB_OBSTACK_PRINTF@
@@ -632,7 +545,6 @@ GL_GNULIB_PIPE2 = @GL_GNULIB_PIPE2@
 GL_GNULIB_POPEN = @GL_GNULIB_POPEN@
 GL_GNULIB_POSIX_MEMALIGN = @GL_GNULIB_POSIX_MEMALIGN@
 GL_GNULIB_POSIX_OPENPT = @GL_GNULIB_POSIX_OPENPT@
-GL_GNULIB_POWF = @GL_GNULIB_POWF@
 GL_GNULIB_PREAD = @GL_GNULIB_PREAD@
 GL_GNULIB_PRINTF = @GL_GNULIB_PRINTF@
 GL_GNULIB_PRINTF_POSIX = @GL_GNULIB_PRINTF_POSIX@
@@ -658,20 +570,11 @@ GL_GNULIB_REALLOCARRAY = @GL_GNULIB_REALLOCARRAY@
 GL_GNULIB_REALLOC_GNU = @GL_GNULIB_REALLOC_GNU@
 GL_GNULIB_REALLOC_POSIX = @GL_GNULIB_REALLOC_POSIX@
 GL_GNULIB_REALPATH = @GL_GNULIB_REALPATH@
-GL_GNULIB_REMAINDER = @GL_GNULIB_REMAINDER@
-GL_GNULIB_REMAINDERF = @GL_GNULIB_REMAINDERF@
-GL_GNULIB_REMAINDERL = @GL_GNULIB_REMAINDERL@
 GL_GNULIB_REMOVE = @GL_GNULIB_REMOVE@
 GL_GNULIB_RENAME = @GL_GNULIB_RENAME@
 GL_GNULIB_RENAMEAT = @GL_GNULIB_RENAMEAT@
 GL_GNULIB_REWINDDIR = @GL_GNULIB_REWINDDIR@
-GL_GNULIB_RINT = @GL_GNULIB_RINT@
-GL_GNULIB_RINTF = @GL_GNULIB_RINTF@
-GL_GNULIB_RINTL = @GL_GNULIB_RINTL@
 GL_GNULIB_RMDIR = @GL_GNULIB_RMDIR@
-GL_GNULIB_ROUND = @GL_GNULIB_ROUND@
-GL_GNULIB_ROUNDF = @GL_GNULIB_ROUNDF@
-GL_GNULIB_ROUNDL = @GL_GNULIB_ROUNDL@
 GL_GNULIB_RPMATCH = @GL_GNULIB_RPMATCH@
 GL_GNULIB_SCANDIR = @GL_GNULIB_SCANDIR@
 GL_GNULIB_SCANF = @GL_GNULIB_SCANF@
@@ -683,16 +586,10 @@ GL_GNULIB_SIGABBREV_NP = @GL_GNULIB_SIGABBREV_NP@
 GL_GNULIB_SIGACTION = @GL_GNULIB_SIGACTION@
 GL_GNULIB_SIGDESCR_NP = @GL_GNULIB_SIGDESCR_NP@
 GL_GNULIB_SIGNAL_H_SIGPIPE = @GL_GNULIB_SIGNAL_H_SIGPIPE@
-GL_GNULIB_SIGNBIT = @GL_GNULIB_SIGNBIT@
 GL_GNULIB_SIGPROCMASK = @GL_GNULIB_SIGPROCMASK@
-GL_GNULIB_SINF = @GL_GNULIB_SINF@
-GL_GNULIB_SINHF = @GL_GNULIB_SINHF@
-GL_GNULIB_SINL = @GL_GNULIB_SINL@
 GL_GNULIB_SLEEP = @GL_GNULIB_SLEEP@
 GL_GNULIB_SNPRINTF = @GL_GNULIB_SNPRINTF@
 GL_GNULIB_SPRINTF_POSIX = @GL_GNULIB_SPRINTF_POSIX@
-GL_GNULIB_SQRTF = @GL_GNULIB_SQRTF@
-GL_GNULIB_SQRTL = @GL_GNULIB_SQRTL@
 GL_GNULIB_STAT = @GL_GNULIB_STAT@
 GL_GNULIB_STDIO_H_NONBLOCKING = @GL_GNULIB_STDIO_H_NONBLOCKING@
 GL_GNULIB_STDIO_H_SIGPIPE = @GL_GNULIB_STDIO_H_SIGPIPE@
@@ -726,9 +623,6 @@ GL_GNULIB_STRVERSCMP = @GL_GNULIB_STRVERSCMP@
 GL_GNULIB_SYMLINK = @GL_GNULIB_SYMLINK@
 GL_GNULIB_SYMLINKAT = @GL_GNULIB_SYMLINKAT@
 GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@
-GL_GNULIB_TANF = @GL_GNULIB_TANF@
-GL_GNULIB_TANHF = @GL_GNULIB_TANHF@
-GL_GNULIB_TANL = @GL_GNULIB_TANL@
 GL_GNULIB_TIME = @GL_GNULIB_TIME@
 GL_GNULIB_TIMEGM = @GL_GNULIB_TIMEGM@
 GL_GNULIB_TIMESPEC_GET = @GL_GNULIB_TIMESPEC_GET@
@@ -736,10 +630,7 @@ GL_GNULIB_TIMESPEC_GETRES = @GL_GNULIB_TIMESPEC_GETRES@
 GL_GNULIB_TIME_R = @GL_GNULIB_TIME_R@
 GL_GNULIB_TIME_RZ = @GL_GNULIB_TIME_RZ@
 GL_GNULIB_TMPFILE = @GL_GNULIB_TMPFILE@
-GL_GNULIB_TRUNC = @GL_GNULIB_TRUNC@
 GL_GNULIB_TRUNCATE = @GL_GNULIB_TRUNCATE@
-GL_GNULIB_TRUNCF = @GL_GNULIB_TRUNCF@
-GL_GNULIB_TRUNCL = @GL_GNULIB_TRUNCL@
 GL_GNULIB_TTYNAME_R = @GL_GNULIB_TTYNAME_R@
 GL_GNULIB_TZSET = @GL_GNULIB_TZSET@
 GL_GNULIB_UNISTD_H_GETOPT = @GL_GNULIB_UNISTD_H_GETOPT@
@@ -786,58 +677,26 @@ HAIKU_LIBS = @HAIKU_LIBS@
 HAIKU_OBJ = @HAIKU_OBJ@
 HARFBUZZ_CFLAGS = @HARFBUZZ_CFLAGS@
 HARFBUZZ_LIBS = @HARFBUZZ_LIBS@
-HAVE_ACOSF = @HAVE_ACOSF@
-HAVE_ACOSL = @HAVE_ACOSL@
 HAVE_ALIGNED_ALLOC = @HAVE_ALIGNED_ALLOC@
 HAVE_ALLOCA_H = @HAVE_ALLOCA_H@
 HAVE_ALPHASORT = @HAVE_ALPHASORT@
-HAVE_ASINF = @HAVE_ASINF@
-HAVE_ASINL = @HAVE_ASINL@
-HAVE_ATAN2F = @HAVE_ATAN2F@
-HAVE_ATANF = @HAVE_ATANF@
-HAVE_ATANL = @HAVE_ATANL@
 HAVE_ATOLL = @HAVE_ATOLL@
 HAVE_BE_APP = @HAVE_BE_APP@
 HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@
 HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
-HAVE_CBRT = @HAVE_CBRT@
-HAVE_CBRTF = @HAVE_CBRTF@
-HAVE_CBRTL = @HAVE_CBRTL@
 HAVE_CHOWN = @HAVE_CHOWN@
 HAVE_CLOSEDIR = @HAVE_CLOSEDIR@
-HAVE_COPYSIGN = @HAVE_COPYSIGN@
-HAVE_COPYSIGNL = @HAVE_COPYSIGNL@
 HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@
-HAVE_COSF = @HAVE_COSF@
-HAVE_COSHF = @HAVE_COSHF@
-HAVE_COSL = @HAVE_COSL@
-HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@
-HAVE_DECL_ASINL = @HAVE_DECL_ASINL@
-HAVE_DECL_ATANL = @HAVE_DECL_ATANL@
-HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@
-HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@
-HAVE_DECL_CEILF = @HAVE_DECL_CEILF@
-HAVE_DECL_CEILL = @HAVE_DECL_CEILL@
-HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@
-HAVE_DECL_COSL = @HAVE_DECL_COSL@
 HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
 HAVE_DECL_ECVT = @HAVE_DECL_ECVT@
 HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
 HAVE_DECL_EXECVPE = @HAVE_DECL_EXECVPE@
-HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@
-HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@
-HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@
-HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
-HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@
 HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
 HAVE_DECL_FCLOSEALL = @HAVE_DECL_FCLOSEALL@
 HAVE_DECL_FCVT = @HAVE_DECL_FCVT@
 HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@
 HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@
-HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@
-HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@
 HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
-HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
 HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
 HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
 HAVE_DECL_GCVT = @HAVE_DECL_GCVT@
@@ -853,32 +712,17 @@ HAVE_DECL_GETW = @HAVE_DECL_GETW@
 HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
 HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
 HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@
-HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@
 HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
-HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@
-HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@
-HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@
-HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@
-HAVE_DECL_LOGB = @HAVE_DECL_LOGB@
-HAVE_DECL_LOGL = @HAVE_DECL_LOGL@
 HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
 HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
 HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
 HAVE_DECL_POSIX_SPAWN_SETSID = @HAVE_DECL_POSIX_SPAWN_SETSID@
 HAVE_DECL_PROGRAM_INVOCATION_NAME = @HAVE_DECL_PROGRAM_INVOCATION_NAME@
 HAVE_DECL_PUTW = @HAVE_DECL_PUTW@
-HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@
-HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@
-HAVE_DECL_RINTF = @HAVE_DECL_RINTF@
-HAVE_DECL_ROUND = @HAVE_DECL_ROUND@
-HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@
-HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@
 HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
 HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@
 HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@
-HAVE_DECL_SINL = @HAVE_DECL_SINL@
 HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
-HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@
 HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
 HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
 HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
@@ -887,11 +731,7 @@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
 HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
 HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
 HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
-HAVE_DECL_TANL = @HAVE_DECL_TANL@
-HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@
 HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@
-HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@
-HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@
 HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
 HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
 HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
@@ -900,13 +740,7 @@ HAVE_DPRINTF = @HAVE_DPRINTF@
 HAVE_DUP3 = @HAVE_DUP3@
 HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
 HAVE_EXECVPE = @HAVE_EXECVPE@
-HAVE_EXPF = @HAVE_EXPF@
-HAVE_EXPL = @HAVE_EXPL@
 HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@
-HAVE_EXPM1 = @HAVE_EXPM1@
-HAVE_EXPM1F = @HAVE_EXPM1F@
-HAVE_FABSF = @HAVE_FABSF@
-HAVE_FABSL = @HAVE_FABSL@
 HAVE_FACCESSAT = @HAVE_FACCESSAT@
 HAVE_FCHDIR = @HAVE_FCHDIR@
 HAVE_FCHMODAT = @HAVE_FCHMODAT@
@@ -914,15 +748,8 @@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
 HAVE_FCNTL = @HAVE_FCNTL@
 HAVE_FDATASYNC = @HAVE_FDATASYNC@
 HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
-HAVE_FEATURES_H = @HAVE_FEATURES_H@
 HAVE_FFSL = @HAVE_FFSL@
 HAVE_FFSLL = @HAVE_FFSLL@
-HAVE_FMA = @HAVE_FMA@
-HAVE_FMAF = @HAVE_FMAF@
-HAVE_FMAL = @HAVE_FMAL@
-HAVE_FMODF = @HAVE_FMODF@
-HAVE_FMODL = @HAVE_FMODL@
-HAVE_FREXPF = @HAVE_FREXPF@
 HAVE_FSEEKO = @HAVE_FSEEKO@
 HAVE_FSTATAT = @HAVE_FSTATAT@
 HAVE_FSYNC = @HAVE_FSYNC@
@@ -945,35 +772,17 @@ HAVE_GETUMASK = @HAVE_GETUMASK@
 HAVE_GRANTPT = @HAVE_GRANTPT@
 HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
 HAVE_GSETTINGS = @HAVE_GSETTINGS@
-HAVE_HYPOTF = @HAVE_HYPOTF@
-HAVE_HYPOTL = @HAVE_HYPOTL@
-HAVE_ILOGB = @HAVE_ILOGB@
-HAVE_ILOGBF = @HAVE_ILOGBF@
-HAVE_ILOGBL = @HAVE_ILOGBL@
 HAVE_IMAXABS = @HAVE_IMAXABS@
 HAVE_IMAXDIV = @HAVE_IMAXDIV@
 HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@
 HAVE_INITSTATE = @HAVE_INITSTATE@
 HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
-HAVE_ISNAND = @HAVE_ISNAND@
-HAVE_ISNANF = @HAVE_ISNANF@
-HAVE_ISNANL = @HAVE_ISNANL@
 HAVE_LCHMOD = @HAVE_LCHMOD@
 HAVE_LCHOWN = @HAVE_LCHOWN@
-HAVE_LDEXPF = @HAVE_LDEXPF@
 HAVE_LIBGMP = @HAVE_LIBGMP@
 HAVE_LIBSECCOMP = @HAVE_LIBSECCOMP@
 HAVE_LINK = @HAVE_LINK@
 HAVE_LINKAT = @HAVE_LINKAT@
-HAVE_LOG10F = @HAVE_LOG10F@
-HAVE_LOG10L = @HAVE_LOG10L@
-HAVE_LOG1P = @HAVE_LOG1P@
-HAVE_LOG1PF = @HAVE_LOG1PF@
-HAVE_LOG1PL = @HAVE_LOG1PL@
-HAVE_LOGBF = @HAVE_LOGBF@
-HAVE_LOGBL = @HAVE_LOGBL@
-HAVE_LOGF = @HAVE_LOGF@
-HAVE_LOGL = @HAVE_LOGL@
 HAVE_LSTAT = @HAVE_LSTAT@
 HAVE_MACPORTS = @HAVE_MACPORTS@
 HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@
@@ -991,8 +800,6 @@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
 HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
 HAVE_MKSTEMP = @HAVE_MKSTEMP@
 HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
-HAVE_MODFF = @HAVE_MODFF@
-HAVE_MODFL = @HAVE_MODFL@
 HAVE_MODULES = @HAVE_MODULES@
 HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
 HAVE_NATIVE_COMP = @HAVE_NATIVE_COMP@
@@ -1012,7 +819,6 @@ HAVE_POSIX_SPAWN = @HAVE_POSIX_SPAWN@
 HAVE_POSIX_SPAWNATTR_SETFLAGS = @HAVE_POSIX_SPAWNATTR_SETFLAGS@
 HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR = 
@HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR@
 HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP = 
@HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP@
-HAVE_POWF = @HAVE_POWF@
 HAVE_PREAD = @HAVE_PREAD@
 HAVE_PSELECT = @HAVE_PSELECT@
 HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@
@@ -1030,14 +836,9 @@ HAVE_READLINK = @HAVE_READLINK@
 HAVE_READLINKAT = @HAVE_READLINKAT@
 HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@
 HAVE_REALPATH = @HAVE_REALPATH@
-HAVE_REMAINDER = @HAVE_REMAINDER@
-HAVE_REMAINDERF = @HAVE_REMAINDERF@
 HAVE_RENAMEAT = @HAVE_RENAMEAT@
 HAVE_REWINDDIR = @HAVE_REWINDDIR@
-HAVE_RINT = @HAVE_RINT@
-HAVE_RINTL = @HAVE_RINTL@
 HAVE_RPMATCH = @HAVE_RPMATCH@
-HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
 HAVE_SCANDIR = @HAVE_SCANDIR@
 HAVE_SECCOMP = @HAVE_SECCOMP@
 HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
@@ -1053,13 +854,8 @@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
 HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
 HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
 HAVE_SIGSET_T = @HAVE_SIGSET_T@
-HAVE_SINF = @HAVE_SINF@
-HAVE_SINHF = @HAVE_SINHF@
-HAVE_SINL = @HAVE_SINL@
 HAVE_SLEEP = @HAVE_SLEEP@
 HAVE_SPAWN_H = @HAVE_SPAWN_H@
-HAVE_SQRTF = @HAVE_SQRTF@
-HAVE_SQRTL = @HAVE_SQRTL@
 HAVE_STDINT_H = @HAVE_STDINT_H@
 HAVE_STPCPY = @HAVE_STPCPY@
 HAVE_STPNCPY = @HAVE_STPNCPY@
@@ -1090,9 +886,6 @@ HAVE_SYS_RANDOM_H = @HAVE_SYS_RANDOM_H@
 HAVE_SYS_SELECT_H = @HAVE_SYS_SELECT_H@
 HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
 HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
-HAVE_TANF = @HAVE_TANF@
-HAVE_TANHF = @HAVE_TANHF@
-HAVE_TANL = @HAVE_TANL@
 HAVE_TIMEGM = @HAVE_TIMEGM@
 HAVE_TIMESPEC_GET = @HAVE_TIMESPEC_GET@
 HAVE_TIMESPEC_GETRES = @HAVE_TIMESPEC_GETRES@
@@ -1227,11 +1020,9 @@ NEXT_AS_FIRST_DIRECTIVE_ASSERT_H = 
@NEXT_AS_FIRST_DIRECTIVE_ASSERT_H@
 NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@
 NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
 NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
-NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
 NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
 NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
 NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@
-NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
 NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@
 NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
 NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
@@ -1248,11 +1039,9 @@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = 
@NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
 NEXT_DIRENT_H = @NEXT_DIRENT_H@
 NEXT_ERRNO_H = @NEXT_ERRNO_H@
 NEXT_FCNTL_H = @NEXT_FCNTL_H@
-NEXT_FLOAT_H = @NEXT_FLOAT_H@
 NEXT_GETOPT_H = @NEXT_GETOPT_H@
 NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
 NEXT_LIMITS_H = @NEXT_LIMITS_H@
-NEXT_MATH_H = @NEXT_MATH_H@
 NEXT_SIGNAL_H = @NEXT_SIGNAL_H@
 NEXT_STDDEF_H = @NEXT_STDDEF_H@
 NEXT_STDINT_H = @NEXT_STDINT_H@
@@ -1307,26 +1096,15 @@ QCOPY_ACL_LIB = @QCOPY_ACL_LIB@
 RALLOC_OBJ = @RALLOC_OBJ@
 RANLIB = @RANLIB@
 REPLACE_ACCESS = @REPLACE_ACCESS@
-REPLACE_ACOSF = @REPLACE_ACOSF@
 REPLACE_ALIGNED_ALLOC = @REPLACE_ALIGNED_ALLOC@
-REPLACE_ASINF = @REPLACE_ASINF@
-REPLACE_ATAN2F = @REPLACE_ATAN2F@
-REPLACE_ATANF = @REPLACE_ATANF@
 REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@
 REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@
 REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
-REPLACE_CBRTF = @REPLACE_CBRTF@
-REPLACE_CBRTL = @REPLACE_CBRTL@
-REPLACE_CEIL = @REPLACE_CEIL@
-REPLACE_CEILF = @REPLACE_CEILF@
-REPLACE_CEILL = @REPLACE_CEILL@
 REPLACE_CHMOD = @REPLACE_CHMOD@
 REPLACE_CHOWN = @REPLACE_CHOWN@
 REPLACE_CLOSE = @REPLACE_CLOSE@
 REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
 REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@
-REPLACE_COSF = @REPLACE_COSF@
-REPLACE_COSHF = @REPLACE_COSHF@
 REPLACE_CREAT = @REPLACE_CREAT@
 REPLACE_CTIME = @REPLACE_CTIME@
 REPLACE_DIRFD = @REPLACE_DIRFD@
@@ -1341,14 +1119,6 @@ REPLACE_EXECV = @REPLACE_EXECV@
 REPLACE_EXECVE = @REPLACE_EXECVE@
 REPLACE_EXECVP = @REPLACE_EXECVP@
 REPLACE_EXECVPE = @REPLACE_EXECVPE@
-REPLACE_EXP2 = @REPLACE_EXP2@
-REPLACE_EXP2L = @REPLACE_EXP2L@
-REPLACE_EXPF = @REPLACE_EXPF@
-REPLACE_EXPL = @REPLACE_EXPL@
-REPLACE_EXPM1 = @REPLACE_EXPM1@
-REPLACE_EXPM1F = @REPLACE_EXPM1F@
-REPLACE_EXPM1L = @REPLACE_EXPM1L@
-REPLACE_FABSL = @REPLACE_FABSL@
 REPLACE_FACCESSAT = @REPLACE_FACCESSAT@
 REPLACE_FCHMODAT = @REPLACE_FCHMODAT@
 REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
@@ -1359,24 +1129,12 @@ REPLACE_FDOPEN = @REPLACE_FDOPEN@
 REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@
 REPLACE_FFLUSH = @REPLACE_FFLUSH@
 REPLACE_FFSLL = @REPLACE_FFSLL@
-REPLACE_FLOOR = @REPLACE_FLOOR@
-REPLACE_FLOORF = @REPLACE_FLOORF@
-REPLACE_FLOORL = @REPLACE_FLOORL@
-REPLACE_FMA = @REPLACE_FMA@
-REPLACE_FMAF = @REPLACE_FMAF@
-REPLACE_FMAL = @REPLACE_FMAL@
-REPLACE_FMOD = @REPLACE_FMOD@
-REPLACE_FMODF = @REPLACE_FMODF@
-REPLACE_FMODL = @REPLACE_FMODL@
 REPLACE_FOPEN = @REPLACE_FOPEN@
 REPLACE_FOPEN_FOR_FOPEN_GNU = @REPLACE_FOPEN_FOR_FOPEN_GNU@
 REPLACE_FPRINTF = @REPLACE_FPRINTF@
 REPLACE_FPURGE = @REPLACE_FPURGE@
 REPLACE_FREE = @REPLACE_FREE@
 REPLACE_FREOPEN = @REPLACE_FREOPEN@
-REPLACE_FREXP = @REPLACE_FREXP@
-REPLACE_FREXPF = @REPLACE_FREXPF@
-REPLACE_FREXPL = @REPLACE_FREXPL@
 REPLACE_FSEEK = @REPLACE_FSEEK@
 REPLACE_FSEEKO = @REPLACE_FSEEKO@
 REPLACE_FSTAT = @REPLACE_FSTAT@
@@ -1402,42 +1160,15 @@ REPLACE_GETRANDOM = @REPLACE_GETRANDOM@
 REPLACE_GETSUBOPT = @REPLACE_GETSUBOPT@
 REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
 REPLACE_GMTIME = @REPLACE_GMTIME@
-REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@
-REPLACE_HYPOT = @REPLACE_HYPOT@
-REPLACE_HYPOTF = @REPLACE_HYPOTF@
-REPLACE_HYPOTL = @REPLACE_HYPOTL@
-REPLACE_ILOGB = @REPLACE_ILOGB@
-REPLACE_ILOGBF = @REPLACE_ILOGBF@
-REPLACE_ILOGBL = @REPLACE_ILOGBL@
 REPLACE_IMAXABS = @REPLACE_IMAXABS@
 REPLACE_IMAXDIV = @REPLACE_IMAXDIV@
 REPLACE_INITSTATE = @REPLACE_INITSTATE@
 REPLACE_ISATTY = @REPLACE_ISATTY@
-REPLACE_ISFINITE = @REPLACE_ISFINITE@
-REPLACE_ISINF = @REPLACE_ISINF@
-REPLACE_ISNAN = @REPLACE_ISNAN@
-REPLACE_ITOLD = @REPLACE_ITOLD@
 REPLACE_LCHOWN = @REPLACE_LCHOWN@
-REPLACE_LDEXPL = @REPLACE_LDEXPL@
 REPLACE_LINK = @REPLACE_LINK@
 REPLACE_LINKAT = @REPLACE_LINKAT@
 REPLACE_LOCALTIME = @REPLACE_LOCALTIME@
 REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
-REPLACE_LOG = @REPLACE_LOG@
-REPLACE_LOG10 = @REPLACE_LOG10@
-REPLACE_LOG10F = @REPLACE_LOG10F@
-REPLACE_LOG10L = @REPLACE_LOG10L@
-REPLACE_LOG1P = @REPLACE_LOG1P@
-REPLACE_LOG1PF = @REPLACE_LOG1PF@
-REPLACE_LOG1PL = @REPLACE_LOG1PL@
-REPLACE_LOG2 = @REPLACE_LOG2@
-REPLACE_LOG2F = @REPLACE_LOG2F@
-REPLACE_LOG2L = @REPLACE_LOG2L@
-REPLACE_LOGB = @REPLACE_LOGB@
-REPLACE_LOGBF = @REPLACE_LOGBF@
-REPLACE_LOGBL = @REPLACE_LOGBL@
-REPLACE_LOGF = @REPLACE_LOGF@
-REPLACE_LOGL = @REPLACE_LOGL@
 REPLACE_LSEEK = @REPLACE_LSEEK@
 REPLACE_LSTAT = @REPLACE_LSTAT@
 REPLACE_MALLOC_FOR_MALLOC_GNU = @REPLACE_MALLOC_FOR_MALLOC_GNU@
@@ -1457,10 +1188,6 @@ REPLACE_MKOSTEMP = @REPLACE_MKOSTEMP@
 REPLACE_MKOSTEMPS = @REPLACE_MKOSTEMPS@
 REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
 REPLACE_MKTIME = @REPLACE_MKTIME@
-REPLACE_MODF = @REPLACE_MODF@
-REPLACE_MODFF = @REPLACE_MODFF@
-REPLACE_MODFL = @REPLACE_MODFL@
-REPLACE_NAN = @REPLACE_NAN@
 REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
 REPLACE_NULL = @REPLACE_NULL@
 REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
@@ -1492,31 +1219,18 @@ REPLACE_REALLOCARRAY = @REPLACE_REALLOCARRAY@
 REPLACE_REALLOC_FOR_REALLOC_GNU = @REPLACE_REALLOC_FOR_REALLOC_GNU@
 REPLACE_REALLOC_FOR_REALLOC_POSIX = @REPLACE_REALLOC_FOR_REALLOC_POSIX@
 REPLACE_REALPATH = @REPLACE_REALPATH@
-REPLACE_REMAINDER = @REPLACE_REMAINDER@
-REPLACE_REMAINDERF = @REPLACE_REMAINDERF@
-REPLACE_REMAINDERL = @REPLACE_REMAINDERL@
 REPLACE_REMOVE = @REPLACE_REMOVE@
 REPLACE_RENAME = @REPLACE_RENAME@
 REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
 REPLACE_REWINDDIR = @REPLACE_REWINDDIR@
-REPLACE_RINTL = @REPLACE_RINTL@
 REPLACE_RMDIR = @REPLACE_RMDIR@
-REPLACE_ROUND = @REPLACE_ROUND@
-REPLACE_ROUNDF = @REPLACE_ROUNDF@
-REPLACE_ROUNDL = @REPLACE_ROUNDL@
 REPLACE_SELECT = @REPLACE_SELECT@
 REPLACE_SETENV = @REPLACE_SETENV@
 REPLACE_SETHOSTNAME = @REPLACE_SETHOSTNAME@
 REPLACE_SETSTATE = @REPLACE_SETSTATE@
-REPLACE_SIGNBIT = @REPLACE_SIGNBIT@
-REPLACE_SIGNBIT_USING_BUILTINS = @REPLACE_SIGNBIT_USING_BUILTINS@
-REPLACE_SINF = @REPLACE_SINF@
-REPLACE_SINHF = @REPLACE_SINHF@
 REPLACE_SLEEP = @REPLACE_SLEEP@
 REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
 REPLACE_SPRINTF = @REPLACE_SPRINTF@
-REPLACE_SQRTF = @REPLACE_SQRTF@
-REPLACE_SQRTL = @REPLACE_SQRTL@
 REPLACE_STAT = @REPLACE_STAT@
 REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
 REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
@@ -1546,16 +1260,11 @@ REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@
 REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@
 REPLACE_SYMLINK = @REPLACE_SYMLINK@
 REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@
-REPLACE_TANF = @REPLACE_TANF@
-REPLACE_TANHF = @REPLACE_TANHF@
 REPLACE_TIME = @REPLACE_TIME@
 REPLACE_TIMEGM = @REPLACE_TIMEGM@
 REPLACE_TIMESPEC_GET = @REPLACE_TIMESPEC_GET@
 REPLACE_TMPFILE = @REPLACE_TMPFILE@
-REPLACE_TRUNC = @REPLACE_TRUNC@
 REPLACE_TRUNCATE = @REPLACE_TRUNCATE@
-REPLACE_TRUNCF = @REPLACE_TRUNCF@
-REPLACE_TRUNCL = @REPLACE_TRUNCL@
 REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
 REPLACE_TZSET = @REPLACE_TZSET@
 REPLACE_UNLINK = @REPLACE_UNLINK@
@@ -1691,7 +1400,6 @@ gamegroup = @gamegroup@
 gameuser = @gameuser@
 gl_GNULIB_ENABLED_03e0aaad4cb89ca757653bd367a6ccb7_CONDITION = 
@gl_GNULIB_ENABLED_03e0aaad4cb89ca757653bd367a6ccb7_CONDITION@
 gl_GNULIB_ENABLED_260941c0e5dc67ec9e87d1fb321c300b_CONDITION = 
@gl_GNULIB_ENABLED_260941c0e5dc67ec9e87d1fb321c300b_CONDITION@
-gl_GNULIB_ENABLED_3f0e593033d1fc2c127581960f641b66_CONDITION = 
@gl_GNULIB_ENABLED_3f0e593033d1fc2c127581960f641b66_CONDITION@
 gl_GNULIB_ENABLED_5264294aa0a5557541b53c8c741f7f31_CONDITION = 
@gl_GNULIB_ENABLED_5264294aa0a5557541b53c8c741f7f31_CONDITION@
 gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c_CONDITION = 
@gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c_CONDITION@
 gl_GNULIB_ENABLED_61bcaca76b3e6f9ae55d57a1c3193bc4_CONDITION = 
@gl_GNULIB_ENABLED_61bcaca76b3e6f9ae55d57a1c3193bc4_CONDITION@
@@ -1704,22 +1412,17 @@ gl_GNULIB_ENABLED_cloexec_CONDITION = 
@gl_GNULIB_ENABLED_cloexec_CONDITION@
 gl_GNULIB_ENABLED_d3b2383720ee0e541357aa2aac598e2b_CONDITION = 
@gl_GNULIB_ENABLED_d3b2383720ee0e541357aa2aac598e2b_CONDITION@
 gl_GNULIB_ENABLED_dirfd_CONDITION = @gl_GNULIB_ENABLED_dirfd_CONDITION@
 gl_GNULIB_ENABLED_e80bf6f757095d2e5fc94dafb8f8fc8b_CONDITION = 
@gl_GNULIB_ENABLED_e80bf6f757095d2e5fc94dafb8f8fc8b_CONDITION@
-gl_GNULIB_ENABLED_ed5616be3593d355b981ffab56b9f37b_CONDITION = 
@gl_GNULIB_ENABLED_ed5616be3593d355b981ffab56b9f37b_CONDITION@
 gl_GNULIB_ENABLED_ef455225c00f5049c808c2eda3e76866_CONDITION = 
@gl_GNULIB_ENABLED_ef455225c00f5049c808c2eda3e76866_CONDITION@
 gl_GNULIB_ENABLED_euidaccess_CONDITION = 
@gl_GNULIB_ENABLED_euidaccess_CONDITION@
 gl_GNULIB_ENABLED_fd38c7e463b54744b77b98aeafb4fa7c_CONDITION = 
@gl_GNULIB_ENABLED_fd38c7e463b54744b77b98aeafb4fa7c_CONDITION@
-gl_GNULIB_ENABLED_fseterr_CONDITION = @gl_GNULIB_ENABLED_fseterr_CONDITION@
 gl_GNULIB_ENABLED_getdelim_CONDITION = @gl_GNULIB_ENABLED_getdelim_CONDITION@
 gl_GNULIB_ENABLED_getdtablesize_CONDITION = 
@gl_GNULIB_ENABLED_getdtablesize_CONDITION@
 gl_GNULIB_ENABLED_getgroups_CONDITION = @gl_GNULIB_ENABLED_getgroups_CONDITION@
 gl_GNULIB_ENABLED_lchmod_CONDITION = @gl_GNULIB_ENABLED_lchmod_CONDITION@
 gl_GNULIB_ENABLED_open_CONDITION = @gl_GNULIB_ENABLED_open_CONDITION@
 gl_GNULIB_ENABLED_rawmemchr_CONDITION = @gl_GNULIB_ENABLED_rawmemchr_CONDITION@
-gl_GNULIB_ENABLED_size_max_CONDITION = @gl_GNULIB_ENABLED_size_max_CONDITION@
 gl_GNULIB_ENABLED_strtoll_CONDITION = @gl_GNULIB_ENABLED_strtoll_CONDITION@
 gl_GNULIB_ENABLED_utimens_CONDITION = @gl_GNULIB_ENABLED_utimens_CONDITION@
-gl_GNULIB_ENABLED_vasnprintf_CONDITION = 
@gl_GNULIB_ENABLED_vasnprintf_CONDITION@
-gl_GNULIB_ENABLED_xsize_CONDITION = @gl_GNULIB_ENABLED_xsize_CONDITION@
 gl_LIBOBJDEPS = @gl_LIBOBJDEPS@
 gl_LIBOBJS = @gl_LIBOBJS@
 gl_LTLIBOBJS = @gl_LTLIBOBJS@
@@ -2387,42 +2090,6 @@ EXTRA_DIST += flexmember.h
 endif
 ## end   gnulib module flexmember
 
-## begin gnulib module float
-ifeq (,$(OMIT_GNULIB_MODULE_float))
-
-BUILT_SOURCES += $(FLOAT_H)
-
-# We need the following in order to create <float.h> when the system
-# doesn't have one that works with the given compiler.
-ifneq (,$(GL_GENERATE_FLOAT_H_CONDITION))
-float.h: float.in.h $(top_builddir)/config.status
-       $(gl_V_at)$(SED_HEADER_STDOUT) \
-             -e 's|@''GUARD_PREFIX''@|GL|g' \
-             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-             -e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \
-             -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \
-             $(srcdir)/float.in.h > $@-t
-       $(AM_V_at)mv $@-t $@
-else
-float.h: $(top_builddir)/config.status
-       rm -f $@
-endif
-MOSTLYCLEANFILES += float.h float.h-t
-
-ifneq (,$(GL_COND_OBJ_FLOAT_CONDITION))
-libgnu_a_SOURCES += float.c
-endif
-ifneq (,$(GL_COND_OBJ_ITOLD_CONDITION))
-libgnu_a_SOURCES += itold.c
-endif
-
-EXTRA_DIST += float.in.h
-
-endif
-## end   gnulib module float
-
 ## begin gnulib module fpending
 ifeq (,$(OMIT_GNULIB_MODULE_fpending))
 
@@ -2435,15 +2102,6 @@ EXTRA_DIST += fpending.h stdio-impl.h
 endif
 ## end   gnulib module fpending
 
-## begin gnulib module fpucw
-ifeq (,$(OMIT_GNULIB_MODULE_fpucw))
-
-
-EXTRA_DIST += fpucw.h
-
-endif
-## end   gnulib module fpucw
-
 ## begin gnulib module free-posix
 ifeq (,$(OMIT_GNULIB_MODULE_free-posix))
 
@@ -2454,42 +2112,6 @@ endif
 endif
 ## end   gnulib module free-posix
 
-## begin gnulib module frexp-nolibm
-ifeq (,$(OMIT_GNULIB_MODULE_frexp-nolibm))
-
-
-EXTRA_DIST += frexp.c
-
-EXTRA_libgnu_a_SOURCES += frexp.c
-
-endif
-## end   gnulib module frexp-nolibm
-
-## begin gnulib module frexpl-nolibm
-ifeq (,$(OMIT_GNULIB_MODULE_frexpl-nolibm))
-
-
-EXTRA_DIST += frexp.c frexpl.c
-
-EXTRA_libgnu_a_SOURCES += frexp.c frexpl.c
-
-endif
-## end   gnulib module frexpl-nolibm
-
-## begin gnulib module fseterr
-ifeq (,$(OMIT_GNULIB_MODULE_fseterr))
-
-ifneq (,$(gl_GNULIB_ENABLED_fseterr_CONDITION))
-ifneq (,$(GL_COND_OBJ_FSETERR_CONDITION))
-libgnu_a_SOURCES += fseterr.c
-endif
-
-endif
-EXTRA_DIST += fseterr.h stdio-impl.h
-
-endif
-## end   gnulib module fseterr
-
 ## begin gnulib module fstatat
 ifeq (,$(OMIT_GNULIB_MODULE_fstatat))
 
@@ -2875,41 +2497,6 @@ EXTRA_DIST += inttypes.in.h
 endif
 ## end   gnulib module inttypes-incomplete
 
-## begin gnulib module isnand-nolibm
-ifeq (,$(OMIT_GNULIB_MODULE_isnand-nolibm))
-
-
-EXTRA_DIST += float+.h isnan.c isnand-nolibm.h isnand.c
-
-EXTRA_libgnu_a_SOURCES += isnan.c isnand.c
-
-endif
-## end   gnulib module isnand-nolibm
-
-## begin gnulib module isnanf-nolibm
-ifeq (,$(OMIT_GNULIB_MODULE_isnanf-nolibm))
-
-ifneq (,$(gl_GNULIB_ENABLED_3f0e593033d1fc2c127581960f641b66_CONDITION))
-
-endif
-EXTRA_DIST += float+.h isnan.c isnanf-nolibm.h isnanf.c
-
-EXTRA_libgnu_a_SOURCES += isnan.c isnanf.c
-
-endif
-## end   gnulib module isnanf-nolibm
-
-## begin gnulib module isnanl-nolibm
-ifeq (,$(OMIT_GNULIB_MODULE_isnanl-nolibm))
-
-
-EXTRA_DIST += float+.h isnan.c isnanl-nolibm.h isnanl.c
-
-EXTRA_libgnu_a_SOURCES += isnan.c isnanl.c
-
-endif
-## end   gnulib module isnanl-nolibm
-
 ## begin gnulib module lchmod
 ifeq (,$(OMIT_GNULIB_MODULE_lchmod))
 
@@ -3030,313 +2617,6 @@ EXTRA_libgnu_a_SOURCES += malloc.c
 endif
 ## end   gnulib module malloc-posix
 
-## begin gnulib module math
-ifeq (,$(OMIT_GNULIB_MODULE_math))
-
-BUILT_SOURCES += math.h
-libgnu_a_SOURCES += math.c
-
-# We need the following in order to create <math.h> when the system
-# doesn't have one that works with the given compiler.
-math.h: math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) 
$(WARN_ON_USE_H)
-       $(gl_V_at)$(SED_HEADER_STDOUT) \
-             -e 's|@''GUARD_PREFIX''@|GL|g' \
-             -e 
's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \
-             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-             -e 
's|@''NEXT_AS_FIRST_DIRECTIVE_MATH_H''@|$(NEXT_AS_FIRST_DIRECTIVE_MATH_H)|g' \
-             -e 's/@''GNULIB_ACOSF''@/$(GL_GNULIB_ACOSF)/g' \
-             -e 's/@''GNULIB_ACOSL''@/$(GL_GNULIB_ACOSL)/g' \
-             -e 's/@''GNULIB_ASINF''@/$(GL_GNULIB_ASINF)/g' \
-             -e 's/@''GNULIB_ASINL''@/$(GL_GNULIB_ASINL)/g' \
-             -e 's/@''GNULIB_ATANF''@/$(GL_GNULIB_ATANF)/g' \
-             -e 's/@''GNULIB_ATANL''@/$(GL_GNULIB_ATANL)/g' \
-             -e 's/@''GNULIB_ATAN2F''@/$(GL_GNULIB_ATAN2F)/g' \
-             -e 's/@''GNULIB_CBRT''@/$(GL_GNULIB_CBRT)/g' \
-             -e 's/@''GNULIB_CBRTF''@/$(GL_GNULIB_CBRTF)/g' \
-             -e 's/@''GNULIB_CBRTL''@/$(GL_GNULIB_CBRTL)/g' \
-             -e 's/@''GNULIB_CEIL''@/$(GL_GNULIB_CEIL)/g' \
-             -e 's/@''GNULIB_CEILF''@/$(GL_GNULIB_CEILF)/g' \
-             -e 's/@''GNULIB_CEILL''@/$(GL_GNULIB_CEILL)/g' \
-             -e 's/@''GNULIB_COPYSIGN''@/$(GL_GNULIB_COPYSIGN)/g' \
-             -e 's/@''GNULIB_COPYSIGNF''@/$(GL_GNULIB_COPYSIGNF)/g' \
-             -e 's/@''GNULIB_COPYSIGNL''@/$(GL_GNULIB_COPYSIGNL)/g' \
-             -e 's/@''GNULIB_COSF''@/$(GL_GNULIB_COSF)/g' \
-             -e 's/@''GNULIB_COSL''@/$(GL_GNULIB_COSL)/g' \
-             -e 's/@''GNULIB_COSHF''@/$(GL_GNULIB_COSHF)/g' \
-             -e 's/@''GNULIB_EXPF''@/$(GL_GNULIB_EXPF)/g' \
-             -e 's/@''GNULIB_EXPL''@/$(GL_GNULIB_EXPL)/g' \
-             -e 's/@''GNULIB_EXP2''@/$(GL_GNULIB_EXP2)/g' \
-             -e 's/@''GNULIB_EXP2F''@/$(GL_GNULIB_EXP2F)/g' \
-             -e 's/@''GNULIB_EXP2L''@/$(GL_GNULIB_EXP2L)/g' \
-             -e 's/@''GNULIB_EXPM1''@/$(GL_GNULIB_EXPM1)/g' \
-             -e 's/@''GNULIB_EXPM1F''@/$(GL_GNULIB_EXPM1F)/g' \
-             -e 's/@''GNULIB_EXPM1L''@/$(GL_GNULIB_EXPM1L)/g' \
-             -e 's/@''GNULIB_FABSF''@/$(GL_GNULIB_FABSF)/g' \
-             -e 's/@''GNULIB_FABSL''@/$(GL_GNULIB_FABSL)/g' \
-             -e 's/@''GNULIB_FLOOR''@/$(GL_GNULIB_FLOOR)/g' \
-             -e 's/@''GNULIB_FLOORF''@/$(GL_GNULIB_FLOORF)/g' \
-             -e 's/@''GNULIB_FLOORL''@/$(GL_GNULIB_FLOORL)/g' \
-             -e 's/@''GNULIB_FMA''@/$(GL_GNULIB_FMA)/g' \
-             -e 's/@''GNULIB_FMAF''@/$(GL_GNULIB_FMAF)/g' \
-             -e 's/@''GNULIB_FMAL''@/$(GL_GNULIB_FMAL)/g' \
-             -e 's/@''GNULIB_FMOD''@/$(GL_GNULIB_FMOD)/g' \
-             -e 's/@''GNULIB_FMODF''@/$(GL_GNULIB_FMODF)/g' \
-             -e 's/@''GNULIB_FMODL''@/$(GL_GNULIB_FMODL)/g' \
-             -e 's/@''GNULIB_FREXPF''@/$(GL_GNULIB_FREXPF)/g' \
-             -e 's/@''GNULIB_FREXP''@/$(GL_GNULIB_FREXP)/g' \
-             -e 's/@''GNULIB_FREXPL''@/$(GL_GNULIB_FREXPL)/g' \
-             -e 's/@''GNULIB_HYPOT''@/$(GL_GNULIB_HYPOT)/g' \
-             -e 's/@''GNULIB_HYPOTF''@/$(GL_GNULIB_HYPOTF)/g' \
-             -e 's/@''GNULIB_HYPOTL''@/$(GL_GNULIB_HYPOTL)/g' \
-             < $(srcdir)/math.in.h | \
-         sed -e 's/@''GNULIB_ILOGB''@/$(GL_GNULIB_ILOGB)/g' \
-             -e 's/@''GNULIB_ILOGBF''@/$(GL_GNULIB_ILOGBF)/g' \
-             -e 's/@''GNULIB_ILOGBL''@/$(GL_GNULIB_ILOGBL)/g' \
-             -e 's/@''GNULIB_ISFINITE''@/$(GL_GNULIB_ISFINITE)/g' \
-             -e 's/@''GNULIB_ISINF''@/$(GL_GNULIB_ISINF)/g' \
-             -e 's/@''GNULIB_ISNAN''@/$(GL_GNULIB_ISNAN)/g' \
-             -e 's/@''GNULIB_ISNANF''@/$(GL_GNULIB_ISNANF)/g' \
-             -e 's/@''GNULIB_ISNAND''@/$(GL_GNULIB_ISNAND)/g' \
-             -e 's/@''GNULIB_ISNANL''@/$(GL_GNULIB_ISNANL)/g' \
-             -e 's/@''GNULIB_LDEXPF''@/$(GL_GNULIB_LDEXPF)/g' \
-             -e 's/@''GNULIB_LDEXPL''@/$(GL_GNULIB_LDEXPL)/g' \
-             -e 's/@''GNULIB_LOG''@/$(GL_GNULIB_LOG)/g' \
-             -e 's/@''GNULIB_LOGF''@/$(GL_GNULIB_LOGF)/g' \
-             -e 's/@''GNULIB_LOGL''@/$(GL_GNULIB_LOGL)/g' \
-             -e 's/@''GNULIB_LOG10''@/$(GL_GNULIB_LOG10)/g' \
-             -e 's/@''GNULIB_LOG10F''@/$(GL_GNULIB_LOG10F)/g' \
-             -e 's/@''GNULIB_LOG10L''@/$(GL_GNULIB_LOG10L)/g' \
-             -e 's/@''GNULIB_LOG1P''@/$(GL_GNULIB_LOG1P)/g' \
-             -e 's/@''GNULIB_LOG1PF''@/$(GL_GNULIB_LOG1PF)/g' \
-             -e 's/@''GNULIB_LOG1PL''@/$(GL_GNULIB_LOG1PL)/g' \
-             -e 's/@''GNULIB_LOG2''@/$(GL_GNULIB_LOG2)/g' \
-             -e 's/@''GNULIB_LOG2F''@/$(GL_GNULIB_LOG2F)/g' \
-             -e 's/@''GNULIB_LOG2L''@/$(GL_GNULIB_LOG2L)/g' \
-             -e 's/@''GNULIB_LOGB''@/$(GL_GNULIB_LOGB)/g' \
-             -e 's/@''GNULIB_LOGBF''@/$(GL_GNULIB_LOGBF)/g' \
-             -e 's/@''GNULIB_LOGBL''@/$(GL_GNULIB_LOGBL)/g' \
-             -e 's/@''GNULIB_MODF''@/$(GL_GNULIB_MODF)/g' \
-             -e 's/@''GNULIB_MODFF''@/$(GL_GNULIB_MODFF)/g' \
-             -e 's/@''GNULIB_MODFL''@/$(GL_GNULIB_MODFL)/g' \
-             -e 's/@''GNULIB_POWF''@/$(GL_GNULIB_POWF)/g' \
-             -e 's/@''GNULIB_REMAINDER''@/$(GL_GNULIB_REMAINDER)/g' \
-             -e 's/@''GNULIB_REMAINDERF''@/$(GL_GNULIB_REMAINDERF)/g' \
-             -e 's/@''GNULIB_REMAINDERL''@/$(GL_GNULIB_REMAINDERL)/g' \
-             -e 's/@''GNULIB_RINT''@/$(GL_GNULIB_RINT)/g' \
-             -e 's/@''GNULIB_RINTF''@/$(GL_GNULIB_RINTF)/g' \
-             -e 's/@''GNULIB_RINTL''@/$(GL_GNULIB_RINTL)/g' \
-             -e 's/@''GNULIB_ROUND''@/$(GL_GNULIB_ROUND)/g' \
-             -e 's/@''GNULIB_ROUNDF''@/$(GL_GNULIB_ROUNDF)/g' \
-             -e 's/@''GNULIB_ROUNDL''@/$(GL_GNULIB_ROUNDL)/g' \
-             -e 's/@''GNULIB_SIGNBIT''@/$(GL_GNULIB_SIGNBIT)/g' \
-             -e 's/@''GNULIB_SINF''@/$(GL_GNULIB_SINF)/g' \
-             -e 's/@''GNULIB_SINL''@/$(GL_GNULIB_SINL)/g' \
-             -e 's/@''GNULIB_SINHF''@/$(GL_GNULIB_SINHF)/g' \
-             -e 's/@''GNULIB_SQRTF''@/$(GL_GNULIB_SQRTF)/g' \
-             -e 's/@''GNULIB_SQRTL''@/$(GL_GNULIB_SQRTL)/g' \
-             -e 's/@''GNULIB_TANF''@/$(GL_GNULIB_TANF)/g' \
-             -e 's/@''GNULIB_TANL''@/$(GL_GNULIB_TANL)/g' \
-             -e 's/@''GNULIB_TANHF''@/$(GL_GNULIB_TANHF)/g' \
-             -e 's/@''GNULIB_TRUNC''@/$(GL_GNULIB_TRUNC)/g' \
-             -e 's/@''GNULIB_TRUNCF''@/$(GL_GNULIB_TRUNCF)/g' \
-             -e 's/@''GNULIB_TRUNCL''@/$(GL_GNULIB_TRUNCL)/g' \
-             -e 's/@''GNULIB_MDA_J0''@/$(GL_GNULIB_MDA_J0)/g' \
-             -e 's/@''GNULIB_MDA_J1''@/$(GL_GNULIB_MDA_J1)/g' \
-             -e 's/@''GNULIB_MDA_JN''@/$(GL_GNULIB_MDA_JN)/g' \
-             -e 's/@''GNULIB_MDA_Y0''@/$(GL_GNULIB_MDA_Y0)/g' \
-             -e 's/@''GNULIB_MDA_Y1''@/$(GL_GNULIB_MDA_Y1)/g' \
-             -e 's/@''GNULIB_MDA_YN''@/$(GL_GNULIB_MDA_YN)/g' \
-         | \
-         sed -e 's|@''HAVE_ACOSF''@|$(HAVE_ACOSF)|g' \
-             -e 's|@''HAVE_ACOSL''@|$(HAVE_ACOSL)|g' \
-             -e 's|@''HAVE_ASINF''@|$(HAVE_ASINF)|g' \
-             -e 's|@''HAVE_ASINL''@|$(HAVE_ASINL)|g' \
-             -e 's|@''HAVE_ATANF''@|$(HAVE_ATANF)|g' \
-             -e 's|@''HAVE_ATANL''@|$(HAVE_ATANL)|g' \
-             -e 's|@''HAVE_ATAN2F''@|$(HAVE_ATAN2F)|g' \
-             -e 's|@''HAVE_CBRT''@|$(HAVE_CBRT)|g' \
-             -e 's|@''HAVE_CBRTF''@|$(HAVE_CBRTF)|g' \
-             -e 's|@''HAVE_CBRTL''@|$(HAVE_CBRTL)|g' \
-             -e 's|@''HAVE_COPYSIGN''@|$(HAVE_COPYSIGN)|g' \
-             -e 's|@''HAVE_COPYSIGNL''@|$(HAVE_COPYSIGNL)|g' \
-             -e 's|@''HAVE_COSF''@|$(HAVE_COSF)|g' \
-             -e 's|@''HAVE_COSL''@|$(HAVE_COSL)|g' \
-             -e 's|@''HAVE_COSHF''@|$(HAVE_COSHF)|g' \
-             -e 's|@''HAVE_EXPF''@|$(HAVE_EXPF)|g' \
-             -e 's|@''HAVE_EXPL''@|$(HAVE_EXPL)|g' \
-             -e 's|@''HAVE_EXPM1''@|$(HAVE_EXPM1)|g' \
-             -e 's|@''HAVE_EXPM1F''@|$(HAVE_EXPM1F)|g' \
-             -e 's|@''HAVE_FABSF''@|$(HAVE_FABSF)|g' \
-             -e 's|@''HAVE_FABSL''@|$(HAVE_FABSL)|g' \
-             -e 's|@''HAVE_FMA''@|$(HAVE_FMA)|g' \
-             -e 's|@''HAVE_FMAF''@|$(HAVE_FMAF)|g' \
-             -e 's|@''HAVE_FMAL''@|$(HAVE_FMAL)|g' \
-             -e 's|@''HAVE_FMODF''@|$(HAVE_FMODF)|g' \
-             -e 's|@''HAVE_FMODL''@|$(HAVE_FMODL)|g' \
-             -e 's|@''HAVE_FREXPF''@|$(HAVE_FREXPF)|g' \
-             -e 's|@''HAVE_HYPOTF''@|$(HAVE_HYPOTF)|g' \
-             -e 's|@''HAVE_HYPOTL''@|$(HAVE_HYPOTL)|g' \
-             -e 's|@''HAVE_ILOGB''@|$(HAVE_ILOGB)|g' \
-             -e 's|@''HAVE_ILOGBF''@|$(HAVE_ILOGBF)|g' \
-             -e 's|@''HAVE_ILOGBL''@|$(HAVE_ILOGBL)|g' \
-             -e 's|@''HAVE_ISNANF''@|$(HAVE_ISNANF)|g' \
-             -e 's|@''HAVE_ISNAND''@|$(HAVE_ISNAND)|g' \
-             -e 's|@''HAVE_ISNANL''@|$(HAVE_ISNANL)|g' \
-             -e 's|@''HAVE_LDEXPF''@|$(HAVE_LDEXPF)|g' \
-             -e 's|@''HAVE_LOGF''@|$(HAVE_LOGF)|g' \
-             -e 's|@''HAVE_LOGL''@|$(HAVE_LOGL)|g' \
-             -e 's|@''HAVE_LOG10F''@|$(HAVE_LOG10F)|g' \
-             -e 's|@''HAVE_LOG10L''@|$(HAVE_LOG10L)|g' \
-             -e 's|@''HAVE_LOG1P''@|$(HAVE_LOG1P)|g' \
-             -e 's|@''HAVE_LOG1PF''@|$(HAVE_LOG1PF)|g' \
-             -e 's|@''HAVE_LOG1PL''@|$(HAVE_LOG1PL)|g' \
-             -e 's|@''HAVE_LOGBF''@|$(HAVE_LOGBF)|g' \
-             -e 's|@''HAVE_LOGBL''@|$(HAVE_LOGBL)|g' \
-             -e 's|@''HAVE_MODFF''@|$(HAVE_MODFF)|g' \
-             -e 's|@''HAVE_MODFL''@|$(HAVE_MODFL)|g' \
-             -e 's|@''HAVE_POWF''@|$(HAVE_POWF)|g' \
-             -e 's|@''HAVE_REMAINDER''@|$(HAVE_REMAINDER)|g' \
-             -e 's|@''HAVE_REMAINDERF''@|$(HAVE_REMAINDERF)|g' \
-             -e 's|@''HAVE_RINT''@|$(HAVE_RINT)|g' \
-             -e 's|@''HAVE_RINTL''@|$(HAVE_RINTL)|g' \
-             -e 's|@''HAVE_SINF''@|$(HAVE_SINF)|g' \
-             -e 's|@''HAVE_SINL''@|$(HAVE_SINL)|g' \
-             -e 's|@''HAVE_SINHF''@|$(HAVE_SINHF)|g' \
-             -e 's|@''HAVE_SQRTF''@|$(HAVE_SQRTF)|g' \
-             -e 's|@''HAVE_SQRTL''@|$(HAVE_SQRTL)|g' \
-             -e 's|@''HAVE_TANF''@|$(HAVE_TANF)|g' \
-             -e 's|@''HAVE_TANL''@|$(HAVE_TANL)|g' \
-             -e 's|@''HAVE_TANHF''@|$(HAVE_TANHF)|g' \
-             -e 's|@''HAVE_DECL_ACOSL''@|$(HAVE_DECL_ACOSL)|g' \
-             -e 's|@''HAVE_DECL_ASINL''@|$(HAVE_DECL_ASINL)|g' \
-             -e 's|@''HAVE_DECL_ATANL''@|$(HAVE_DECL_ATANL)|g' \
-             -e 's|@''HAVE_DECL_CBRTF''@|$(HAVE_DECL_CBRTF)|g' \
-             -e 's|@''HAVE_DECL_CBRTL''@|$(HAVE_DECL_CBRTL)|g' \
-             -e 's|@''HAVE_DECL_CEILF''@|$(HAVE_DECL_CEILF)|g' \
-             -e 's|@''HAVE_DECL_CEILL''@|$(HAVE_DECL_CEILL)|g' \
-             -e 's|@''HAVE_DECL_COPYSIGNF''@|$(HAVE_DECL_COPYSIGNF)|g' \
-             -e 's|@''HAVE_DECL_COSL''@|$(HAVE_DECL_COSL)|g' \
-             -e 's|@''HAVE_DECL_EXPL''@|$(HAVE_DECL_EXPL)|g' \
-             -e 's|@''HAVE_DECL_EXP2''@|$(HAVE_DECL_EXP2)|g' \
-             -e 's|@''HAVE_DECL_EXP2F''@|$(HAVE_DECL_EXP2F)|g' \
-             -e 's|@''HAVE_DECL_EXP2L''@|$(HAVE_DECL_EXP2L)|g' \
-             -e 's|@''HAVE_DECL_EXPM1L''@|$(HAVE_DECL_EXPM1L)|g' \
-             -e 's|@''HAVE_DECL_FLOORF''@|$(HAVE_DECL_FLOORF)|g' \
-             -e 's|@''HAVE_DECL_FLOORL''@|$(HAVE_DECL_FLOORL)|g' \
-             -e 's|@''HAVE_DECL_FREXPL''@|$(HAVE_DECL_FREXPL)|g' \
-             -e 's|@''HAVE_DECL_LDEXPL''@|$(HAVE_DECL_LDEXPL)|g' \
-             -e 's|@''HAVE_DECL_LOGL''@|$(HAVE_DECL_LOGL)|g' \
-             -e 's|@''HAVE_DECL_LOG10L''@|$(HAVE_DECL_LOG10L)|g' \
-             -e 's|@''HAVE_DECL_LOG2''@|$(HAVE_DECL_LOG2)|g' \
-             -e 's|@''HAVE_DECL_LOG2F''@|$(HAVE_DECL_LOG2F)|g' \
-             -e 's|@''HAVE_DECL_LOG2L''@|$(HAVE_DECL_LOG2L)|g' \
-             -e 's|@''HAVE_DECL_LOGB''@|$(HAVE_DECL_LOGB)|g' \
-             -e 's|@''HAVE_DECL_REMAINDER''@|$(HAVE_DECL_REMAINDER)|g' \
-             -e 's|@''HAVE_DECL_REMAINDERL''@|$(HAVE_DECL_REMAINDERL)|g' \
-             -e 's|@''HAVE_DECL_RINTF''@|$(HAVE_DECL_RINTF)|g' \
-             -e 's|@''HAVE_DECL_ROUND''@|$(HAVE_DECL_ROUND)|g' \
-             -e 's|@''HAVE_DECL_ROUNDF''@|$(HAVE_DECL_ROUNDF)|g' \
-             -e 's|@''HAVE_DECL_ROUNDL''@|$(HAVE_DECL_ROUNDL)|g' \
-             -e 's|@''HAVE_DECL_SINL''@|$(HAVE_DECL_SINL)|g' \
-             -e 's|@''HAVE_DECL_SQRTL''@|$(HAVE_DECL_SQRTL)|g' \
-             -e 's|@''HAVE_DECL_TANL''@|$(HAVE_DECL_TANL)|g' \
-             -e 's|@''HAVE_DECL_TRUNC''@|$(HAVE_DECL_TRUNC)|g' \
-             -e 's|@''HAVE_DECL_TRUNCF''@|$(HAVE_DECL_TRUNCF)|g' \
-             -e 's|@''HAVE_DECL_TRUNCL''@|$(HAVE_DECL_TRUNCL)|g' \
-         | \
-         sed -e 's|@''REPLACE_ACOSF''@|$(REPLACE_ACOSF)|g' \
-             -e 's|@''REPLACE_ASINF''@|$(REPLACE_ASINF)|g' \
-             -e 's|@''REPLACE_ATANF''@|$(REPLACE_ATANF)|g' \
-             -e 's|@''REPLACE_ATAN2F''@|$(REPLACE_ATAN2F)|g' \
-             -e 's|@''REPLACE_CBRTF''@|$(REPLACE_CBRTF)|g' \
-             -e 's|@''REPLACE_CBRTL''@|$(REPLACE_CBRTL)|g' \
-             -e 's|@''REPLACE_CEIL''@|$(REPLACE_CEIL)|g' \
-             -e 's|@''REPLACE_CEILF''@|$(REPLACE_CEILF)|g' \
-             -e 's|@''REPLACE_CEILL''@|$(REPLACE_CEILL)|g' \
-             -e 's|@''REPLACE_COSF''@|$(REPLACE_COSF)|g' \
-             -e 's|@''REPLACE_COSHF''@|$(REPLACE_COSHF)|g' \
-             -e 's|@''REPLACE_EXPF''@|$(REPLACE_EXPF)|g' \
-             -e 's|@''REPLACE_EXPL''@|$(REPLACE_EXPL)|g' \
-             -e 's|@''REPLACE_EXPM1''@|$(REPLACE_EXPM1)|g' \
-             -e 's|@''REPLACE_EXPM1F''@|$(REPLACE_EXPM1F)|g' \
-             -e 's|@''REPLACE_EXPM1L''@|$(REPLACE_EXPM1L)|g' \
-             -e 's|@''REPLACE_EXP2''@|$(REPLACE_EXP2)|g' \
-             -e 's|@''REPLACE_EXP2L''@|$(REPLACE_EXP2L)|g' \
-             -e 's|@''REPLACE_FABSL''@|$(REPLACE_FABSL)|g' \
-             -e 's|@''REPLACE_FLOOR''@|$(REPLACE_FLOOR)|g' \
-             -e 's|@''REPLACE_FLOORF''@|$(REPLACE_FLOORF)|g' \
-             -e 's|@''REPLACE_FLOORL''@|$(REPLACE_FLOORL)|g' \
-             -e 's|@''REPLACE_FMA''@|$(REPLACE_FMA)|g' \
-             -e 's|@''REPLACE_FMAF''@|$(REPLACE_FMAF)|g' \
-             -e 's|@''REPLACE_FMAL''@|$(REPLACE_FMAL)|g' \
-             -e 's|@''REPLACE_FMOD''@|$(REPLACE_FMOD)|g' \
-             -e 's|@''REPLACE_FMODF''@|$(REPLACE_FMODF)|g' \
-             -e 's|@''REPLACE_FMODL''@|$(REPLACE_FMODL)|g' \
-             -e 's|@''REPLACE_FREXPF''@|$(REPLACE_FREXPF)|g' \
-             -e 's|@''REPLACE_FREXP''@|$(REPLACE_FREXP)|g' \
-             -e 's|@''REPLACE_FREXPL''@|$(REPLACE_FREXPL)|g' \
-             -e 's|@''REPLACE_HUGE_VAL''@|$(REPLACE_HUGE_VAL)|g' \
-             -e 's|@''REPLACE_HYPOT''@|$(REPLACE_HYPOT)|g' \
-             -e 's|@''REPLACE_HYPOTF''@|$(REPLACE_HYPOTF)|g' \
-             -e 's|@''REPLACE_HYPOTL''@|$(REPLACE_HYPOTL)|g' \
-             -e 's|@''REPLACE_ILOGB''@|$(REPLACE_ILOGB)|g' \
-             -e 's|@''REPLACE_ILOGBF''@|$(REPLACE_ILOGBF)|g' \
-             -e 's|@''REPLACE_ILOGBL''@|$(REPLACE_ILOGBL)|g' \
-             -e 's|@''REPLACE_ISFINITE''@|$(REPLACE_ISFINITE)|g' \
-             -e 's|@''REPLACE_ISINF''@|$(REPLACE_ISINF)|g' \
-             -e 's|@''REPLACE_ISNAN''@|$(REPLACE_ISNAN)|g' \
-             -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \
-             -e 's|@''REPLACE_LDEXPL''@|$(REPLACE_LDEXPL)|g' \
-             -e 's|@''REPLACE_LOG''@|$(REPLACE_LOG)|g' \
-             -e 's|@''REPLACE_LOGF''@|$(REPLACE_LOGF)|g' \
-             -e 's|@''REPLACE_LOGL''@|$(REPLACE_LOGL)|g' \
-             -e 's|@''REPLACE_LOG10''@|$(REPLACE_LOG10)|g' \
-             -e 's|@''REPLACE_LOG10F''@|$(REPLACE_LOG10F)|g' \
-             -e 's|@''REPLACE_LOG10L''@|$(REPLACE_LOG10L)|g' \
-             -e 's|@''REPLACE_LOG1P''@|$(REPLACE_LOG1P)|g' \
-             -e 's|@''REPLACE_LOG1PF''@|$(REPLACE_LOG1PF)|g' \
-             -e 's|@''REPLACE_LOG1PL''@|$(REPLACE_LOG1PL)|g' \
-             -e 's|@''REPLACE_LOG2''@|$(REPLACE_LOG2)|g' \
-             -e 's|@''REPLACE_LOG2F''@|$(REPLACE_LOG2F)|g' \
-             -e 's|@''REPLACE_LOG2L''@|$(REPLACE_LOG2L)|g' \
-             -e 's|@''REPLACE_LOGB''@|$(REPLACE_LOGB)|g' \
-             -e 's|@''REPLACE_LOGBF''@|$(REPLACE_LOGBF)|g' \
-             -e 's|@''REPLACE_LOGBL''@|$(REPLACE_LOGBL)|g' \
-             -e 's|@''REPLACE_MODF''@|$(REPLACE_MODF)|g' \
-             -e 's|@''REPLACE_MODFF''@|$(REPLACE_MODFF)|g' \
-             -e 's|@''REPLACE_MODFL''@|$(REPLACE_MODFL)|g' \
-             -e 's|@''REPLACE_NAN''@|$(REPLACE_NAN)|g' \
-             -e 's|@''REPLACE_REMAINDER''@|$(REPLACE_REMAINDER)|g' \
-             -e 's|@''REPLACE_REMAINDERF''@|$(REPLACE_REMAINDERF)|g' \
-             -e 's|@''REPLACE_REMAINDERL''@|$(REPLACE_REMAINDERL)|g' \
-             -e 's|@''REPLACE_RINTL''@|$(REPLACE_RINTL)|g' \
-             -e 's|@''REPLACE_ROUND''@|$(REPLACE_ROUND)|g' \
-             -e 's|@''REPLACE_ROUNDF''@|$(REPLACE_ROUNDF)|g' \
-             -e 's|@''REPLACE_ROUNDL''@|$(REPLACE_ROUNDL)|g' \
-             -e 's|@''REPLACE_SIGNBIT''@|$(REPLACE_SIGNBIT)|g' \
-             -e 
's|@''REPLACE_SIGNBIT_USING_BUILTINS''@|$(REPLACE_SIGNBIT_USING_BUILTINS)|g' \
-             -e 's|@''REPLACE_SINF''@|$(REPLACE_SINF)|g' \
-             -e 's|@''REPLACE_SINHF''@|$(REPLACE_SINHF)|g' \
-             -e 's|@''REPLACE_SQRTF''@|$(REPLACE_SQRTF)|g' \
-             -e 's|@''REPLACE_SQRTL''@|$(REPLACE_SQRTL)|g' \
-             -e 's|@''REPLACE_TANF''@|$(REPLACE_TANF)|g' \
-             -e 's|@''REPLACE_TANHF''@|$(REPLACE_TANHF)|g' \
-             -e 's|@''REPLACE_TRUNC''@|$(REPLACE_TRUNC)|g' \
-             -e 's|@''REPLACE_TRUNCF''@|$(REPLACE_TRUNCF)|g' \
-             -e 's|@''REPLACE_TRUNCL''@|$(REPLACE_TRUNCL)|g' \
-             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
-             > $@-t
-       $(AM_V_at)mv $@-t $@
-MOSTLYCLEANFILES += math.h math.h-t
-
-EXTRA_DIST += math.in.h
-
-endif
-## end   gnulib module math
-
 ## begin gnulib module memmem-simple
 ifeq (,$(OMIT_GNULIB_MODULE_memmem-simple))
 
@@ -3490,39 +2770,6 @@ libgnu_a_SOURCES += pipe2.c
 endif
 ## end   gnulib module pipe2
 
-## begin gnulib module printf-frexp
-ifeq (,$(OMIT_GNULIB_MODULE_printf-frexp))
-
-libgnu_a_SOURCES += printf-frexp.c
-
-EXTRA_DIST += printf-frexp.h
-
-endif
-## end   gnulib module printf-frexp
-
-## begin gnulib module printf-frexpl
-ifeq (,$(OMIT_GNULIB_MODULE_printf-frexpl))
-
-libgnu_a_SOURCES += printf-frexpl.c
-
-EXTRA_DIST += printf-frexp.c printf-frexpl.h
-
-EXTRA_libgnu_a_SOURCES += printf-frexp.c
-
-endif
-## end   gnulib module printf-frexpl
-
-## begin gnulib module printf-posix
-ifeq (,$(OMIT_GNULIB_MODULE_printf-posix))
-
-
-EXTRA_DIST += printf.c
-
-EXTRA_libgnu_a_SOURCES += printf.c
-
-endif
-## end   gnulib module printf-posix
-
 ## begin gnulib module pselect
 ifeq (,$(OMIT_GNULIB_MODULE_pselect))
 
@@ -3704,28 +2951,6 @@ EXTRA_DIST += signal.in.h
 endif
 ## end   gnulib module signal-h
 
-## begin gnulib module signbit
-ifeq (,$(OMIT_GNULIB_MODULE_signbit))
-
-ifneq (,$(GL_COND_OBJ_SIGNBIT3_CONDITION))
-libgnu_a_SOURCES += signbitf.c signbitd.c signbitl.c
-endif
-
-EXTRA_DIST += float+.h
-
-endif
-## end   gnulib module signbit
-
-## begin gnulib module size_max
-ifeq (,$(OMIT_GNULIB_MODULE_size_max))
-
-ifneq (,$(gl_GNULIB_ENABLED_size_max_CONDITION))
-libgnu_a_SOURCES += size_max.h
-
-endif
-endif
-## end   gnulib module size_max
-
 ## begin gnulib module snippet/_Noreturn
 ifeq (,$(OMIT_GNULIB_MODULE_snippet/_Noreturn))
 
@@ -3970,8 +3195,9 @@ stdio.h: stdio.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) $(ARG_NONNULL_H)
              -e 's/@''GNULIB_MDA_GETW''@/$(GL_GNULIB_MDA_GETW)/g' \
              -e 's/@''GNULIB_MDA_PUTW''@/$(GL_GNULIB_MDA_PUTW)/g' \
              -e 's/@''GNULIB_MDA_TEMPNAM''@/$(GL_GNULIB_MDA_TEMPNAM)/g' \
-             < $(srcdir)/stdio.in.h | \
-         sed -e 's|@''HAVE_DECL_FCLOSEALL''@|$(HAVE_DECL_FCLOSEALL)|g' \
+             < $(srcdir)/stdio.in.h > $@-t1
+       $(AM_V_at)sed \
+             -e 's|@''HAVE_DECL_FCLOSEALL''@|$(HAVE_DECL_FCLOSEALL)|g' \
              -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
              -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \
              -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \
@@ -3990,6 +3216,8 @@ stdio.h: stdio.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) $(ARG_NONNULL_H)
              -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
              -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
              -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
+             < $@-t1 > $@-t2
+       $(AM_V_at)sed \
              -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
              -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
              -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \
@@ -4027,9 +3255,10 @@ stdio.h: stdio.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) $(ARG_NONNULL_H)
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
              -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
              -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
-             > $@-t
-       $(AM_V_at)mv $@-t $@
-MOSTLYCLEANFILES += stdio.h stdio.h-t
+             < $@-t2 > $@-t3
+       $(AM_V_at)rm -f $@-t1 $@-t2
+       $(AM_V_at)mv $@-t3 $@
+MOSTLYCLEANFILES += stdio.h stdio.h-t1 stdio.h-t2 stdio.h-t3
 
 ifneq (,$(GL_COND_OBJ_STDIO_READ_CONDITION))
 libgnu_a_SOURCES += stdio-read.c
@@ -4108,8 +3337,9 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) \
              -e 's/@''GNULIB_MDA_GCVT''@/$(GL_GNULIB_MDA_GCVT)/g' \
              -e 's/@''GNULIB_MDA_MKTEMP''@/$(GL_GNULIB_MDA_MKTEMP)/g' \
              -e 's/@''GNULIB_MDA_PUTENV''@/$(GL_GNULIB_MDA_PUTENV)/g' \
-             < $(srcdir)/stdlib.in.h | \
-         sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
+             < $(srcdir)/stdlib.in.h > $@-t1
+       $(AM_V_at)sed \
+             -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
              -e 's|@''HAVE_ALIGNED_ALLOC''@|$(HAVE_ALIGNED_ALLOC)|g' \
              -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
              -e 
's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \
@@ -4154,6 +3384,8 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) \
              -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
              -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \
              -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \
+             < $@-t1 > $@-t2
+       $(AM_V_at)sed \
              -e 's|@''REPLACE__EXIT''@|$(REPLACE__EXIT)|g' \
              -e 's|@''REPLACE_ALIGNED_ALLOC''@|$(REPLACE_ALIGNED_ALLOC)|g' \
              -e 
's|@''REPLACE_CALLOC_FOR_CALLOC_GNU''@|$(REPLACE_CALLOC_FOR_CALLOC_GNU)|g' \
@@ -4198,9 +3430,10 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) \
              -e '/definition of _Noreturn/r $(_NORETURN_H)' \
              -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
              -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
-             > $@-t
-       $(AM_V_at)mv $@-t $@
-MOSTLYCLEANFILES += stdlib.h stdlib.h-t
+             < $@-t2 > $@-t3
+       $(AM_V_at)rm -f $@-t1 $@-t2
+       $(AM_V_at)mv $@-t3 $@
+MOSTLYCLEANFILES += stdlib.h stdlib.h-t1 stdlib.h-t2 stdlib.h-t3
 
 EXTRA_DIST += stdlib.in.h
 
@@ -4286,8 +3519,9 @@ string.h: string.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) $(ARG_NONNULL_H
              -e 's/@''GNULIB_MDA_MEMCCPY''@/$(GL_GNULIB_MDA_MEMCCPY)/g' \
              -e 's/@''GNULIB_MDA_STRDUP''@/$(GL_GNULIB_MDA_STRDUP)/g' \
              -e 's/@''GNULIB_FREE_POSIX''@/$(GL_GNULIB_FREE_POSIX)/g' \
-             < $(srcdir)/string.in.h | \
-         sed -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \
+             < $(srcdir)/string.in.h > $@-t1
+       $(AM_V_at)sed \
+             -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \
              -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \
              -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \
              -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
@@ -4335,9 +3569,10 @@ string.h: string.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) $(ARG_NONNULL_H
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
              -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
              -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
-             > $@-t
-       $(AM_V_at)mv $@-t $@
-MOSTLYCLEANFILES += string.h string.h-t
+             < $@-t1 > $@-t2
+       $(AM_V_at)rm -f $@-t1
+       $(AM_V_at)mv $@-t2 $@
+MOSTLYCLEANFILES += string.h string.h-t1 string.h-t2
 
 EXTRA_DIST += string.in.h
 
@@ -4774,6 +4009,8 @@ unistd.h: unistd.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) $(ARG_NONNULL_H
              -e 's/@''GNULIB_FDATASYNC''@/$(GL_GNULIB_FDATASYNC)/g' \
              -e 's/@''GNULIB_FSYNC''@/$(GL_GNULIB_FSYNC)/g' \
              -e 's/@''GNULIB_FTRUNCATE''@/$(GL_GNULIB_FTRUNCATE)/g' \
+             < $(srcdir)/unistd.in.h > $@-t1
+       $(AM_V_at)sed \
              -e 's/@''GNULIB_GETCWD''@/$(GL_GNULIB_GETCWD)/g' \
              -e 's/@''GNULIB_GETDOMAINNAME''@/$(GL_GNULIB_GETDOMAINNAME)/g' \
              -e 's/@''GNULIB_GETDTABLESIZE''@/$(GL_GNULIB_GETDTABLESIZE)/g' \
@@ -4835,8 +4072,9 @@ unistd.h: unistd.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) $(ARG_NONNULL_H
              -e 's/@''GNULIB_MDA_SWAB''@/$(GL_GNULIB_MDA_SWAB)/g' \
              -e 's/@''GNULIB_MDA_UNLINK''@/$(GL_GNULIB_MDA_UNLINK)/g' \
              -e 's/@''GNULIB_MDA_WRITE''@/$(GL_GNULIB_MDA_WRITE)/g' \
-             < $(srcdir)/unistd.in.h | \
-         sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
+             < $@-t1 > $@-t2
+       $(AM_V_at)sed \
+             -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
              -e 's|@''HAVE_COPY_FILE_RANGE''@|$(HAVE_COPY_FILE_RANGE)|g' \
              -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
              -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
@@ -4883,8 +4121,9 @@ unistd.h: unistd.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) $(ARG_NONNULL_H
              -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \
              -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
              -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
-         | \
-         sed -e 's|@''REPLACE_ACCESS''@|$(REPLACE_ACCESS)|g' \
+             < $@-t2 > $@-t3
+       $(AM_V_at)sed \
+             -e 's|@''REPLACE_ACCESS''@|$(REPLACE_ACCESS)|g' \
              -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
              -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
              -e 's|@''REPLACE_COPY_FILE_RANGE''@|$(REPLACE_COPY_FILE_RANGE)|g' 
\
@@ -4939,9 +4178,10 @@ unistd.h: unistd.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) $(ARG_NONNULL_H
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
              -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
              -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
-             > $@-t
-       $(AM_V_at)mv $@-t $@
-MOSTLYCLEANFILES += unistd.h unistd.h-t
+             < $@-t3 > $@-t4
+       $(AM_V_at)rm -f $@-t1 $@-t2 $@-t3
+       $(AM_V_at)mv $@-t4 $@
+MOSTLYCLEANFILES += unistd.h unistd.h-t1 unistd.h-t2 unistd.h-t3 unistd.h-t4
 
 EXTRA_DIST += unistd.in.h
 
@@ -4992,30 +4232,6 @@ EXTRA_libgnu_a_SOURCES += at-func.c
 endif
 ## end   gnulib module utimensat
 
-## begin gnulib module vasnprintf
-ifeq (,$(OMIT_GNULIB_MODULE_vasnprintf))
-
-ifneq (,$(gl_GNULIB_ENABLED_vasnprintf_CONDITION))
-
-endif
-EXTRA_DIST += asnprintf.c float+.h printf-args.c printf-args.h printf-parse.c 
printf-parse.h vasnprintf.c vasnprintf.h
-
-EXTRA_libgnu_a_SOURCES += asnprintf.c printf-args.c printf-parse.c vasnprintf.c
-
-endif
-## end   gnulib module vasnprintf
-
-## begin gnulib module vasprintf
-ifeq (,$(OMIT_GNULIB_MODULE_vasprintf))
-
-
-EXTRA_DIST += asprintf.c vasprintf.c
-
-EXTRA_libgnu_a_SOURCES += asprintf.c vasprintf.c
-
-endif
-## end   gnulib module vasprintf
-
 ## begin gnulib module verify
 ifeq (,$(OMIT_GNULIB_MODULE_verify))
 
@@ -5025,19 +4241,6 @@ EXTRA_DIST += verify.h
 endif
 ## end   gnulib module verify
 
-## begin gnulib module vfprintf-posix
-ifeq (,$(OMIT_GNULIB_MODULE_vfprintf-posix))
-
-ifneq (,$(gl_GNULIB_ENABLED_ed5616be3593d355b981ffab56b9f37b_CONDITION))
-
-endif
-EXTRA_DIST += vfprintf.c
-
-EXTRA_libgnu_a_SOURCES += vfprintf.c
-
-endif
-## end   gnulib module vfprintf-posix
-
 ## begin gnulib module vla
 ifeq (,$(OMIT_GNULIB_MODULE_vla))
 
@@ -5058,16 +4261,6 @@ EXTRA_DIST += xalloc-oversized.h
 endif
 ## end   gnulib module xalloc-oversized
 
-## begin gnulib module xsize
-ifeq (,$(OMIT_GNULIB_MODULE_xsize))
-
-ifneq (,$(gl_GNULIB_ENABLED_xsize_CONDITION))
-libgnu_a_SOURCES += xsize.h xsize.c
-
-endif
-endif
-## end   gnulib module xsize
-
 
 mostlyclean-local: mostlyclean-generic
        @for dir in '' $(MOSTLYCLEANDIRS); do \
diff --git a/lib/isnan.c b/lib/isnan.c
deleted file mode 100644
index 39e193b9606..00000000000
--- a/lib/isnan.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/* Test for NaN that does not need libm.
-   Copyright (C) 2007-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
-
-#include <config.h>
-
-/* Specification.  */
-#ifdef USE_LONG_DOUBLE
-/* Specification found in math.h or isnanl-nolibm.h.  */
-extern int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST;
-#elif ! defined USE_FLOAT
-/* Specification found in math.h or isnand-nolibm.h.  */
-extern int rpl_isnand (double x);
-#else /* defined USE_FLOAT */
-/* Specification found in math.h or isnanf-nolibm.h.  */
-extern int rpl_isnanf (float x);
-#endif
-
-#include <float.h>
-#include <string.h>
-
-#include "float+.h"
-
-#ifdef USE_LONG_DOUBLE
-# define FUNC rpl_isnanl
-# define DOUBLE long double
-# define MAX_EXP LDBL_MAX_EXP
-# define MIN_EXP LDBL_MIN_EXP
-# if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT
-#  define KNOWN_EXPBIT0_LOCATION
-#  define EXPBIT0_WORD LDBL_EXPBIT0_WORD
-#  define EXPBIT0_BIT LDBL_EXPBIT0_BIT
-# endif
-# define SIZE SIZEOF_LDBL
-# define L_(literal) literal##L
-#elif ! defined USE_FLOAT
-# define FUNC rpl_isnand
-# define DOUBLE double
-# define MAX_EXP DBL_MAX_EXP
-# define MIN_EXP DBL_MIN_EXP
-# if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
-#  define KNOWN_EXPBIT0_LOCATION
-#  define EXPBIT0_WORD DBL_EXPBIT0_WORD
-#  define EXPBIT0_BIT DBL_EXPBIT0_BIT
-# endif
-# define SIZE SIZEOF_DBL
-# define L_(literal) literal
-#else /* defined USE_FLOAT */
-# define FUNC rpl_isnanf
-# define DOUBLE float
-# define MAX_EXP FLT_MAX_EXP
-# define MIN_EXP FLT_MIN_EXP
-# if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
-#  define KNOWN_EXPBIT0_LOCATION
-#  define EXPBIT0_WORD FLT_EXPBIT0_WORD
-#  define EXPBIT0_BIT FLT_EXPBIT0_BIT
-# endif
-# define SIZE SIZEOF_FLT
-# define L_(literal) literal##f
-#endif
-
-#define EXP_MASK ((MAX_EXP - MIN_EXP) | 7)
-
-#define NWORDS \
-  ((sizeof (DOUBLE) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-typedef union { DOUBLE value; unsigned int word[NWORDS]; } memory_double;
-
-/* Most hosts nowadays use IEEE floating point, so they use IEC 60559
-   representations, have infinities and NaNs, and do not trap on
-   exceptions.  Define IEEE_FLOATING_POINT if this host is one of the
-   typical ones.  The C23 macro __STDC_IEC_60559_BFP__ macro (or its cousin,
-   the now-obsolescent C11 macro __STDC_IEC_559__) is close to what is
-   wanted here, but is not quite right because this file does not require
-   all the features of C23 Annex F (and works even with pre-C11 platforms,
-   for that matter).  */
-
-#define IEEE_FLOATING_POINT (FLT_RADIX == 2 && FLT_MANT_DIG == 24 \
-                             && FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128)
-
-int
-FUNC (DOUBLE x)
-{
-#if defined KNOWN_EXPBIT0_LOCATION && IEEE_FLOATING_POINT
-# if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || 
(defined __x86_64__ || defined __amd64__) || (defined __i386 || defined 
__i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && 
!HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
-  /* Special CPU dependent code is needed to treat bit patterns outside the
-     IEEE 754 specification (such as Pseudo-NaNs, Pseudo-Infinities,
-     Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals) as NaNs.
-     These bit patterns are:
-       - exponent = 0x0001..0x7FFF, mantissa bit 63 = 0,
-       - exponent = 0x0000, mantissa bit 63 = 1.
-     The NaN bit pattern is:
-       - exponent = 0x7FFF, mantissa >= 0x8000000000000001.  */
-  memory_double m;
-  unsigned int exponent;
-
-  m.value = x;
-  exponent = (m.word[EXPBIT0_WORD] >> EXPBIT0_BIT) & EXP_MASK;
-#  ifdef WORDS_BIGENDIAN
-  /* Big endian: EXPBIT0_WORD = 0, EXPBIT0_BIT = 16.  */
-  if (exponent == 0)
-    return 1 & (m.word[0] >> 15);
-  else if (exponent == EXP_MASK)
-    return (((m.word[0] ^ 0x8000U) << 16) | m.word[1] | (m.word[2] >> 16)) != 
0;
-  else
-    return 1 & ~(m.word[0] >> 15);
-#  else
-  /* Little endian: EXPBIT0_WORD = 2, EXPBIT0_BIT = 0.  */
-  if (exponent == 0)
-    return (m.word[1] >> 31);
-  else if (exponent == EXP_MASK)
-    return ((m.word[1] ^ 0x80000000U) | m.word[0]) != 0;
-  else
-    return (m.word[1] >> 31) ^ 1;
-#  endif
-# else
-  /* Be careful to not do any floating-point operation on x, such as x == x,
-     because x may be a signaling NaN.  */
-#  if defined __SUNPRO_C || defined __ICC || defined _MSC_VER \
-      || defined __DECC || defined __TINYC__ \
-      || (defined __sgi && !defined __GNUC__)
-  /* The Sun C 5.0, Intel ICC 10.0, Microsoft Visual C/C++ 9.0, Compaq (ex-DEC)
-     6.4, and TinyCC compilers don't recognize the initializers as constant
-     expressions.  The Compaq compiler also fails when constant-folding
-     0.0 / 0.0 even when constant-folding is not required.  The Microsoft
-     Visual C/C++ compiler also fails when constant-folding 1.0 / 0.0 even
-     when constant-folding is not required. The SGI MIPSpro C compiler
-     complains about "floating-point operation result is out of range".  */
-  static DOUBLE zero = L_(0.0);
-  memory_double nan;
-  DOUBLE plus_inf = L_(1.0) / zero;
-  DOUBLE minus_inf = -L_(1.0) / zero;
-  nan.value = zero / zero;
-#  else
-  static memory_double nan = { L_(0.0) / L_(0.0) };
-  static DOUBLE plus_inf = L_(1.0) / L_(0.0);
-  static DOUBLE minus_inf = -L_(1.0) / L_(0.0);
-#  endif
-  {
-    memory_double m;
-
-    /* A NaN can be recognized through its exponent.  But exclude +Infinity and
-       -Infinity, which have the same exponent.  */
-    m.value = x;
-    if (((m.word[EXPBIT0_WORD] ^ nan.word[EXPBIT0_WORD])
-         & (EXP_MASK << EXPBIT0_BIT))
-        == 0)
-      return (memcmp (&m.value, &plus_inf, SIZE) != 0
-              && memcmp (&m.value, &minus_inf, SIZE) != 0);
-    else
-      return 0;
-  }
-# endif
-#else
-  /* The configuration did not find sufficient information, or does
-     not use IEEE floating point.  Give up about the signaling NaNs;
-     handle only the quiet NaNs.  */
-  if (x == x)
-    {
-# if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || 
(defined __x86_64__ || defined __amd64__) || (defined __i386 || defined 
__i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && 
!HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
-      /* Detect any special bit patterns that pass ==; see comment above.  */
-      memory_double m1;
-      memory_double m2;
-
-      memset (&m1.value, 0, SIZE);
-      memset (&m2.value, 0, SIZE);
-      m1.value = x;
-      m2.value = x + (x ? 0.0L : -0.0L);
-      if (memcmp (&m1.value, &m2.value, SIZE) != 0)
-        return 1;
-# endif
-      return 0;
-    }
-  else
-    return 1;
-#endif
-}
diff --git a/lib/isnand-nolibm.h b/lib/isnand-nolibm.h
deleted file mode 100644
index bb5a38b39f0..00000000000
--- a/lib/isnand-nolibm.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Test for NaN that does not need libm.
-   Copyright (C) 2007-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* This file uses HAVE_ISNAND_IN_LIBC.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-#if HAVE_ISNAND_IN_LIBC
-/* Get declaration of isnan macro.  */
-# include <math.h>
-# if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-   /* GCC >= 4.0 and clang provide a type-generic built-in for isnan.  */
-#  undef isnand
-#  define isnand(x) __builtin_isnan ((double)(x))
-# else
-#  undef isnand
-#  define isnand(x) isnan ((double)(x))
-# endif
-#else
-/* Test whether X is a NaN.  */
-# undef isnand
-# define isnand rpl_isnand
-extern int isnand (double x);
-#endif
diff --git a/lib/isnand.c b/lib/isnand.c
deleted file mode 100644
index e14d2e6fb29..00000000000
--- a/lib/isnand.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Test for NaN that does not need libm.
-   Copyright (C) 2008-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* Written by Bruno Haible <bruno@clisp.org>, 2008.  */
-
-#include "isnan.c"
diff --git a/lib/isnanf-nolibm.h b/lib/isnanf-nolibm.h
deleted file mode 100644
index f4bcba143e6..00000000000
--- a/lib/isnanf-nolibm.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Test for NaN that does not need libm.
-   Copyright (C) 2007-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* This file uses HAVE_ISNANF_IN_LIBC.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-#if HAVE_ISNANF_IN_LIBC
-/* Get declaration of isnan macro or (older) isnanf function.  */
-# include <math.h>
-# if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-   /* GCC >= 4.0 and clang provide a type-generic built-in for isnan.
-      GCC >= 4.0 also provides __builtin_isnanf, but clang doesn't.  */
-#  undef isnanf
-#  define isnanf(x) __builtin_isnan ((float)(x))
-# elif defined isnan
-#  undef isnanf
-#  define isnanf(x) isnan ((float)(x))
-# else
-   /* Get declaration of isnanf(), if not declared in <math.h>.  */
-#  if defined __sgi
-   /* We can't include <ieeefp.h>, because it conflicts with our definition of
-      isnand.  Therefore declare isnanf separately.  */
-extern int isnanf (float x);
-#  endif
-# endif
-#else
-/* Test whether X is a NaN.  */
-# undef isnanf
-# define isnanf rpl_isnanf
-extern int isnanf (float x);
-#endif
diff --git a/lib/isnanf.c b/lib/isnanf.c
deleted file mode 100644
index 55252ca6d6e..00000000000
--- a/lib/isnanf.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Test for NaN that does not need libm.
-   Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
-
-#define USE_FLOAT
-#include "isnan.c"
diff --git a/lib/isnanl-nolibm.h b/lib/isnanl-nolibm.h
deleted file mode 100644
index 8becc5b409e..00000000000
--- a/lib/isnanl-nolibm.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Test for NaN that does not need libm.
-   Copyright (C) 2007-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* This file uses HAVE_ISNANL_IN_LIBC.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-#if HAVE_ISNANL_IN_LIBC
-/* Get declaration of isnan macro or (older) isnanl function.  */
-# include <math.h>
-# if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-   /* GCC >= 4.0 and clang provide a type-generic built-in for isnan.
-      GCC >= 4.0 also provides __builtin_isnanl, but clang doesn't.  */
-#  undef isnanl
-#  define isnanl(x) __builtin_isnan ((long double)(x))
-# elif defined isnan
-#  undef isnanl
-#  define isnanl(x) isnan ((long double)(x))
-# endif
-#else
-/* Test whether X is a NaN.  */
-# undef isnanl
-# define isnanl rpl_isnanl
-extern int isnanl (long double x);
-#endif
diff --git a/lib/isnanl.c b/lib/isnanl.c
deleted file mode 100644
index 286f245097e..00000000000
--- a/lib/isnanl.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Test for NaN that does not need libm.
-   Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
-
-#define USE_LONG_DOUBLE
-#include "isnan.c"
diff --git a/lib/itold.c b/lib/itold.c
deleted file mode 100644
index 0ef4464eead..00000000000
--- a/lib/itold.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Replacement for 'int' to 'long double' conversion routine.
-   Copyright (C) 2011-2023 Free Software Foundation, Inc.
-   Written by Bruno Haible <bruno@clisp.org>, 2011.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include <float.h>
-
-void
-_Qp_itoq (long double *result, int a)
-{
-  /* Convert from 'int' to 'double', then from 'double' to 'long double'.  */
-  *result = (double) a;
-}
diff --git a/lib/math.c b/lib/math.c
deleted file mode 100644
index 67cabbcf8f2..00000000000
--- a/lib/math.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Inline functions for <math.h>.
-
-   Copyright (C) 2012-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-#define _GL_MATH_INLINE _GL_EXTERN_INLINE
-#include "math.h"
-typedef int dummy;
diff --git a/lib/math.in.h b/lib/math.in.h
deleted file mode 100644
index f841a1356e4..00000000000
--- a/lib/math.in.h
+++ /dev/null
@@ -1,2743 +0,0 @@
-/* A GNU-like <math.h>.
-
-   Copyright (C) 2002-2003, 2007-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* On Android, in C++ mode, when /usr/include/c++/v1/math.h is being included
-   and /usr/include/math.h has not yet been included, skip this file, since it
-   would lead to many syntax errors.  */
-#if !(defined __ANDROID__ && defined _LIBCPP_MATH_H && !defined INFINITY)
-
-#ifndef _@GUARD_PREFIX@_MATH_H
-
-#if __GNUC__ >= 3
-@PRAGMA_SYSTEM_HEADER@
-#endif
-@PRAGMA_COLUMNS@
-
-#if defined _GL_INCLUDING_MATH_H
-/* Special invocation convention:
-   - On FreeBSD 12.2 we have a sequence of nested includes
-     <math.h> -> <stdlib.h> -> <sys/wait.h> -> <sys/types.h> -> <sys/select.h>
-       -> <signal.h> -> <pthread.h> -> <stdlib.h> -> <math.h>
-     In this situation, the functions are not yet declared, therefore we cannot
-     provide the C++ aliases.  */
-
-#@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
-
-#else
-/* Normal invocation convention.  */
-
-/* The include_next requires a split double-inclusion guard.  */
-#define _GL_INCLUDING_MATH_H
-#@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
-#undef _GL_INCLUDING_MATH_H
-
-#ifndef _@GUARD_PREFIX@_MATH_H
-#define _@GUARD_PREFIX@_MATH_H
-
-/* This file uses _GL_INLINE_HEADER_BEGIN, _GL_INLINE, _GL_ATTRIBUTE_CONST,
-   GNULIB_POSIXCHECK, HAVE_RAW_DECL_*.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-/* On OpenVMS, NAN, INFINITY, and HUGEVAL macros are defined in <fp.h>.  */
-#if defined __VMS && ! defined NAN
-# include <fp.h>
-#endif
-
-_GL_INLINE_HEADER_BEGIN
-#ifndef _GL_MATH_INLINE
-# define _GL_MATH_INLINE _GL_INLINE
-#endif
-
-/* The __attribute__ feature is available in gcc versions 2.5 and later.
-   The attribute __const__ was added in gcc 2.95.  */
-#ifndef _GL_ATTRIBUTE_CONST
-# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) || defined 
__clang__
-#  define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-# else
-#  define _GL_ATTRIBUTE_CONST /* empty */
-# endif
-#endif
-
-/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
-
-/* The definition of _GL_ARG_NONNULL is copied here.  */
-
-/* The definition of _GL_WARN_ON_USE is copied here.  */
-
-#ifdef __cplusplus
-/* Helper macros to define type-generic function FUNC as overloaded functions,
-   rather than as macros like in C.  POSIX declares these with an argument of
-   real-floating (that is, one of float, double, or long double).  */
-# define _GL_MATH_CXX_REAL_FLOATING_DECL_1(func) \
-static inline int                                                   \
-_gl_cxx_ ## func ## f (float f)                                     \
-{                                                                   \
-  return func (f);                                                  \
-}                                                                   \
-static inline int                                                   \
-_gl_cxx_ ## func ## d (double d)                                    \
-{                                                                   \
-  return func (d);                                                  \
-}                                                                   \
-static inline int                                                   \
-_gl_cxx_ ## func ## l (long double l)                               \
-{                                                                   \
-  return func (l);                                                  \
-}
-# define _GL_MATH_CXX_REAL_FLOATING_DECL_2(func,rpl_func,rettype) \
-_GL_BEGIN_NAMESPACE                                                 \
-inline rettype                                                      \
-rpl_func (float f)                                                  \
-{                                                                   \
-  return _gl_cxx_ ## func ## f (f);                                 \
-}                                                                   \
-inline rettype                                                      \
-rpl_func (double d)                                                 \
-{                                                                   \
-  return _gl_cxx_ ## func ## d (d);                                 \
-}                                                                   \
-inline rettype                                                      \
-rpl_func (long double l)                                            \
-{                                                                   \
-  return _gl_cxx_ ## func ## l (l);                                 \
-}                                                                   \
-_GL_END_NAMESPACE
-#endif
-
-/* Helper macros to define a portability warning for the
-   classification macro FUNC called with VALUE.  POSIX declares the
-   classification macros with an argument of real-floating (that is,
-   one of float, double, or long double).  */
-#define _GL_WARN_REAL_FLOATING_DECL(func) \
-_GL_MATH_INLINE int                                                       \
-_GL_WARN_ON_USE_ATTRIBUTE (#func " is unportable - "                      \
-                           "use gnulib module " #func " for portability") \
-rpl_ ## func ## f (float f)                                               \
-{                                                                         \
-  return func (f);                                                        \
-}                                                                         \
-_GL_MATH_INLINE int                                                       \
-_GL_WARN_ON_USE_ATTRIBUTE (#func " is unportable - "                      \
-                           "use gnulib module " #func " for portability") \
-rpl_ ## func ## d (double d)                                              \
-{                                                                         \
-  return func (d);                                                        \
-}                                                                         \
-_GL_MATH_INLINE int                                                       \
-_GL_WARN_ON_USE_ATTRIBUTE (#func " is unportable - "                      \
-                           "use gnulib module " #func " for portability") \
-rpl_ ## func ## l (long double l)                                         \
-{                                                                         \
-  return func (l);                                                        \
-}
-#define _GL_WARN_REAL_FLOATING_IMPL(func, value) \
-  (sizeof (value) == sizeof (float) ? rpl_ ## func ## f (value)     \
-   : sizeof (value) == sizeof (double) ? rpl_ ## func ## d (value)  \
-   : rpl_ ## func ## l (value))
-
-
-#if @REPLACE_ITOLD@
-/* Pull in a function that fixes the 'int' to 'long double' conversion
-   of glibc 2.7.  */
-_GL_EXTERN_C void _Qp_itoq (long double *, int);
-static void (*_gl_math_fix_itold) (long double *, int) = _Qp_itoq;
-#endif
-
-
-/* POSIX allows platforms that don't support NAN.  But all major
-   machines in the past 15 years have supported something close to
-   IEEE NaN, so we define this unconditionally.  We also must define
-   it on platforms like Solaris 10, where NAN is present but defined
-   as a function pointer rather than a floating point constant.  */
-#if !defined NAN || @REPLACE_NAN@
-# if !GNULIB_defined_NAN
-#  undef NAN
-  /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler
-     choke on the expression 0.0 / 0.0.  */
-#  if defined __DECC || defined _MSC_VER
-_GL_MATH_INLINE float
-_NaN ()
-{
-  static float zero = 0.0f;
-  return zero / zero;
-}
-#   define NAN (_NaN())
-#  else
-#   define NAN (0.0f / 0.0f)
-#  endif
-#  define GNULIB_defined_NAN 1
-# endif
-#endif
-
-/* Solaris 10 defines HUGE_VAL, but as a function pointer rather
-   than a floating point constant.  */
-#if @REPLACE_HUGE_VAL@
-# undef HUGE_VALF
-# define HUGE_VALF (1.0f / 0.0f)
-# undef HUGE_VAL
-# define HUGE_VAL (1.0 / 0.0)
-# undef HUGE_VALL
-# define HUGE_VALL (1.0L / 0.0L)
-#endif
-
-/* HUGE_VALF is a 'float' Infinity.  */
-#ifndef HUGE_VALF
-# if defined _MSC_VER
-/* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f.  */
-#  define HUGE_VALF (1e25f * 1e25f)
-# else
-#  define HUGE_VALF (1.0f / 0.0f)
-# endif
-#endif
-
-/* HUGE_VAL is a 'double' Infinity.  */
-#ifndef HUGE_VAL
-# if defined _MSC_VER
-/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0.  */
-#  define HUGE_VAL (1e250 * 1e250)
-# else
-#  define HUGE_VAL (1.0 / 0.0)
-# endif
-#endif
-
-/* HUGE_VALL is a 'long double' Infinity.  */
-#ifndef HUGE_VALL
-# if defined _MSC_VER
-/* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L.  */
-#  define HUGE_VALL (1e250L * 1e250L)
-# else
-#  define HUGE_VALL (1.0L / 0.0L)
-# endif
-#endif
-
-
-#if defined FP_ILOGB0 && defined FP_ILOGBNAN
- /* Ensure FP_ILOGB0 and FP_ILOGBNAN are correct.  */
-# if defined __HAIKU__
-  /* Haiku: match what ilogb() does */
-#  undef FP_ILOGB0
-#  undef FP_ILOGBNAN
-#  define FP_ILOGB0   (- 2147483647 - 1) /* INT_MIN */
-#  define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */
-# endif
-#else
- /* Ensure FP_ILOGB0 and FP_ILOGBNAN are defined.  */
-# if defined __NetBSD__ || defined __sgi
-  /* NetBSD, IRIX 6.5: match what ilogb() does */
-#  define FP_ILOGB0   (- 2147483647 - 1) /* INT_MIN */
-#  define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */
-# elif defined _AIX
-  /* AIX 5.1: match what ilogb() does in AIX >= 5.2 */
-#  define FP_ILOGB0   (- 2147483647 - 1) /* INT_MIN */
-#  define FP_ILOGBNAN 2147483647 /* INT_MAX */
-# elif defined __sun
-  /* Solaris 9: match what ilogb() does */
-#  define FP_ILOGB0   (- 2147483647) /* - INT_MAX */
-#  define FP_ILOGBNAN 2147483647 /* INT_MAX */
-# else
-  /* Gnulib defined values.  */
-#  define FP_ILOGB0   (- 2147483647) /* - INT_MAX */
-#  define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */
-# endif
-#endif
-
-
-#if @GNULIB_ACOSF@
-# if @REPLACE_ACOSF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef acosf
-#   define acosf rpl_acosf
-#  endif
-_GL_FUNCDECL_RPL (acosf, float, (float x));
-_GL_CXXALIAS_RPL (acosf, float, (float x));
-# else
-#  if !@HAVE_ACOSF@
-#   undef acosf
-_GL_FUNCDECL_SYS (acosf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (acosf, float, (float x));
-# endif
-_GL_CXXALIASWARN (acosf);
-#elif defined GNULIB_POSIXCHECK
-# undef acosf
-# if HAVE_RAW_DECL_ACOSF
-_GL_WARN_ON_USE (acosf, "acosf is unportable - "
-                 "use gnulib module acosf for portability");
-# endif
-#endif
-
-#if @GNULIB_ACOSL@
-# if !@HAVE_ACOSL@ || !@HAVE_DECL_ACOSL@
-#  undef acosl
-_GL_FUNCDECL_SYS (acosl, long double, (long double x));
-# endif
-_GL_CXXALIAS_SYS (acosl, long double, (long double x));
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (acosl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef acosl
-# if HAVE_RAW_DECL_ACOSL
-_GL_WARN_ON_USE (acosl, "acosl is unportable - "
-                 "use gnulib module acosl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_ASINF@
-# if @REPLACE_ASINF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef asinf
-#   define asinf rpl_asinf
-#  endif
-_GL_FUNCDECL_RPL (asinf, float, (float x));
-_GL_CXXALIAS_RPL (asinf, float, (float x));
-# else
-#  if !@HAVE_ASINF@
-#   undef asinf
-_GL_FUNCDECL_SYS (asinf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (asinf, float, (float x));
-# endif
-_GL_CXXALIASWARN (asinf);
-#elif defined GNULIB_POSIXCHECK
-# undef asinf
-# if HAVE_RAW_DECL_ASINF
-_GL_WARN_ON_USE (asinf, "asinf is unportable - "
-                 "use gnulib module asinf for portability");
-# endif
-#endif
-
-#if @GNULIB_ASINL@
-# if !@HAVE_ASINL@ || !@HAVE_DECL_ASINL@
-#  undef asinl
-_GL_FUNCDECL_SYS (asinl, long double, (long double x));
-# endif
-_GL_CXXALIAS_SYS (asinl, long double, (long double x));
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (asinl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef asinl
-# if HAVE_RAW_DECL_ASINL
-_GL_WARN_ON_USE (asinl, "asinl is unportable - "
-                 "use gnulib module asinl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_ATANF@
-# if @REPLACE_ATANF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef atanf
-#   define atanf rpl_atanf
-#  endif
-_GL_FUNCDECL_RPL (atanf, float, (float x));
-_GL_CXXALIAS_RPL (atanf, float, (float x));
-# else
-#  if !@HAVE_ATANF@
-#   undef atanf
-_GL_FUNCDECL_SYS (atanf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (atanf, float, (float x));
-# endif
-_GL_CXXALIASWARN (atanf);
-#elif defined GNULIB_POSIXCHECK
-# undef atanf
-# if HAVE_RAW_DECL_ATANF
-_GL_WARN_ON_USE (atanf, "atanf is unportable - "
-                 "use gnulib module atanf for portability");
-# endif
-#endif
-
-#if @GNULIB_ATANL@
-# if !@HAVE_ATANL@ || !@HAVE_DECL_ATANL@
-#  undef atanl
-_GL_FUNCDECL_SYS (atanl, long double, (long double x));
-# endif
-_GL_CXXALIAS_SYS (atanl, long double, (long double x));
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (atanl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef atanl
-# if HAVE_RAW_DECL_ATANL
-_GL_WARN_ON_USE (atanl, "atanl is unportable - "
-                 "use gnulib module atanl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_ATAN2F@
-# if @REPLACE_ATAN2F@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef atan2f
-#   define atan2f rpl_atan2f
-#  endif
-_GL_FUNCDECL_RPL (atan2f, float, (float y, float x));
-_GL_CXXALIAS_RPL (atan2f, float, (float y, float x));
-# else
-#  if !@HAVE_ATAN2F@
-#   undef atan2f
-_GL_FUNCDECL_SYS (atan2f, float, (float y, float x));
-#  endif
-_GL_CXXALIAS_SYS (atan2f, float, (float y, float x));
-# endif
-_GL_CXXALIASWARN (atan2f);
-#elif defined GNULIB_POSIXCHECK
-# undef atan2f
-# if HAVE_RAW_DECL_ATAN2F
-_GL_WARN_ON_USE (atan2f, "atan2f is unportable - "
-                 "use gnulib module atan2f for portability");
-# endif
-#endif
-
-
-#if @GNULIB_CBRTF@
-# if @REPLACE_CBRTF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef cbrtf
-#   define cbrtf rpl_cbrtf
-#  endif
-_GL_FUNCDECL_RPL (cbrtf, float, (float x));
-_GL_CXXALIAS_RPL (cbrtf, float, (float x));
-# else
-#  if !@HAVE_DECL_CBRTF@
-_GL_FUNCDECL_SYS (cbrtf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (cbrtf, float, (float x));
-# endif
-_GL_CXXALIASWARN (cbrtf);
-#elif defined GNULIB_POSIXCHECK
-# undef cbrtf
-# if HAVE_RAW_DECL_CBRTF
-_GL_WARN_ON_USE (cbrtf, "cbrtf is unportable - "
-                 "use gnulib module cbrtf for portability");
-# endif
-#endif
-
-#if @GNULIB_CBRT@
-# if !@HAVE_CBRT@
-_GL_FUNCDECL_SYS (cbrt, double, (double x));
-# endif
-_GL_CXXALIAS_SYS (cbrt, double, (double x));
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (cbrt, double, (double x));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef cbrt
-# if HAVE_RAW_DECL_CBRT
-_GL_WARN_ON_USE (cbrt, "cbrt is unportable - "
-                 "use gnulib module cbrt for portability");
-# endif
-#endif
-
-#if @GNULIB_CBRTL@
-# if @REPLACE_CBRTL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef cbrtl
-#   define cbrtl rpl_cbrtl
-#  endif
-_GL_FUNCDECL_RPL (cbrtl, long double, (long double x));
-_GL_CXXALIAS_RPL (cbrtl, long double, (long double x));
-# else
-#  if !@HAVE_DECL_CBRTL@
-_GL_FUNCDECL_SYS (cbrtl, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (cbrtl, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (cbrtl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef cbrtl
-# if HAVE_RAW_DECL_CBRTL
-_GL_WARN_ON_USE (cbrtl, "cbrtl is unportable - "
-                 "use gnulib module cbrtl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_CEILF@
-# if @REPLACE_CEILF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef ceilf
-#   define ceilf rpl_ceilf
-#  endif
-_GL_FUNCDECL_RPL (ceilf, float, (float x));
-_GL_CXXALIAS_RPL (ceilf, float, (float x));
-# else
-#  if !@HAVE_DECL_CEILF@
-#   undef ceilf
-_GL_FUNCDECL_SYS (ceilf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (ceilf, float, (float x));
-# endif
-_GL_CXXALIASWARN (ceilf);
-#elif defined GNULIB_POSIXCHECK
-# undef ceilf
-# if HAVE_RAW_DECL_CEILF
-_GL_WARN_ON_USE (ceilf, "ceilf is unportable - "
-                 "use gnulib module ceilf for portability");
-# endif
-#endif
-
-#if @GNULIB_CEIL@
-# if @REPLACE_CEIL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef ceil
-#   define ceil rpl_ceil
-#  endif
-_GL_FUNCDECL_RPL (ceil, double, (double x));
-_GL_CXXALIAS_RPL (ceil, double, (double x));
-# else
-_GL_CXXALIAS_SYS (ceil, double, (double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (ceil, double, (double x));
-# endif
-#endif
-
-#if @GNULIB_CEILL@
-# if @REPLACE_CEILL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef ceill
-#   define ceill rpl_ceill
-#  endif
-_GL_FUNCDECL_RPL (ceill, long double, (long double x));
-_GL_CXXALIAS_RPL (ceill, long double, (long double x));
-# else
-#  if !@HAVE_DECL_CEILL@
-#   undef ceill
-_GL_FUNCDECL_SYS (ceill, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (ceill, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (ceill);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef ceill
-# if HAVE_RAW_DECL_CEILL
-_GL_WARN_ON_USE (ceill, "ceill is unportable - "
-                 "use gnulib module ceill for portability");
-# endif
-#endif
-
-
-#if @GNULIB_COPYSIGNF@
-# if !@HAVE_DECL_COPYSIGNF@
-#  undef copysignf
-_GL_FUNCDECL_SYS (copysignf, float, (float x, float y));
-# endif
-_GL_CXXALIAS_SYS (copysignf, float, (float x, float y));
-_GL_CXXALIASWARN (copysignf);
-#elif defined GNULIB_POSIXCHECK
-# undef copysignf
-# if HAVE_RAW_DECL_COPYSIGNF
-_GL_WARN_ON_USE (copysignf, "copysignf is unportable - "
-                 "use gnulib module copysignf for portability");
-# endif
-#endif
-
-#if @GNULIB_COPYSIGN@
-# if !@HAVE_COPYSIGN@
-_GL_FUNCDECL_SYS (copysign, double, (double x, double y));
-# endif
-_GL_CXXALIAS_SYS (copysign, double, (double x, double y));
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (copysign, double, (double x, double y));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef copysign
-# if HAVE_RAW_DECL_COPYSIGN
-_GL_WARN_ON_USE (copysign, "copysign is unportable - "
-                 "use gnulib module copysign for portability");
-# endif
-#endif
-
-#if @GNULIB_COPYSIGNL@
-# if !@HAVE_COPYSIGNL@
-_GL_FUNCDECL_SYS (copysignl, long double, (long double x, long double y));
-# endif
-_GL_CXXALIAS_SYS (copysignl, long double, (long double x, long double y));
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (copysignl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef copysignl
-# if HAVE_RAW_DECL_COPYSIGNL
-_GL_WARN_ON_USE (copysign, "copysignl is unportable - "
-                 "use gnulib module copysignl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_COSF@
-# if @REPLACE_COSF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef cosf
-#   define cosf rpl_cosf
-#  endif
-_GL_FUNCDECL_RPL (cosf, float, (float x));
-_GL_CXXALIAS_RPL (cosf, float, (float x));
-# else
-#  if !@HAVE_COSF@
-#   undef cosf
-_GL_FUNCDECL_SYS (cosf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (cosf, float, (float x));
-# endif
-_GL_CXXALIASWARN (cosf);
-#elif defined GNULIB_POSIXCHECK
-# undef cosf
-# if HAVE_RAW_DECL_COSF
-_GL_WARN_ON_USE (cosf, "cosf is unportable - "
-                 "use gnulib module cosf for portability");
-# endif
-#endif
-
-#if @GNULIB_COSL@
-# if !@HAVE_COSL@ || !@HAVE_DECL_COSL@
-#  undef cosl
-_GL_FUNCDECL_SYS (cosl, long double, (long double x));
-# endif
-_GL_CXXALIAS_SYS (cosl, long double, (long double x));
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (cosl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef cosl
-# if HAVE_RAW_DECL_COSL
-_GL_WARN_ON_USE (cosl, "cosl is unportable - "
-                 "use gnulib module cosl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_COSHF@
-# if @REPLACE_COSHF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef coshf
-#   define coshf rpl_coshf
-#  endif
-_GL_FUNCDECL_RPL (coshf, float, (float x));
-_GL_CXXALIAS_RPL (coshf, float, (float x));
-# else
-#  if !@HAVE_COSHF@
-#   undef coshf
-_GL_FUNCDECL_SYS (coshf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (coshf, float, (float x));
-# endif
-_GL_CXXALIASWARN (coshf);
-#elif defined GNULIB_POSIXCHECK
-# undef coshf
-# if HAVE_RAW_DECL_COSHF
-_GL_WARN_ON_USE (coshf, "coshf is unportable - "
-                 "use gnulib module coshf for portability");
-# endif
-#endif
-
-
-#if @GNULIB_EXPF@
-# if @REPLACE_EXPF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef expf
-#   define expf rpl_expf
-#  endif
-_GL_FUNCDECL_RPL (expf, float, (float x));
-_GL_CXXALIAS_RPL (expf, float, (float x));
-# else
-#  if !@HAVE_EXPF@
-#   undef expf
-_GL_FUNCDECL_SYS (expf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (expf, float, (float x));
-# endif
-_GL_CXXALIASWARN (expf);
-#elif defined GNULIB_POSIXCHECK
-# undef expf
-# if HAVE_RAW_DECL_EXPF
-_GL_WARN_ON_USE (expf, "expf is unportable - "
-                 "use gnulib module expf for portability");
-# endif
-#endif
-
-#if @GNULIB_EXPL@
-# if @REPLACE_EXPL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef expl
-#   define expl rpl_expl
-#  endif
-_GL_FUNCDECL_RPL (expl, long double, (long double x));
-_GL_CXXALIAS_RPL (expl, long double, (long double x));
-# else
-#  if !@HAVE_EXPL@ || !@HAVE_DECL_EXPL@
-#   undef expl
-_GL_FUNCDECL_SYS (expl, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (expl, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (expl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef expl
-# if HAVE_RAW_DECL_EXPL
-_GL_WARN_ON_USE (expl, "expl is unportable - "
-                 "use gnulib module expl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_EXP2F@
-# if !@HAVE_DECL_EXP2F@
-_GL_FUNCDECL_SYS (exp2f, float, (float x));
-# endif
-_GL_CXXALIAS_SYS (exp2f, float, (float x));
-_GL_CXXALIASWARN (exp2f);
-#elif defined GNULIB_POSIXCHECK
-# undef exp2f
-# if HAVE_RAW_DECL_EXP2F
-_GL_WARN_ON_USE (exp2f, "exp2f is unportable - "
-                 "use gnulib module exp2f for portability");
-# endif
-#endif
-
-#if @GNULIB_EXP2@
-# if @REPLACE_EXP2@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef exp2
-#   define exp2 rpl_exp2
-#  endif
-_GL_FUNCDECL_RPL (exp2, double, (double x));
-_GL_CXXALIAS_RPL (exp2, double, (double x));
-# else
-#  if !@HAVE_DECL_EXP2@
-_GL_FUNCDECL_SYS (exp2, double, (double x));
-#  endif
-_GL_CXXALIAS_SYS (exp2, double, (double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (exp2, double, (double x));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef exp2
-# if HAVE_RAW_DECL_EXP2
-_GL_WARN_ON_USE (exp2, "exp2 is unportable - "
-                 "use gnulib module exp2 for portability");
-# endif
-#endif
-
-#if @GNULIB_EXP2L@
-# if @REPLACE_EXP2L@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef exp2l
-#   define exp2l rpl_exp2l
-#  endif
-_GL_FUNCDECL_RPL (exp2l, long double, (long double x));
-_GL_CXXALIAS_RPL (exp2l, long double, (long double x));
-# else
-#  if !@HAVE_DECL_EXP2L@
-#   undef exp2l
-_GL_FUNCDECL_SYS (exp2l, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (exp2l, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (exp2l);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef exp2l
-# if HAVE_RAW_DECL_EXP2L
-_GL_WARN_ON_USE (exp2l, "exp2l is unportable - "
-                 "use gnulib module exp2l for portability");
-# endif
-#endif
-
-
-#if @GNULIB_EXPM1F@
-# if @REPLACE_EXPM1F@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef expm1f
-#   define expm1f rpl_expm1f
-#  endif
-_GL_FUNCDECL_RPL (expm1f, float, (float x));
-_GL_CXXALIAS_RPL (expm1f, float, (float x));
-# else
-#  if !@HAVE_EXPM1F@
-_GL_FUNCDECL_SYS (expm1f, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (expm1f, float, (float x));
-# endif
-_GL_CXXALIASWARN (expm1f);
-#elif defined GNULIB_POSIXCHECK
-# undef expm1f
-# if HAVE_RAW_DECL_EXPM1F
-_GL_WARN_ON_USE (expm1f, "expm1f is unportable - "
-                 "use gnulib module expm1f for portability");
-# endif
-#endif
-
-#if @GNULIB_EXPM1@
-# if @REPLACE_EXPM1@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef expm1
-#   define expm1 rpl_expm1
-#  endif
-_GL_FUNCDECL_RPL (expm1, double, (double x));
-_GL_CXXALIAS_RPL (expm1, double, (double x));
-# else
-#  if !@HAVE_EXPM1@
-_GL_FUNCDECL_SYS (expm1, double, (double x));
-#  endif
-_GL_CXXALIAS_SYS (expm1, double, (double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (expm1, double, (double x));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef expm1
-# if HAVE_RAW_DECL_EXPM1
-_GL_WARN_ON_USE (expm1, "expm1 is unportable - "
-                 "use gnulib module expm1 for portability");
-# endif
-#endif
-
-#if @GNULIB_EXPM1L@
-# if @REPLACE_EXPM1L@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef expm1l
-#   define expm1l rpl_expm1l
-#  endif
-_GL_FUNCDECL_RPL (expm1l, long double, (long double x));
-_GL_CXXALIAS_RPL (expm1l, long double, (long double x));
-# else
-#  if !@HAVE_DECL_EXPM1L@
-#   undef expm1l
-#   if !(defined __cplusplus && defined _AIX)
-_GL_FUNCDECL_SYS (expm1l, long double, (long double x));
-#   endif
-#  endif
-_GL_CXXALIAS_SYS (expm1l, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (expm1l);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef expm1l
-# if HAVE_RAW_DECL_EXPM1L
-_GL_WARN_ON_USE (expm1l, "expm1l is unportable - "
-                 "use gnulib module expm1l for portability");
-# endif
-#endif
-
-
-#if @GNULIB_FABSF@
-# if !@HAVE_FABSF@
-#  undef fabsf
-_GL_FUNCDECL_SYS (fabsf, float, (float x));
-# endif
-_GL_CXXALIAS_SYS (fabsf, float, (float x));
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (fabsf);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef fabsf
-# if HAVE_RAW_DECL_FABSF
-_GL_WARN_ON_USE (fabsf, "fabsf is unportable - "
-                 "use gnulib module fabsf for portability");
-# endif
-#endif
-
-#if @GNULIB_FABSL@
-# if @REPLACE_FABSL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef fabsl
-#   define fabsl rpl_fabsl
-#  endif
-_GL_FUNCDECL_RPL (fabsl, long double, (long double x));
-_GL_CXXALIAS_RPL (fabsl, long double, (long double x));
-# else
-#  if !@HAVE_FABSL@
-#   undef fabsl
-_GL_FUNCDECL_SYS (fabsl, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (fabsl, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (fabsl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef fabsl
-# if HAVE_RAW_DECL_FABSL
-_GL_WARN_ON_USE (fabsl, "fabsl is unportable - "
-                 "use gnulib module fabsl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_FLOORF@
-# if @REPLACE_FLOORF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef floorf
-#   define floorf rpl_floorf
-#  endif
-_GL_FUNCDECL_RPL (floorf, float, (float x));
-_GL_CXXALIAS_RPL (floorf, float, (float x));
-# else
-#  if !@HAVE_DECL_FLOORF@
-#   undef floorf
-_GL_FUNCDECL_SYS (floorf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (floorf, float, (float x));
-# endif
-_GL_CXXALIASWARN (floorf);
-#elif defined GNULIB_POSIXCHECK
-# undef floorf
-# if HAVE_RAW_DECL_FLOORF
-_GL_WARN_ON_USE (floorf, "floorf is unportable - "
-                 "use gnulib module floorf for portability");
-# endif
-#endif
-
-#if @GNULIB_FLOOR@
-# if @REPLACE_FLOOR@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef floor
-#   define floor rpl_floor
-#  endif
-_GL_FUNCDECL_RPL (floor, double, (double x));
-_GL_CXXALIAS_RPL (floor, double, (double x));
-# else
-_GL_CXXALIAS_SYS (floor, double, (double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (floor, double, (double x));
-# endif
-#endif
-
-#if @GNULIB_FLOORL@
-# if @REPLACE_FLOORL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef floorl
-#   define floorl rpl_floorl
-#  endif
-_GL_FUNCDECL_RPL (floorl, long double, (long double x));
-_GL_CXXALIAS_RPL (floorl, long double, (long double x));
-# else
-#  if !@HAVE_DECL_FLOORL@
-#   undef floorl
-_GL_FUNCDECL_SYS (floorl, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (floorl, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (floorl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef floorl
-# if HAVE_RAW_DECL_FLOORL
-_GL_WARN_ON_USE (floorl, "floorl is unportable - "
-                 "use gnulib module floorl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_FMAF@
-# if @REPLACE_FMAF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef fmaf
-#   define fmaf rpl_fmaf
-#  endif
-_GL_FUNCDECL_RPL (fmaf, float, (float x, float y, float z));
-_GL_CXXALIAS_RPL (fmaf, float, (float x, float y, float z));
-# else
-#  if !@HAVE_FMAF@
-#   undef fmaf
-_GL_FUNCDECL_SYS (fmaf, float, (float x, float y, float z));
-#  endif
-_GL_CXXALIAS_SYS (fmaf, float, (float x, float y, float z));
-# endif
-_GL_CXXALIASWARN (fmaf);
-#elif defined GNULIB_POSIXCHECK
-# undef fmaf
-# if HAVE_RAW_DECL_FMAF
-_GL_WARN_ON_USE (fmaf, "fmaf is unportable - "
-                 "use gnulib module fmaf for portability");
-# endif
-#endif
-
-#if @GNULIB_FMA@
-# if @REPLACE_FMA@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef fma
-#   define fma rpl_fma
-#  endif
-_GL_FUNCDECL_RPL (fma, double, (double x, double y, double z));
-_GL_CXXALIAS_RPL (fma, double, (double x, double y, double z));
-# else
-#  if !@HAVE_FMA@
-#   undef fma
-_GL_FUNCDECL_SYS (fma, double, (double x, double y, double z));
-#  endif
-_GL_CXXALIAS_SYS (fma, double, (double x, double y, double z));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (fma, double, (double x, double y, double z));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef fma
-# if HAVE_RAW_DECL_FMA
-_GL_WARN_ON_USE (fma, "fma is unportable - "
-                 "use gnulib module fma for portability");
-# endif
-#endif
-
-#if @GNULIB_FMAL@
-# if @REPLACE_FMAL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef fmal
-#   define fmal rpl_fmal
-#  endif
-_GL_FUNCDECL_RPL (fmal, long double,
-                  (long double x, long double y, long double z));
-_GL_CXXALIAS_RPL (fmal, long double,
-                  (long double x, long double y, long double z));
-# else
-#  if !@HAVE_FMAL@
-#   undef fmal
-#   if !(defined __cplusplus && defined _AIX)
-_GL_FUNCDECL_SYS (fmal, long double,
-                  (long double x, long double y, long double z));
-#   endif
-#  endif
-_GL_CXXALIAS_SYS (fmal, long double,
-                  (long double x, long double y, long double z));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (fmal);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef fmal
-# if HAVE_RAW_DECL_FMAL
-_GL_WARN_ON_USE (fmal, "fmal is unportable - "
-                 "use gnulib module fmal for portability");
-# endif
-#endif
-
-
-#if @GNULIB_FMODF@
-# if @REPLACE_FMODF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef fmodf
-#   define fmodf rpl_fmodf
-#  endif
-_GL_FUNCDECL_RPL (fmodf, float, (float x, float y));
-_GL_CXXALIAS_RPL (fmodf, float, (float x, float y));
-# else
-#  if !@HAVE_FMODF@
-#   undef fmodf
-_GL_FUNCDECL_SYS (fmodf, float, (float x, float y));
-#  endif
-_GL_CXXALIAS_SYS (fmodf, float, (float x, float y));
-# endif
-_GL_CXXALIASWARN (fmodf);
-#elif defined GNULIB_POSIXCHECK
-# undef fmodf
-# if HAVE_RAW_DECL_FMODF
-_GL_WARN_ON_USE (fmodf, "fmodf is unportable - "
-                 "use gnulib module fmodf for portability");
-# endif
-#endif
-
-#if @GNULIB_FMOD@
-# if @REPLACE_FMOD@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef fmod
-#   define fmod rpl_fmod
-#  endif
-_GL_FUNCDECL_RPL (fmod, double, (double x, double y));
-_GL_CXXALIAS_RPL (fmod, double, (double x, double y));
-# else
-_GL_CXXALIAS_SYS (fmod, double, (double x, double y));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (fmod, double, (double x, double y));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef fmod
-# if HAVE_RAW_DECL_FMOD
-_GL_WARN_ON_USE (fmod, "fmod has portability problems - "
-                 "use gnulib module fmod for portability");
-# endif
-#endif
-
-#if @GNULIB_FMODL@
-# if @REPLACE_FMODL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef fmodl
-#   define fmodl rpl_fmodl
-#  endif
-_GL_FUNCDECL_RPL (fmodl, long double, (long double x, long double y));
-_GL_CXXALIAS_RPL (fmodl, long double, (long double x, long double y));
-# else
-#  if !@HAVE_FMODL@
-#   undef fmodl
-_GL_FUNCDECL_SYS (fmodl, long double, (long double x, long double y));
-#  endif
-_GL_CXXALIAS_SYS (fmodl, long double, (long double x, long double y));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (fmodl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef fmodl
-# if HAVE_RAW_DECL_FMODL
-_GL_WARN_ON_USE (fmodl, "fmodl is unportable - "
-                 "use gnulib module fmodl for portability");
-# endif
-#endif
-
-
-/* Write x as
-     x = mantissa * 2^exp
-   where
-     If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
-     If x is zero: mantissa = x, exp = 0.
-     If x is infinite or NaN: mantissa = x, exp unspecified.
-   Store exp in *EXPPTR and return mantissa.  */
-#if @GNULIB_FREXPF@
-# if @REPLACE_FREXPF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef frexpf
-#   define frexpf rpl_frexpf
-#  endif
-_GL_FUNCDECL_RPL (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (frexpf, float, (float x, int *expptr));
-# else
-#  if !@HAVE_FREXPF@
-#   undef frexpf
-_GL_FUNCDECL_SYS (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (frexpf, float, (float x, int *expptr));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (frexpf);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef frexpf
-# if HAVE_RAW_DECL_FREXPF
-_GL_WARN_ON_USE (frexpf, "frexpf is unportable - "
-                 "use gnulib module frexpf for portability");
-# endif
-#endif
-
-/* Write x as
-     x = mantissa * 2^exp
-   where
-     If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
-     If x is zero: mantissa = x, exp = 0.
-     If x is infinite or NaN: mantissa = x, exp unspecified.
-   Store exp in *EXPPTR and return mantissa.  */
-#if @GNULIB_FREXP@
-# if @REPLACE_FREXP@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef frexp
-#   define frexp rpl_frexp
-#  endif
-_GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL 
((2)));
-_GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr));
-# else
-_GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (frexp, double, (double x, int *expptr));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef frexp
-/* Assume frexp is always declared.  */
-_GL_WARN_ON_USE (frexp, "frexp is unportable - "
-                 "use gnulib module frexp for portability");
-#endif
-
-/* Write x as
-     x = mantissa * 2^exp
-   where
-     If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
-     If x is zero: mantissa = x, exp = 0.
-     If x is infinite or NaN: mantissa = x, exp unspecified.
-   Store exp in *EXPPTR and return mantissa.  */
-#if @GNULIB_FREXPL@ && @REPLACE_FREXPL@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#  undef frexpl
-#  define frexpl rpl_frexpl
-# endif
-_GL_FUNCDECL_RPL (frexpl, long double,
-                  (long double x, int *expptr) _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (frexpl, long double, (long double x, int *expptr));
-#else
-# if !@HAVE_DECL_FREXPL@
-_GL_FUNCDECL_SYS (frexpl, long double,
-                  (long double x, int *expptr) _GL_ARG_NONNULL ((2)));
-# endif
-# if @GNULIB_FREXPL@
-_GL_CXXALIAS_SYS (frexpl, long double, (long double x, int *expptr));
-# endif
-#endif
-#if @GNULIB_FREXPL@ && !(@REPLACE_FREXPL@ && !@HAVE_DECL_FREXPL@)
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (frexpl);
-# endif
-#endif
-#if !@GNULIB_FREXPL@ && defined GNULIB_POSIXCHECK
-# undef frexpl
-# if HAVE_RAW_DECL_FREXPL
-_GL_WARN_ON_USE (frexpl, "frexpl is unportable - "
-                 "use gnulib module frexpl for portability");
-# endif
-#endif
-
-
-/* Return sqrt(x^2+y^2).  */
-#if @GNULIB_HYPOTF@
-# if @REPLACE_HYPOTF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef hypotf
-#   define hypotf rpl_hypotf
-#  endif
-_GL_FUNCDECL_RPL (hypotf, float, (float x, float y));
-_GL_CXXALIAS_RPL (hypotf, float, (float x, float y));
-# else
-#  if !@HAVE_HYPOTF@
-_GL_FUNCDECL_SYS (hypotf, float, (float x, float y));
-#  endif
-_GL_CXXALIAS_SYS (hypotf, float, (float x, float y));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (hypotf);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef hypotf
-# if HAVE_RAW_DECL_HYPOTF
-_GL_WARN_ON_USE (hypotf, "hypotf is unportable - "
-                 "use gnulib module hypotf for portability");
-# endif
-#endif
-
-/* Return sqrt(x^2+y^2).  */
-#if @GNULIB_HYPOT@
-# if @REPLACE_HYPOT@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef hypot
-#   define hypot rpl_hypot
-#  endif
-_GL_FUNCDECL_RPL (hypot, double, (double x, double y));
-_GL_CXXALIAS_RPL (hypot, double, (double x, double y));
-# else
-_GL_CXXALIAS_SYS (hypot, double, (double x, double y));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (hypot, double, (double x, double y));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef hypot
-# if HAVE_RAW_DECL_HYPOT
-_GL_WARN_ON_USE (hypotf, "hypot has portability problems - "
-                 "use gnulib module hypot for portability");
-# endif
-#endif
-
-/* Return sqrt(x^2+y^2).  */
-#if @GNULIB_HYPOTL@
-# if @REPLACE_HYPOTL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef hypotl
-#   define hypotl rpl_hypotl
-#  endif
-_GL_FUNCDECL_RPL (hypotl, long double, (long double x, long double y));
-_GL_CXXALIAS_RPL (hypotl, long double, (long double x, long double y));
-# else
-#  if !@HAVE_HYPOTL@
-_GL_FUNCDECL_SYS (hypotl, long double, (long double x, long double y));
-#  endif
-_GL_CXXALIAS_SYS (hypotl, long double, (long double x, long double y));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (hypotl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef hypotl
-# if HAVE_RAW_DECL_HYPOTL
-_GL_WARN_ON_USE (hypotl, "hypotl is unportable - "
-                 "use gnulib module hypotl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_ILOGBF@
-# if @REPLACE_ILOGBF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef ilogbf
-#   define ilogbf rpl_ilogbf
-#  endif
-_GL_FUNCDECL_RPL (ilogbf, int, (float x));
-_GL_CXXALIAS_RPL (ilogbf, int, (float x));
-# else
-#  if !@HAVE_ILOGBF@
-_GL_FUNCDECL_SYS (ilogbf, int, (float x));
-#  endif
-_GL_CXXALIAS_SYS (ilogbf, int, (float x));
-# endif
-_GL_CXXALIASWARN (ilogbf);
-#elif defined GNULIB_POSIXCHECK
-# undef ilogbf
-# if HAVE_RAW_DECL_ILOGBF
-_GL_WARN_ON_USE (ilogbf, "ilogbf is unportable - "
-                 "use gnulib module ilogbf for portability");
-# endif
-#endif
-
-#if @GNULIB_ILOGB@
-# if @REPLACE_ILOGB@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef ilogb
-#   define ilogb rpl_ilogb
-#  endif
-_GL_FUNCDECL_RPL (ilogb, int, (double x));
-_GL_CXXALIAS_RPL (ilogb, int, (double x));
-# else
-#  if !@HAVE_ILOGB@
-_GL_FUNCDECL_SYS (ilogb, int, (double x));
-#  endif
-_GL_CXXALIAS_SYS (ilogb, int, (double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (ilogb, int, (double x));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef ilogb
-# if HAVE_RAW_DECL_ILOGB
-_GL_WARN_ON_USE (ilogb, "ilogb is unportable - "
-                 "use gnulib module ilogb for portability");
-# endif
-#endif
-
-#if @GNULIB_ILOGBL@
-# if @REPLACE_ILOGBL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef ilogbl
-#   define ilogbl rpl_ilogbl
-#  endif
-_GL_FUNCDECL_RPL (ilogbl, int, (long double x));
-_GL_CXXALIAS_RPL (ilogbl, int, (long double x));
-# else
-#  if !@HAVE_ILOGBL@
-#   undef ilogbl
-_GL_FUNCDECL_SYS (ilogbl, int, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (ilogbl, int, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (ilogbl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef ilogbl
-# if HAVE_RAW_DECL_ILOGBL
-_GL_WARN_ON_USE (ilogbl, "ilogbl is unportable - "
-                 "use gnulib module ilogbl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_MDA_J0@
-/* On native Windows, map 'j0' to '_j0', so that -loldnames is not
-   required.  In C++ with GNULIB_NAMESPACE, avoid differences between
-   platforms by defining GNULIB_NAMESPACE::j0 always.  */
-# if defined _WIN32 && !defined __CYGWIN__
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef j0
-#   define j0 _j0
-#  endif
-_GL_CXXALIAS_MDA (j0, double, (double x));
-# else
-_GL_CXXALIAS_SYS (j0, double, (double x));
-# endif
-_GL_CXXALIASWARN (j0);
-#endif
-
-#if @GNULIB_MDA_J1@
-/* On native Windows, map 'j1' to '_j1', so that -loldnames is not
-   required.  In C++ with GNULIB_NAMESPACE, avoid differences between
-   platforms by defining GNULIB_NAMESPACE::j1 always.  */
-# if defined _WIN32 && !defined __CYGWIN__
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef j1
-#   define j1 _j1
-#  endif
-_GL_CXXALIAS_MDA (j1, double, (double x));
-# else
-_GL_CXXALIAS_SYS (j1, double, (double x));
-# endif
-_GL_CXXALIASWARN (j1);
-#endif
-
-#if @GNULIB_MDA_JN@
-/* On native Windows, map 'jn' to '_jn', so that -loldnames is not
-   required.  In C++ with GNULIB_NAMESPACE, avoid differences between
-   platforms by defining GNULIB_NAMESPACE::jn always.  */
-# if defined _WIN32 && !defined __CYGWIN__
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef jn
-#   define jn _jn
-#  endif
-_GL_CXXALIAS_MDA (jn, double, (int n, double x));
-# else
-_GL_CXXALIAS_SYS (jn, double, (int n, double x));
-# endif
-_GL_CXXALIASWARN (jn);
-#endif
-
-
-/* Return x * 2^exp.  */
-#if @GNULIB_LDEXPF@
-# if !@HAVE_LDEXPF@
-#  undef ldexpf
-_GL_FUNCDECL_SYS (ldexpf, float, (float x, int exp));
-# endif
-_GL_CXXALIAS_SYS (ldexpf, float, (float x, int exp));
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (ldexpf);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef ldexpf
-# if HAVE_RAW_DECL_LDEXPF
-_GL_WARN_ON_USE (ldexpf, "ldexpf is unportable - "
-                 "use gnulib module ldexpf for portability");
-# endif
-#endif
-
-/* Return x * 2^exp.  */
-#if @GNULIB_LDEXPL@ && @REPLACE_LDEXPL@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#  undef ldexpl
-#  define ldexpl rpl_ldexpl
-# endif
-_GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp));
-_GL_CXXALIAS_RPL (ldexpl, long double, (long double x, int exp));
-#else
-# if !@HAVE_DECL_LDEXPL@
-_GL_FUNCDECL_SYS (ldexpl, long double, (long double x, int exp));
-# endif
-# if @GNULIB_LDEXPL@
-_GL_CXXALIAS_SYS (ldexpl, long double, (long double x, int exp));
-# endif
-#endif
-#if @GNULIB_LDEXPL@
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (ldexpl);
-# endif
-#endif
-#if !@GNULIB_LDEXPL@ && defined GNULIB_POSIXCHECK
-# undef ldexpl
-# if HAVE_RAW_DECL_LDEXPL
-_GL_WARN_ON_USE (ldexpl, "ldexpl is unportable - "
-                 "use gnulib module ldexpl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_LOGF@
-# if @REPLACE_LOGF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef logf
-#   define logf rpl_logf
-#  endif
-_GL_FUNCDECL_RPL (logf, float, (float x));
-_GL_CXXALIAS_RPL (logf, float, (float x));
-# else
-#  if !@HAVE_LOGF@
-#   undef logf
-_GL_FUNCDECL_SYS (logf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (logf, float, (float x));
-# endif
-_GL_CXXALIASWARN (logf);
-#elif defined GNULIB_POSIXCHECK
-# undef logf
-# if HAVE_RAW_DECL_LOGF
-_GL_WARN_ON_USE (logf, "logf is unportable - "
-                 "use gnulib module logf for portability");
-# endif
-#endif
-
-#if @GNULIB_LOG@
-# if @REPLACE_LOG@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef log
-#   define log rpl_log
-#  endif
-_GL_FUNCDECL_RPL (log, double, (double x));
-_GL_CXXALIAS_RPL (log, double, (double x));
-# else
-_GL_CXXALIAS_SYS (log, double, (double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (log, double, (double x));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef log
-# if HAVE_RAW_DECL_LOG
-_GL_WARN_ON_USE (log, "log has portability problems - "
-                 "use gnulib module log for portability");
-# endif
-#endif
-
-#if @GNULIB_LOGL@
-# if @REPLACE_LOGL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef logl
-#   define logl rpl_logl
-#  endif
-_GL_FUNCDECL_RPL (logl, long double, (long double x));
-_GL_CXXALIAS_RPL (logl, long double, (long double x));
-# else
-#  if !@HAVE_LOGL@ || !@HAVE_DECL_LOGL@
-#   undef logl
-_GL_FUNCDECL_SYS (logl, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (logl, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (logl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef logl
-# if HAVE_RAW_DECL_LOGL
-_GL_WARN_ON_USE (logl, "logl is unportable - "
-                 "use gnulib module logl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_LOG10F@
-# if @REPLACE_LOG10F@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef log10f
-#   define log10f rpl_log10f
-#  endif
-_GL_FUNCDECL_RPL (log10f, float, (float x));
-_GL_CXXALIAS_RPL (log10f, float, (float x));
-# else
-#  if !@HAVE_LOG10F@
-#   undef log10f
-_GL_FUNCDECL_SYS (log10f, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (log10f, float, (float x));
-# endif
-_GL_CXXALIASWARN (log10f);
-#elif defined GNULIB_POSIXCHECK
-# undef log10f
-# if HAVE_RAW_DECL_LOG10F
-_GL_WARN_ON_USE (log10f, "log10f is unportable - "
-                 "use gnulib module log10f for portability");
-# endif
-#endif
-
-#if @GNULIB_LOG10@
-# if @REPLACE_LOG10@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef log10
-#   define log10 rpl_log10
-#  endif
-_GL_FUNCDECL_RPL (log10, double, (double x));
-_GL_CXXALIAS_RPL (log10, double, (double x));
-# else
-_GL_CXXALIAS_SYS (log10, double, (double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (log10, double, (double x));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef log10
-# if HAVE_RAW_DECL_LOG10
-_GL_WARN_ON_USE (log10, "log10 has portability problems - "
-                 "use gnulib module log10 for portability");
-# endif
-#endif
-
-#if @GNULIB_LOG10L@
-# if @REPLACE_LOG10L@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef log10l
-#   define log10l rpl_log10l
-#  endif
-_GL_FUNCDECL_RPL (log10l, long double, (long double x));
-_GL_CXXALIAS_RPL (log10l, long double, (long double x));
-# else
-#  if !@HAVE_LOG10L@ || !@HAVE_DECL_LOG10L@
-#   undef log10l
-_GL_FUNCDECL_SYS (log10l, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (log10l, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (log10l);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef log10l
-# if HAVE_RAW_DECL_LOG10L
-_GL_WARN_ON_USE (log10l, "log10l is unportable - "
-                 "use gnulib module log10l for portability");
-# endif
-#endif
-
-
-#if @GNULIB_LOG1PF@
-# if @REPLACE_LOG1PF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef log1pf
-#   define log1pf rpl_log1pf
-#  endif
-_GL_FUNCDECL_RPL (log1pf, float, (float x));
-_GL_CXXALIAS_RPL (log1pf, float, (float x));
-# else
-#  if !@HAVE_LOG1PF@
-_GL_FUNCDECL_SYS (log1pf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (log1pf, float, (float x));
-# endif
-_GL_CXXALIASWARN (log1pf);
-#elif defined GNULIB_POSIXCHECK
-# undef log1pf
-# if HAVE_RAW_DECL_LOG1PF
-_GL_WARN_ON_USE (log1pf, "log1pf is unportable - "
-                 "use gnulib module log1pf for portability");
-# endif
-#endif
-
-#if @GNULIB_LOG1P@
-# if @REPLACE_LOG1P@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef log1p
-#   define log1p rpl_log1p
-#  endif
-_GL_FUNCDECL_RPL (log1p, double, (double x));
-_GL_CXXALIAS_RPL (log1p, double, (double x));
-# else
-#  if !@HAVE_LOG1P@
-_GL_FUNCDECL_SYS (log1p, double, (double x));
-#  endif
-_GL_CXXALIAS_SYS (log1p, double, (double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (log1p, double, (double x));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef log1p
-# if HAVE_RAW_DECL_LOG1P
-_GL_WARN_ON_USE (log1p, "log1p has portability problems - "
-                 "use gnulib module log1p for portability");
-# endif
-#endif
-
-#if @GNULIB_LOG1PL@
-# if @REPLACE_LOG1PL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef log1pl
-#   define log1pl rpl_log1pl
-#  endif
-_GL_FUNCDECL_RPL (log1pl, long double, (long double x));
-_GL_CXXALIAS_RPL (log1pl, long double, (long double x));
-# else
-#  if !@HAVE_LOG1PL@
-_GL_FUNCDECL_SYS (log1pl, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (log1pl, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (log1pl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef log1pl
-# if HAVE_RAW_DECL_LOG1PL
-_GL_WARN_ON_USE (log1pl, "log1pl has portability problems - "
-                 "use gnulib module log1pl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_LOG2F@
-# if @REPLACE_LOG2F@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef log2f
-#   define log2f rpl_log2f
-#  endif
-_GL_FUNCDECL_RPL (log2f, float, (float x));
-_GL_CXXALIAS_RPL (log2f, float, (float x));
-# else
-#  if !@HAVE_DECL_LOG2F@
-#   undef log2f
-_GL_FUNCDECL_SYS (log2f, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (log2f, float, (float x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (log2f);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef log2f
-# if HAVE_RAW_DECL_LOG2F
-_GL_WARN_ON_USE (log2f, "log2f is unportable - "
-                 "use gnulib module log2f for portability");
-# endif
-#endif
-
-#if @GNULIB_LOG2@
-# if @REPLACE_LOG2@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef log2
-#   define log2 rpl_log2
-#  endif
-_GL_FUNCDECL_RPL (log2, double, (double x));
-_GL_CXXALIAS_RPL (log2, double, (double x));
-# else
-#  if !@HAVE_DECL_LOG2@
-#   undef log2
-_GL_FUNCDECL_SYS (log2, double, (double x));
-#  endif
-_GL_CXXALIAS_SYS (log2, double, (double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (log2, double, (double x));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef log2
-# if HAVE_RAW_DECL_LOG2
-_GL_WARN_ON_USE (log2, "log2 is unportable - "
-                 "use gnulib module log2 for portability");
-# endif
-#endif
-
-#if @GNULIB_LOG2L@
-# if @REPLACE_LOG2L@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef log2l
-#   define log2l rpl_log2l
-#  endif
-_GL_FUNCDECL_RPL (log2l, long double, (long double x));
-_GL_CXXALIAS_RPL (log2l, long double, (long double x));
-# else
-#  if !@HAVE_DECL_LOG2L@
-_GL_FUNCDECL_SYS (log2l, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (log2l, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (log2l);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef log2l
-# if HAVE_RAW_DECL_LOG2L
-_GL_WARN_ON_USE (log2l, "log2l is unportable - "
-                 "use gnulib module log2l for portability");
-# endif
-#endif
-
-
-#if @GNULIB_LOGBF@
-# if @REPLACE_LOGBF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef logbf
-#   define logbf rpl_logbf
-#  endif
-_GL_FUNCDECL_RPL (logbf, float, (float x));
-_GL_CXXALIAS_RPL (logbf, float, (float x));
-# else
-#  if !@HAVE_LOGBF@
-_GL_FUNCDECL_SYS (logbf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (logbf, float, (float x));
-# endif
-_GL_CXXALIASWARN (logbf);
-#elif defined GNULIB_POSIXCHECK
-# undef logbf
-# if HAVE_RAW_DECL_LOGBF
-_GL_WARN_ON_USE (logbf, "logbf is unportable - "
-                 "use gnulib module logbf for portability");
-# endif
-#endif
-
-#if @GNULIB_LOGB@
-# if @REPLACE_LOGB@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef logb
-#   define logb rpl_logb
-#  endif
-_GL_FUNCDECL_RPL (logb, double, (double x));
-_GL_CXXALIAS_RPL (logb, double, (double x));
-# else
-#  if !@HAVE_DECL_LOGB@
-_GL_FUNCDECL_SYS (logb, double, (double x));
-#  endif
-_GL_CXXALIAS_SYS (logb, double, (double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (logb, double, (double x));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef logb
-# if HAVE_RAW_DECL_LOGB
-_GL_WARN_ON_USE (logb, "logb is unportable - "
-                 "use gnulib module logb for portability");
-# endif
-#endif
-
-#if @GNULIB_LOGBL@
-# if @REPLACE_LOGBL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef logbl
-#   define logbl rpl_logbl
-#  endif
-_GL_FUNCDECL_RPL (logbl, long double, (long double x));
-_GL_CXXALIAS_RPL (logbl, long double, (long double x));
-# else
-#  if !@HAVE_LOGBL@
-_GL_FUNCDECL_SYS (logbl, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (logbl, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (logbl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef logbl
-# if HAVE_RAW_DECL_LOGBL
-_GL_WARN_ON_USE (logbl, "logbl is unportable - "
-                 "use gnulib module logbl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_MODFF@
-# if @REPLACE_MODFF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef modff
-#   define modff rpl_modff
-#  endif
-_GL_FUNCDECL_RPL (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (modff, float, (float x, float *iptr));
-# else
-#  if !@HAVE_MODFF@
-#   undef modff
-_GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (modff, float, (float x, float *iptr));
-# endif
-_GL_CXXALIASWARN (modff);
-#elif defined GNULIB_POSIXCHECK
-# undef modff
-# if HAVE_RAW_DECL_MODFF
-_GL_WARN_ON_USE (modff, "modff is unportable - "
-                 "use gnulib module modff for portability");
-# endif
-#endif
-
-#if @GNULIB_MODF@
-# if @REPLACE_MODF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef modf
-#   define modf rpl_modf
-#  endif
-_GL_FUNCDECL_RPL (modf, double, (double x, double *iptr) _GL_ARG_NONNULL 
((2)));
-_GL_CXXALIAS_RPL (modf, double, (double x, double *iptr));
-# else
-_GL_CXXALIAS_SYS (modf, double, (double x, double *iptr));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (modf, double, (double x, double *iptr));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef modf
-# if HAVE_RAW_DECL_MODF
-_GL_WARN_ON_USE (modf, "modf has portability problems - "
-                 "use gnulib module modf for portability");
-# endif
-#endif
-
-#if @GNULIB_MODFL@
-# if @REPLACE_MODFL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef modfl
-#   define modfl rpl_modfl
-#  endif
-_GL_FUNCDECL_RPL (modfl, long double, (long double x, long double *iptr)
-                                      _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (modfl, long double, (long double x, long double *iptr));
-# else
-#  if !@HAVE_MODFL@
-#   undef modfl
-_GL_FUNCDECL_SYS (modfl, long double, (long double x, long double *iptr)
-                                      _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (modfl, long double, (long double x, long double *iptr));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (modfl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef modfl
-# if HAVE_RAW_DECL_MODFL
-_GL_WARN_ON_USE (modfl, "modfl is unportable - "
-                 "use gnulib module modfl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_POWF@
-# if !@HAVE_POWF@
-#  undef powf
-_GL_FUNCDECL_SYS (powf, float, (float x, float y));
-# endif
-_GL_CXXALIAS_SYS (powf, float, (float x, float y));
-_GL_CXXALIASWARN (powf);
-#elif defined GNULIB_POSIXCHECK
-# undef powf
-# if HAVE_RAW_DECL_POWF
-_GL_WARN_ON_USE (powf, "powf is unportable - "
-                 "use gnulib module powf for portability");
-# endif
-#endif
-
-
-#if @GNULIB_REMAINDERF@
-# if @REPLACE_REMAINDERF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef remainderf
-#   define remainderf rpl_remainderf
-#  endif
-_GL_FUNCDECL_RPL (remainderf, float, (float x, float y));
-_GL_CXXALIAS_RPL (remainderf, float, (float x, float y));
-# else
-#  if !@HAVE_REMAINDERF@
-_GL_FUNCDECL_SYS (remainderf, float, (float x, float y));
-#  endif
-_GL_CXXALIAS_SYS (remainderf, float, (float x, float y));
-# endif
-_GL_CXXALIASWARN (remainderf);
-#elif defined GNULIB_POSIXCHECK
-# undef remainderf
-# if HAVE_RAW_DECL_REMAINDERF
-_GL_WARN_ON_USE (remainderf, "remainderf is unportable - "
-                 "use gnulib module remainderf for portability");
-# endif
-#endif
-
-#if @GNULIB_REMAINDER@
-# if @REPLACE_REMAINDER@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef remainder
-#   define remainder rpl_remainder
-#  endif
-_GL_FUNCDECL_RPL (remainder, double, (double x, double y));
-_GL_CXXALIAS_RPL (remainder, double, (double x, double y));
-# else
-#  if !@HAVE_REMAINDER@ || !@HAVE_DECL_REMAINDER@
-_GL_FUNCDECL_SYS (remainder, double, (double x, double y));
-#  endif
-_GL_CXXALIAS_SYS (remainder, double, (double x, double y));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (remainder, double, (double x, double y));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef remainder
-# if HAVE_RAW_DECL_REMAINDER
-_GL_WARN_ON_USE (remainder, "remainder is unportable - "
-                 "use gnulib module remainder for portability");
-# endif
-#endif
-
-#if @GNULIB_REMAINDERL@
-# if @REPLACE_REMAINDERL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef remainderl
-#   define remainderl rpl_remainderl
-#  endif
-_GL_FUNCDECL_RPL (remainderl, long double, (long double x, long double y));
-_GL_CXXALIAS_RPL (remainderl, long double, (long double x, long double y));
-# else
-#  if !@HAVE_DECL_REMAINDERL@
-#   undef remainderl
-#   if !(defined __cplusplus && defined _AIX)
-_GL_FUNCDECL_SYS (remainderl, long double, (long double x, long double y));
-#   endif
-#  endif
-_GL_CXXALIAS_SYS (remainderl, long double, (long double x, long double y));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (remainderl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef remainderl
-# if HAVE_RAW_DECL_REMAINDERL
-_GL_WARN_ON_USE (remainderl, "remainderl is unportable - "
-                 "use gnulib module remainderl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_RINTF@
-# if !@HAVE_DECL_RINTF@
-_GL_FUNCDECL_SYS (rintf, float, (float x));
-# endif
-_GL_CXXALIAS_SYS (rintf, float, (float x));
-_GL_CXXALIASWARN (rintf);
-#elif defined GNULIB_POSIXCHECK
-# undef rintf
-# if HAVE_RAW_DECL_RINTF
-_GL_WARN_ON_USE (rintf, "rintf is unportable - "
-                 "use gnulib module rintf for portability");
-# endif
-#endif
-
-#if @GNULIB_RINT@
-# if !@HAVE_RINT@
-_GL_FUNCDECL_SYS (rint, double, (double x));
-# endif
-_GL_CXXALIAS_SYS (rint, double, (double x));
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (rint, double, (double x));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef rint
-# if HAVE_RAW_DECL_RINT
-_GL_WARN_ON_USE (rint, "rint is unportable - "
-                 "use gnulib module rint for portability");
-# endif
-#endif
-
-#if @GNULIB_RINTL@
-# if @REPLACE_RINTL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef rintl
-#   define rintl rpl_rintl
-#  endif
-_GL_FUNCDECL_RPL (rintl, long double, (long double x));
-_GL_CXXALIAS_RPL (rintl, long double, (long double x));
-# else
-#  if !@HAVE_RINTL@
-_GL_FUNCDECL_SYS (rintl, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (rintl, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (rintl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef rintl
-# if HAVE_RAW_DECL_RINTL
-_GL_WARN_ON_USE (rintl, "rintl is unportable - "
-                 "use gnulib module rintl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_ROUNDF@
-# if @REPLACE_ROUNDF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef roundf
-#   define roundf rpl_roundf
-#  endif
-_GL_FUNCDECL_RPL (roundf, float, (float x));
-_GL_CXXALIAS_RPL (roundf, float, (float x));
-# else
-#  if !@HAVE_DECL_ROUNDF@
-_GL_FUNCDECL_SYS (roundf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (roundf, float, (float x));
-# endif
-_GL_CXXALIASWARN (roundf);
-#elif defined GNULIB_POSIXCHECK
-# undef roundf
-# if HAVE_RAW_DECL_ROUNDF
-_GL_WARN_ON_USE (roundf, "roundf is unportable - "
-                 "use gnulib module roundf for portability");
-# endif
-#endif
-
-#if @GNULIB_ROUND@
-# if @REPLACE_ROUND@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef round
-#   define round rpl_round
-#  endif
-_GL_FUNCDECL_RPL (round, double, (double x));
-_GL_CXXALIAS_RPL (round, double, (double x));
-# else
-#  if !@HAVE_DECL_ROUND@
-_GL_FUNCDECL_SYS (round, double, (double x));
-#  endif
-_GL_CXXALIAS_SYS (round, double, (double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (round, double, (double x));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef round
-# if HAVE_RAW_DECL_ROUND
-_GL_WARN_ON_USE (round, "round is unportable - "
-                 "use gnulib module round for portability");
-# endif
-#endif
-
-#if @GNULIB_ROUNDL@
-# if @REPLACE_ROUNDL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef roundl
-#   define roundl rpl_roundl
-#  endif
-_GL_FUNCDECL_RPL (roundl, long double, (long double x));
-_GL_CXXALIAS_RPL (roundl, long double, (long double x));
-# else
-#  if !@HAVE_DECL_ROUNDL@
-#   undef roundl
-#   if !(defined __cplusplus && defined _AIX)
-_GL_FUNCDECL_SYS (roundl, long double, (long double x));
-#   endif
-#  endif
-_GL_CXXALIAS_SYS (roundl, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (roundl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef roundl
-# if HAVE_RAW_DECL_ROUNDL
-_GL_WARN_ON_USE (roundl, "roundl is unportable - "
-                 "use gnulib module roundl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_SINF@
-# if @REPLACE_SINF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef sinf
-#   define sinf rpl_sinf
-#  endif
-_GL_FUNCDECL_RPL (sinf, float, (float x));
-_GL_CXXALIAS_RPL (sinf, float, (float x));
-# else
-#  if !@HAVE_SINF@
-#   undef sinf
-_GL_FUNCDECL_SYS (sinf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (sinf, float, (float x));
-# endif
-_GL_CXXALIASWARN (sinf);
-#elif defined GNULIB_POSIXCHECK
-# undef sinf
-# if HAVE_RAW_DECL_SINF
-_GL_WARN_ON_USE (sinf, "sinf is unportable - "
-                 "use gnulib module sinf for portability");
-# endif
-#endif
-
-#if @GNULIB_SINL@
-# if !@HAVE_SINL@ || !@HAVE_DECL_SINL@
-#  undef sinl
-_GL_FUNCDECL_SYS (sinl, long double, (long double x));
-# endif
-_GL_CXXALIAS_SYS (sinl, long double, (long double x));
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (sinl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef sinl
-# if HAVE_RAW_DECL_SINL
-_GL_WARN_ON_USE (sinl, "sinl is unportable - "
-                 "use gnulib module sinl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_SINHF@
-# if @REPLACE_SINHF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef sinhf
-#   define sinhf rpl_sinhf
-#  endif
-_GL_FUNCDECL_RPL (sinhf, float, (float x));
-_GL_CXXALIAS_RPL (sinhf, float, (float x));
-# else
-#  if !@HAVE_SINHF@
-#   undef sinhf
-_GL_FUNCDECL_SYS (sinhf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (sinhf, float, (float x));
-# endif
-_GL_CXXALIASWARN (sinhf);
-#elif defined GNULIB_POSIXCHECK
-# undef sinhf
-# if HAVE_RAW_DECL_SINHF
-_GL_WARN_ON_USE (sinhf, "sinhf is unportable - "
-                 "use gnulib module sinhf for portability");
-# endif
-#endif
-
-
-#if @GNULIB_SQRTF@
-# if @REPLACE_SQRTF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef sqrtf
-#   define sqrtf rpl_sqrtf
-#  endif
-_GL_FUNCDECL_RPL (sqrtf, float, (float x));
-_GL_CXXALIAS_RPL (sqrtf, float, (float x));
-# else
-#  if !@HAVE_SQRTF@
-#   undef sqrtf
-_GL_FUNCDECL_SYS (sqrtf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (sqrtf, float, (float x));
-# endif
-_GL_CXXALIASWARN (sqrtf);
-#elif defined GNULIB_POSIXCHECK
-# undef sqrtf
-# if HAVE_RAW_DECL_SQRTF
-_GL_WARN_ON_USE (sqrtf, "sqrtf is unportable - "
-                 "use gnulib module sqrtf for portability");
-# endif
-#endif
-
-#if @GNULIB_SQRTL@
-# if @REPLACE_SQRTL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef sqrtl
-#   define sqrtl rpl_sqrtl
-#  endif
-_GL_FUNCDECL_RPL (sqrtl, long double, (long double x));
-_GL_CXXALIAS_RPL (sqrtl, long double, (long double x));
-# else
-#  if !@HAVE_SQRTL@ || !@HAVE_DECL_SQRTL@
-#   undef sqrtl
-_GL_FUNCDECL_SYS (sqrtl, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (sqrtl, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (sqrtl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef sqrtl
-# if HAVE_RAW_DECL_SQRTL
-_GL_WARN_ON_USE (sqrtl, "sqrtl is unportable - "
-                 "use gnulib module sqrtl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_TANF@
-# if @REPLACE_TANF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef tanf
-#   define tanf rpl_tanf
-#  endif
-_GL_FUNCDECL_RPL (tanf, float, (float x));
-_GL_CXXALIAS_RPL (tanf, float, (float x));
-# else
-#  if !@HAVE_TANF@
-#   undef tanf
-_GL_FUNCDECL_SYS (tanf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (tanf, float, (float x));
-# endif
-_GL_CXXALIASWARN (tanf);
-#elif defined GNULIB_POSIXCHECK
-# undef tanf
-# if HAVE_RAW_DECL_TANF
-_GL_WARN_ON_USE (tanf, "tanf is unportable - "
-                 "use gnulib module tanf for portability");
-# endif
-#endif
-
-#if @GNULIB_TANL@
-# if !@HAVE_TANL@ || !@HAVE_DECL_TANL@
-#  undef tanl
-_GL_FUNCDECL_SYS (tanl, long double, (long double x));
-# endif
-_GL_CXXALIAS_SYS (tanl, long double, (long double x));
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (tanl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef tanl
-# if HAVE_RAW_DECL_TANL
-_GL_WARN_ON_USE (tanl, "tanl is unportable - "
-                 "use gnulib module tanl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_TANHF@
-# if @REPLACE_TANHF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef tanhf
-#   define tanhf rpl_tanhf
-#  endif
-_GL_FUNCDECL_RPL (tanhf, float, (float x));
-_GL_CXXALIAS_RPL (tanhf, float, (float x));
-# else
-#  if !@HAVE_TANHF@
-#   undef tanhf
-_GL_FUNCDECL_SYS (tanhf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (tanhf, float, (float x));
-# endif
-_GL_CXXALIASWARN (tanhf);
-#elif defined GNULIB_POSIXCHECK
-# undef tanhf
-# if HAVE_RAW_DECL_TANHF
-_GL_WARN_ON_USE (tanhf, "tanhf is unportable - "
-                 "use gnulib module tanhf for portability");
-# endif
-#endif
-
-
-#if @GNULIB_TRUNCF@
-# if @REPLACE_TRUNCF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef truncf
-#   define truncf rpl_truncf
-#  endif
-_GL_FUNCDECL_RPL (truncf, float, (float x));
-_GL_CXXALIAS_RPL (truncf, float, (float x));
-# else
-#  if !@HAVE_DECL_TRUNCF@
-_GL_FUNCDECL_SYS (truncf, float, (float x));
-#  endif
-_GL_CXXALIAS_SYS (truncf, float, (float x));
-# endif
-_GL_CXXALIASWARN (truncf);
-#elif defined GNULIB_POSIXCHECK
-# undef truncf
-# if HAVE_RAW_DECL_TRUNCF
-_GL_WARN_ON_USE (truncf, "truncf is unportable - "
-                 "use gnulib module truncf for portability");
-# endif
-#endif
-
-#if @GNULIB_TRUNC@
-# if @REPLACE_TRUNC@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef trunc
-#   define trunc rpl_trunc
-#  endif
-_GL_FUNCDECL_RPL (trunc, double, (double x));
-_GL_CXXALIAS_RPL (trunc, double, (double x));
-# else
-#  if !@HAVE_DECL_TRUNC@
-_GL_FUNCDECL_SYS (trunc, double, (double x));
-#  endif
-_GL_CXXALIAS_SYS (trunc, double, (double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN1 (trunc, double, (double x));
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef trunc
-# if HAVE_RAW_DECL_TRUNC
-_GL_WARN_ON_USE (trunc, "trunc is unportable - "
-                 "use gnulib module trunc for portability");
-# endif
-#endif
-
-#if @GNULIB_TRUNCL@
-# if @REPLACE_TRUNCL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef truncl
-#   define truncl rpl_truncl
-#  endif
-_GL_FUNCDECL_RPL (truncl, long double, (long double x));
-_GL_CXXALIAS_RPL (truncl, long double, (long double x));
-# else
-#  if !@HAVE_DECL_TRUNCL@
-_GL_FUNCDECL_SYS (truncl, long double, (long double x));
-#  endif
-_GL_CXXALIAS_SYS (truncl, long double, (long double x));
-# endif
-# if __GLIBC__ >= 2
-_GL_CXXALIASWARN (truncl);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef truncl
-# if HAVE_RAW_DECL_TRUNCL
-_GL_WARN_ON_USE (truncl, "truncl is unportable - "
-                 "use gnulib module truncl for portability");
-# endif
-#endif
-
-
-#if @GNULIB_MDA_Y0@
-/* On native Windows, map 'y0' to '_y0', so that -loldnames is not
-   required.  In C++ with GNULIB_NAMESPACE, avoid differences between
-   platforms by defining GNULIB_NAMESPACE::y0 always.  */
-# if defined _WIN32 && !defined __CYGWIN__
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef y0
-#   define y0 _y0
-#  endif
-_GL_CXXALIAS_MDA (y0, double, (double x));
-# else
-_GL_CXXALIAS_SYS (y0, double, (double x));
-# endif
-_GL_CXXALIASWARN (y0);
-#endif
-
-#if @GNULIB_MDA_Y1@
-/* On native Windows, map 'y1' to '_y1', so that -loldnames is not
-   required.  In C++ with GNULIB_NAMESPACE, avoid differences between
-   platforms by defining GNULIB_NAMESPACE::y1 always.  */
-# if defined _WIN32 && !defined __CYGWIN__
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef y1
-#   define y1 _y1
-#  endif
-_GL_CXXALIAS_MDA (y1, double, (double x));
-# else
-_GL_CXXALIAS_SYS (y1, double, (double x));
-# endif
-_GL_CXXALIASWARN (y1);
-#endif
-
-#if @GNULIB_MDA_YN@
-/* On native Windows, map 'yn' to '_yn', so that -loldnames is not
-   required.  In C++ with GNULIB_NAMESPACE, avoid differences between
-   platforms by defining GNULIB_NAMESPACE::yn always.  */
-# if defined _WIN32 && !defined __CYGWIN__
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef yn
-#   define yn _yn
-#  endif
-_GL_CXXALIAS_MDA (yn, double, (int n, double x));
-# else
-_GL_CXXALIAS_SYS (yn, double, (int n, double x));
-# endif
-_GL_CXXALIASWARN (yn);
-#endif
-
-
-/* Definitions of function-like macros come here, after the function
-   declarations.  */
-
-
-#if @GNULIB_ISFINITE@
-# if @REPLACE_ISFINITE@
-_GL_EXTERN_C int gl_isfinitef (float x);
-_GL_EXTERN_C int gl_isfinited (double x);
-_GL_EXTERN_C int gl_isfinitel (long double x);
-#  undef isfinite
-#  define isfinite(x) \
-   (sizeof (x) == sizeof (long double) ? gl_isfinitel (x) : \
-    sizeof (x) == sizeof (double) ? gl_isfinited (x) : \
-    gl_isfinitef (x))
-# endif
-# ifdef __cplusplus
-#  if defined isfinite || defined GNULIB_NAMESPACE
-_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite)
-#   undef isfinite
-#   if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined 
__MACH__) || defined __FreeBSD__ || defined __OpenBSD__ || defined _AIX || 
(defined _WIN32 && !defined __CYGWIN__)))
-  /* This platform's <cmath> possibly defines isfinite through a set of inline
-     functions.  */
-_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite, rpl_isfinite, bool)
-#    define isfinite rpl_isfinite
-#    define GNULIB_NAMESPACE_LACKS_ISFINITE 1
-#   else
-_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite, isfinite, bool)
-#   endif
-#  endif
-# endif
-#elif defined GNULIB_POSIXCHECK
-# if defined isfinite
-_GL_WARN_REAL_FLOATING_DECL (isfinite);
-#  undef isfinite
-#  define isfinite(x) _GL_WARN_REAL_FLOATING_IMPL (isfinite, x)
-# endif
-#endif
-
-
-#if @GNULIB_ISINF@
-# if @REPLACE_ISINF@
-_GL_EXTERN_C int gl_isinff (float x);
-_GL_EXTERN_C int gl_isinfd (double x);
-_GL_EXTERN_C int gl_isinfl (long double x);
-#  undef isinf
-#  define isinf(x) \
-   (sizeof (x) == sizeof (long double) ? gl_isinfl (x) : \
-    sizeof (x) == sizeof (double) ? gl_isinfd (x) : \
-    gl_isinff (x))
-# endif
-# ifdef __cplusplus
-#  if defined isinf || defined GNULIB_NAMESPACE
-_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf)
-#   undef isinf
-#   if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined 
__MACH__) || defined __FreeBSD__ || defined __OpenBSD__ || (defined _WIN32 && 
!defined __CYGWIN__)))
-  /* This platform's <cmath> possibly defines isinf through a set of inline
-     functions.  */
-_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf, rpl_isinf, bool)
-#    define isinf rpl_isinf
-#    define GNULIB_NAMESPACE_LACKS_ISINF 1
-#   else
-_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf, isinf, bool)
-#   endif
-#  endif
-# endif
-#elif defined GNULIB_POSIXCHECK
-# if defined isinf
-_GL_WARN_REAL_FLOATING_DECL (isinf);
-#  undef isinf
-#  define isinf(x) _GL_WARN_REAL_FLOATING_IMPL (isinf, x)
-# endif
-#endif
-
-
-#if @GNULIB_ISNANF@
-/* Test for NaN for 'float' numbers.  */
-# if @HAVE_ISNANF@
-/* The original <math.h> included above provides a declaration of isnan macro
-   or (older) isnanf function.  */
-#  if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-    /* GCC >= 4.0 and clang provide a type-generic built-in for isnan.
-       GCC >= 4.0 also provides __builtin_isnanf, but clang doesn't.  */
-#   undef isnanf
-#   define isnanf(x) __builtin_isnan ((float)(x))
-#  elif defined isnan
-#   undef isnanf
-#   define isnanf(x) isnan ((float)(x))
-#  endif
-# else
-/* Test whether X is a NaN.  */
-#  undef isnanf
-#  define isnanf rpl_isnanf
-_GL_EXTERN_C int isnanf (float x);
-# endif
-#endif
-
-#if @GNULIB_ISNAND@
-/* Test for NaN for 'double' numbers.
-   This function is a gnulib extension, unlike isnan() which applied only
-   to 'double' numbers earlier but now is a type-generic macro.  */
-# if @HAVE_ISNAND@
-/* The original <math.h> included above provides a declaration of isnan
-   macro.  */
-#  if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-    /* GCC >= 4.0 and clang provide a type-generic built-in for isnan.  */
-#   undef isnand
-#   define isnand(x) __builtin_isnan ((double)(x))
-#  else
-#   undef isnand
-#   define isnand(x) isnan ((double)(x))
-#  endif
-# else
-/* Test whether X is a NaN.  */
-#  undef isnand
-#  define isnand rpl_isnand
-_GL_EXTERN_C int isnand (double x);
-# endif
-#endif
-
-#if @GNULIB_ISNANL@
-/* Test for NaN for 'long double' numbers.  */
-# if @HAVE_ISNANL@
-/* The original <math.h> included above provides a declaration of isnan
-   macro or (older) isnanl function.  */
-#  if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-    /* GCC >= 4.0 and clang provide a type-generic built-in for isnan.
-       GCC >= 4.0 also provides __builtin_isnanl, but clang doesn't.  */
-#   undef isnanl
-#   define isnanl(x) __builtin_isnan ((long double)(x))
-#  elif defined isnan
-#   undef isnanl
-#   define isnanl(x) isnan ((long double)(x))
-#  endif
-# else
-/* Test whether X is a NaN.  */
-#  undef isnanl
-#  define isnanl rpl_isnanl
-_GL_EXTERN_C int isnanl (long double x) _GL_ATTRIBUTE_CONST;
-# endif
-#endif
-
-/* This must come *after* the snippets for GNULIB_ISNANF and GNULIB_ISNANL!  */
-#if @GNULIB_ISNAN@
-# if @REPLACE_ISNAN@
-/* We can't just use the isnanf macro (e.g.) as exposed by
-   isnanf.h (e.g.) here, because those may end up being macros
-   that recursively expand back to isnan.  So use the gnulib
-   replacements for them directly. */
-#  if @HAVE_ISNANF@ && (__GNUC__ >= 4) || (__clang_major__ >= 4)
-#   define gl_isnan_f(x) __builtin_isnan ((float)(x))
-#  else
-_GL_EXTERN_C int rpl_isnanf (float x);
-#   define gl_isnan_f(x) rpl_isnanf (x)
-#  endif
-#  if @HAVE_ISNAND@ && (__GNUC__ >= 4) || (__clang_major__ >= 4)
-#   define gl_isnan_d(x) __builtin_isnan ((double)(x))
-#  else
-_GL_EXTERN_C int rpl_isnand (double x);
-#   define gl_isnan_d(x) rpl_isnand (x)
-#  endif
-#  if @HAVE_ISNANL@ && (__GNUC__ >= 4) || (__clang_major__ >= 4)
-#   define gl_isnan_l(x) __builtin_isnan ((long double)(x))
-#  else
-_GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST;
-#   define gl_isnan_l(x) rpl_isnanl (x)
-#  endif
-#  undef isnan
-#  define isnan(x) \
-   (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \
-    sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \
-    gl_isnan_f (x))
-# elif (__GNUC__ >= 4) || (__clang_major__ >= 4)
-#  undef isnan
-#  define isnan(x) \
-   (sizeof (x) == sizeof (long double) ? __builtin_isnan ((long double)(x)) : \
-    sizeof (x) == sizeof (double) ? __builtin_isnan ((double)(x)) : \
-    __builtin_isnan ((float)(x)))
-# endif
-# ifdef __cplusplus
-#  if defined isnan || defined GNULIB_NAMESPACE
-_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan)
-#   undef isnan
-#   if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined 
__MACH__ && __clang_major__ != 12) || (defined __FreeBSD__ && (__clang_major__ 
< 7 || __clang_major__ >= 11)) || defined __OpenBSD__ || (defined _WIN32 && 
!defined __CYGWIN__)))
-  /* This platform's <cmath> possibly defines isnan through a set of inline
-     functions.  */
-_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, rpl_isnan, bool)
-#    define isnan rpl_isnan
-#    define GNULIB_NAMESPACE_LACKS_ISNAN 1
-#   elif (defined __FreeBSD__ && __clang_major__ >= 14)
-  /* Neither of the two possible _GL_MATH_CXX_REAL_FLOATING_DECL_2 invocations
-     works.  Inline functions are already present in 
/usr/include/c++/v1/math.h,
-     which comes from LLVM.  */
-#    define GNULIB_NAMESPACE_LACKS_ISNAN 1
-#   else
-_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, isnan, bool)
-#   endif
-#  endif
-# else
-/* Ensure isnan is a macro.  */
-#  ifndef isnan
-#   define isnan isnan
-#  endif
-# endif
-#elif defined GNULIB_POSIXCHECK
-# if defined isnan
-_GL_WARN_REAL_FLOATING_DECL (isnan);
-#  undef isnan
-#  define isnan(x) _GL_WARN_REAL_FLOATING_IMPL (isnan, x)
-# endif
-#endif
-
-
-#if @GNULIB_SIGNBIT@
-# if (@REPLACE_SIGNBIT_USING_BUILTINS@ \
-      && (!defined __cplusplus || __cplusplus < 201103))
-#  undef signbit
-   /* GCC >= 4.0 and clang provide three built-ins for signbit.  */
-#  define signbit(x) \
-   (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
-    sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
-    __builtin_signbitf (x))
-# endif
-# if @REPLACE_SIGNBIT@ && !GNULIB_defined_signbit
-#  undef signbit
-_GL_EXTERN_C int gl_signbitf (float arg);
-_GL_EXTERN_C int gl_signbitd (double arg);
-_GL_EXTERN_C int gl_signbitl (long double arg);
-#  if (__GNUC__ >= 2 || defined __clang__) && !defined __STRICT_ANSI__
-#   define _GL_NUM_UINT_WORDS(type) \
-      ((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-#   if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined 
gl_signbitf
-#    define gl_signbitf_OPTIMIZED_MACRO
-#    define gl_signbitf(arg) \
-       ({ union { float _value;                                         \
-                  unsigned int _word[_GL_NUM_UINT_WORDS (float)];       \
-                } _m;                                                   \
-          _m._value = (arg);                                            \
-          (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1;          \
-        })
-#   endif
-#   if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined 
gl_signbitd
-#    define gl_signbitd_OPTIMIZED_MACRO
-#    define gl_signbitd(arg) \
-       ({ union { double _value;                                        \
-                  unsigned int _word[_GL_NUM_UINT_WORDS (double)];      \
-                } _m;                                                   \
-          _m._value = (arg);                                            \
-          (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1;          \
-        })
-#   endif
-#   if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT && !defined 
gl_signbitl
-#    define gl_signbitl_OPTIMIZED_MACRO
-#    define gl_signbitl(arg) \
-       ({ union { long double _value;                                   \
-                  unsigned int _word[_GL_NUM_UINT_WORDS (long double)]; \
-                } _m;                                                   \
-          _m._value = (arg);                                            \
-          (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1;        \
-        })
-#   endif
-#  endif
-#  define signbit(x) \
-   (sizeof (x) == sizeof (long double) ? gl_signbitl (x) : \
-    sizeof (x) == sizeof (double) ? gl_signbitd (x) : \
-    gl_signbitf (x))
-#  define GNULIB_defined_signbit 1
-# endif
-# ifdef __cplusplus
-#  if defined signbit || defined GNULIB_NAMESPACE
-_GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit)
-#   undef signbit
-#   if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined 
__MACH__) || defined __FreeBSD__ || defined __OpenBSD__ || defined _AIX || 
(defined _WIN32 && !defined __CYGWIN__)))
-  /* This platform's <cmath> possibly defines signbit through a set of inline
-     functions.  */
-_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit, rpl_signbit, bool)
-#    define signbit rpl_signbit
-#    define GNULIB_NAMESPACE_LACKS_SIGNBIT 1
-#   else
-_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit, signbit, bool)
-#   endif
-#  endif
-# endif
-#elif defined GNULIB_POSIXCHECK
-# if defined signbit
-_GL_WARN_REAL_FLOATING_DECL (signbit);
-#  undef signbit
-#  define signbit(x) _GL_WARN_REAL_FLOATING_IMPL (signbit, x)
-# endif
-#endif
-
-_GL_INLINE_HEADER_END
-
-#endif /* _@GUARD_PREFIX@_MATH_H */
-#endif /* _GL_INCLUDING_MATH_H */
-#endif /* _@GUARD_PREFIX@_MATH_H */
-#endif
diff --git a/lib/mini-gmp.c b/lib/mini-gmp.c
index ea037b801dc..69a72bfd460 100644
--- a/lib/mini-gmp.c
+++ b/lib/mini-gmp.c
@@ -172,12 +172,19 @@ see https://www.gnu.org/licenses/.  */
     }                                                                  \
   } while (0)
 
+/* If mp_limb_t is of size smaller than int, plain u*v implies
+   automatic promotion to *signed* int, and then multiply may overflow
+   and cause undefined behavior. Explicitly cast to unsigned int for
+   that case. */
+#define gmp_umullo_limb(u, v) \
+  ((sizeof(mp_limb_t) >= sizeof(int)) ? (u)*(v) : (unsigned int)(u) * (v))
+
 #define gmp_udiv_qrnnd_preinv(q, r, nh, nl, d, di)                     \
   do {                                                                 \
     mp_limb_t _qh, _ql, _r, _mask;                                     \
     gmp_umul_ppmm (_qh, _ql, (nh), (di));                              \
     gmp_add_ssaaaa (_qh, _ql, _qh, _ql, (nh) + 1, (nl));               \
-    _r = (nl) - _qh * (d);                                             \
+    _r = (nl) - gmp_umullo_limb (_qh, (d));                            \
     _mask = -(mp_limb_t) (_r > _ql); /* both > and >= are OK */                
\
     _qh += _mask;                                                      \
     _r += _mask & (d);                                                 \
@@ -198,7 +205,7 @@ see https://www.gnu.org/licenses/.  */
     gmp_add_ssaaaa ((q), _q0, (q), _q0, (n2), (n1));                   \
                                                                        \
     /* Compute the two most significant limbs of n - q'd */            \
-    (r1) = (n1) - (d1) * (q);                                          \
+    (r1) = (n1) - gmp_umullo_limb ((d1), (q));                         \
     gmp_sub_ddmmss ((r1), (r0), (r1), (n0), (d1), (d0));               \
     gmp_umul_ppmm (_t1, _t0, (d0), (q));                               \
     gmp_sub_ddmmss ((r1), (r0), (r1), (r0), _t1, _t0);                 \
diff --git a/lib/printf-args.c b/lib/printf-args.c
deleted file mode 100644
index b2b21aeec18..00000000000
--- a/lib/printf-args.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/* Decomposed printf argument list.
-   Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2023 Free Software
-   Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* This file can be parametrized with the following macros:
-     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
-     PRINTF_FETCHARGS   Name of the function to be defined.
-     STATIC             Set to 'static' to declare the function static.  */
-
-#ifndef PRINTF_FETCHARGS
-# include <config.h>
-#endif
-
-/* Specification.  */
-#ifndef PRINTF_FETCHARGS
-# include "printf-args.h"
-#endif
-
-/* Get INT_WIDTH.  */
-#include <limits.h>
-
-#ifdef STATIC
-STATIC
-#endif
-int
-PRINTF_FETCHARGS (va_list args, arguments *a)
-{
-  size_t i;
-  argument *ap;
-
-  for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
-    switch (ap->type)
-      {
-      case TYPE_SCHAR:
-        ap->a.a_schar = va_arg (args, /*signed char*/ int);
-        break;
-      case TYPE_UCHAR:
-        ap->a.a_uchar = va_arg (args, /*unsigned char*/ int);
-        break;
-      case TYPE_SHORT:
-        ap->a.a_short = va_arg (args, /*short*/ int);
-        break;
-      case TYPE_USHORT:
-        ap->a.a_ushort = va_arg (args, /*unsigned short*/ int);
-        break;
-      case TYPE_INT:
-        ap->a.a_int = va_arg (args, int);
-        break;
-      case TYPE_UINT:
-        ap->a.a_uint = va_arg (args, unsigned int);
-        break;
-      case TYPE_LONGINT:
-        ap->a.a_longint = va_arg (args, long int);
-        break;
-      case TYPE_ULONGINT:
-        ap->a.a_ulongint = va_arg (args, unsigned long int);
-        break;
-      case TYPE_LONGLONGINT:
-        ap->a.a_longlongint = va_arg (args, long long int);
-        break;
-      case TYPE_ULONGLONGINT:
-        ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
-        break;
-      case TYPE_INT8_T:
-        #if INT8_WIDTH < INT_WIDTH
-        ap->a.a_int8_t = va_arg (args, /* int8_t */ int);
-        #else
-        ap->a.a_int8_t = va_arg (args, int8_t);
-        #endif
-        break;
-      case TYPE_UINT8_T:
-        #if UINT8_WIDTH < INT_WIDTH
-        ap->a.a_uint8_t = va_arg (args, /* uint8_t */ int);
-        #else
-        ap->a.a_uint8_t = va_arg (args, uint8_t);
-        #endif
-        break;
-      case TYPE_INT16_T:
-        #if INT16_WIDTH < INT_WIDTH
-        ap->a.a_int16_t = va_arg (args, /* int16_t */ int);
-        #else
-        ap->a.a_int16_t = va_arg (args, int16_t);
-        #endif
-        break;
-      case TYPE_UINT16_T:
-        #if UINT16_WIDTH < INT_WIDTH
-        ap->a.a_uint16_t = va_arg (args, /* uint16_t */ int);
-        #else
-        ap->a.a_uint16_t = va_arg (args, uint16_t);
-        #endif
-        break;
-      case TYPE_INT32_T:
-        #if INT32_WIDTH < INT_WIDTH
-        ap->a.a_int32_t = va_arg (args, /* int32_t */ int);
-        #else
-        ap->a.a_int32_t = va_arg (args, int32_t);
-        #endif
-        break;
-      case TYPE_UINT32_T:
-        #if UINT32_WIDTH < INT_WIDTH
-        ap->a.a_uint32_t = va_arg (args, /* uint32_t */ int);
-        #else
-        ap->a.a_uint32_t = va_arg (args, uint32_t);
-        #endif
-        break;
-      case TYPE_INT64_T:
-        ap->a.a_int64_t = va_arg (args, int64_t);
-        break;
-      case TYPE_UINT64_T:
-        ap->a.a_uint64_t = va_arg (args, uint64_t);
-        break;
-      case TYPE_INT_FAST8_T:
-        #if INT_FAST8_WIDTH < INT_WIDTH
-        ap->a.a_int_fast8_t = va_arg (args, /* int_fast8_t */ int);
-        #else
-        ap->a.a_int_fast8_t = va_arg (args, int_fast8_t);
-        #endif
-        break;
-      case TYPE_UINT_FAST8_T:
-        #if UINT_FAST8_WIDTH < INT_WIDTH
-        ap->a.a_uint_fast8_t = va_arg (args, /* uint_fast8_t */ int);
-        #else
-        ap->a.a_uint_fast8_t = va_arg (args, uint_fast8_t);
-        #endif
-        break;
-      case TYPE_INT_FAST16_T:
-        #if INT_FAST16_WIDTH < INT_WIDTH
-        ap->a.a_int_fast16_t = va_arg (args, /* int_fast16_t */ int);
-        #else
-        ap->a.a_int_fast16_t = va_arg (args, int_fast16_t);
-        #endif
-        break;
-      case TYPE_UINT_FAST16_T:
-        #if UINT_FAST16_WIDTH < INT_WIDTH
-        ap->a.a_uint_fast16_t = va_arg (args, /* uint_fast16_t */ int);
-        #else
-        ap->a.a_uint_fast16_t = va_arg (args, uint_fast16_t);
-        #endif
-        break;
-      case TYPE_INT_FAST32_T:
-        #if INT_FAST32_WIDTH < INT_WIDTH
-        ap->a.a_int_fast32_t = va_arg (args, /* int_fast32_t */ int);
-        #else
-        ap->a.a_int_fast32_t = va_arg (args, int_fast32_t);
-        #endif
-        break;
-      case TYPE_UINT_FAST32_T:
-        #if UINT_FAST32_WIDTH < INT_WIDTH
-        ap->a.a_uint_fast32_t = va_arg (args, /* uint_fast32_t */ int);
-        #else
-        ap->a.a_uint_fast32_t = va_arg (args, uint_fast32_t);
-        #endif
-        break;
-      case TYPE_INT_FAST64_T:
-        ap->a.a_int_fast64_t = va_arg (args, int_fast64_t);
-        break;
-      case TYPE_UINT_FAST64_T:
-        ap->a.a_uint_fast64_t = va_arg (args, uint_fast64_t);
-        break;
-      case TYPE_DOUBLE:
-        ap->a.a_double = va_arg (args, double);
-        break;
-      case TYPE_LONGDOUBLE:
-        ap->a.a_longdouble = va_arg (args, long double);
-        break;
-      case TYPE_CHAR:
-        ap->a.a_char = va_arg (args, int);
-        break;
-#if HAVE_WINT_T
-      case TYPE_WIDE_CHAR:
-        /* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by
-           default argument promotions", this is not the case in mingw32,
-           where wint_t is 'unsigned short'.  */
-        ap->a.a_wide_char =
-          (sizeof (wint_t) < sizeof (int)
-           ? (wint_t) va_arg (args, int)
-           : va_arg (args, wint_t));
-        break;
-#endif
-      case TYPE_STRING:
-        ap->a.a_string = va_arg (args, const char *);
-        /* A null pointer is an invalid argument for "%s", but in practice
-           it occurs quite frequently in printf statements that produce
-           debug output.  Use a fallback in this case.  */
-        if (ap->a.a_string == NULL)
-          ap->a.a_string = "(NULL)";
-        break;
-#if HAVE_WCHAR_T
-      case TYPE_WIDE_STRING:
-        ap->a.a_wide_string = va_arg (args, const wchar_t *);
-        /* A null pointer is an invalid argument for "%ls", but in practice
-           it occurs quite frequently in printf statements that produce
-           debug output.  Use a fallback in this case.  */
-        if (ap->a.a_wide_string == NULL)
-          {
-            static const wchar_t wide_null_string[] =
-              {
-                (wchar_t)'(',
-                (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L',
-                (wchar_t)')',
-                (wchar_t)0
-              };
-            ap->a.a_wide_string = wide_null_string;
-          }
-        break;
-#endif
-      case TYPE_POINTER:
-        ap->a.a_pointer = va_arg (args, void *);
-        break;
-      case TYPE_COUNT_SCHAR_POINTER:
-        ap->a.a_count_schar_pointer = va_arg (args, signed char *);
-        break;
-      case TYPE_COUNT_SHORT_POINTER:
-        ap->a.a_count_short_pointer = va_arg (args, short *);
-        break;
-      case TYPE_COUNT_INT_POINTER:
-        ap->a.a_count_int_pointer = va_arg (args, int *);
-        break;
-      case TYPE_COUNT_LONGINT_POINTER:
-        ap->a.a_count_longint_pointer = va_arg (args, long int *);
-        break;
-      case TYPE_COUNT_LONGLONGINT_POINTER:
-        ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
-        break;
-      case TYPE_COUNT_INT8_T_POINTER:
-        ap->a.a_count_int8_t_pointer = va_arg (args, int8_t *);
-        break;
-      case TYPE_COUNT_INT16_T_POINTER:
-        ap->a.a_count_int16_t_pointer = va_arg (args, int16_t *);
-        break;
-      case TYPE_COUNT_INT32_T_POINTER:
-        ap->a.a_count_int32_t_pointer = va_arg (args, int32_t *);
-        break;
-      case TYPE_COUNT_INT64_T_POINTER:
-        ap->a.a_count_int64_t_pointer = va_arg (args, int64_t *);
-        break;
-      case TYPE_COUNT_INT_FAST8_T_POINTER:
-        ap->a.a_count_int_fast8_t_pointer = va_arg (args, int_fast8_t *);
-        break;
-      case TYPE_COUNT_INT_FAST16_T_POINTER:
-        ap->a.a_count_int_fast16_t_pointer = va_arg (args, int_fast16_t *);
-        break;
-      case TYPE_COUNT_INT_FAST32_T_POINTER:
-        ap->a.a_count_int_fast32_t_pointer = va_arg (args, int_fast32_t *);
-        break;
-      case TYPE_COUNT_INT_FAST64_T_POINTER:
-        ap->a.a_count_int_fast64_t_pointer = va_arg (args, int_fast64_t *);
-        break;
-#if ENABLE_UNISTDIO
-      /* The unistdio extensions.  */
-      case TYPE_U8_STRING:
-        ap->a.a_u8_string = va_arg (args, const uint8_t *);
-        /* A null pointer is an invalid argument for "%U", but in practice
-           it occurs quite frequently in printf statements that produce
-           debug output.  Use a fallback in this case.  */
-        if (ap->a.a_u8_string == NULL)
-          {
-            static const uint8_t u8_null_string[] =
-              { '(', 'N', 'U', 'L', 'L', ')', 0 };
-            ap->a.a_u8_string = u8_null_string;
-          }
-        break;
-      case TYPE_U16_STRING:
-        ap->a.a_u16_string = va_arg (args, const uint16_t *);
-        /* A null pointer is an invalid argument for "%lU", but in practice
-           it occurs quite frequently in printf statements that produce
-           debug output.  Use a fallback in this case.  */
-        if (ap->a.a_u16_string == NULL)
-          {
-            static const uint16_t u16_null_string[] =
-              { '(', 'N', 'U', 'L', 'L', ')', 0 };
-            ap->a.a_u16_string = u16_null_string;
-          }
-        break;
-      case TYPE_U32_STRING:
-        ap->a.a_u32_string = va_arg (args, const uint32_t *);
-        /* A null pointer is an invalid argument for "%llU", but in practice
-           it occurs quite frequently in printf statements that produce
-           debug output.  Use a fallback in this case.  */
-        if (ap->a.a_u32_string == NULL)
-          {
-            static const uint32_t u32_null_string[] =
-              { '(', 'N', 'U', 'L', 'L', ')', 0 };
-            ap->a.a_u32_string = u32_null_string;
-          }
-        break;
-#endif
-      default:
-        /* Unknown type.  */
-        return -1;
-      }
-  return 0;
-}
diff --git a/lib/printf-args.h b/lib/printf-args.h
deleted file mode 100644
index 11016102828..00000000000
--- a/lib/printf-args.h
+++ /dev/null
@@ -1,205 +0,0 @@
-/* Decomposed printf argument list.
-   Copyright (C) 1999, 2002-2003, 2006-2007, 2011-2023 Free Software
-   Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#ifndef _PRINTF_ARGS_H
-#define _PRINTF_ARGS_H
-
-/* This file can be parametrized with the following macros:
-     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
-     PRINTF_FETCHARGS   Name of the function to be declared.
-     STATIC             Set to 'static' to declare the function static.  */
-
-/* Default parameters.  */
-#ifndef PRINTF_FETCHARGS
-# define PRINTF_FETCHARGS printf_fetchargs
-#endif
-
-/* Get size_t.  */
-#include <stddef.h>
-
-/* Get wchar_t.  */
-#if HAVE_WCHAR_T
-# include <stddef.h>
-#endif
-
-/* Get wint_t.  */
-#if HAVE_WINT_T
-# include <wchar.h>
-#endif
-
-/* Get intN_t, uintN_t, intN_fast_t, uintN_fast_t.  */
-#include <stdint.h>
-
-/* Get va_list.  */
-#include <stdarg.h>
-
-
-/* Argument types */
-typedef enum
-{
-  TYPE_NONE,
-  TYPE_SCHAR,
-  TYPE_UCHAR,
-  TYPE_SHORT,
-  TYPE_USHORT,
-  TYPE_INT,
-  TYPE_UINT,
-  TYPE_LONGINT,
-  TYPE_ULONGINT,
-  TYPE_LONGLONGINT,
-  TYPE_ULONGLONGINT,
-  /* According to ISO C 23 § 7.23.6.1, "all exact-width integer types",
-     "all minimum-width integer types", and "all fastest minimum-width integer
-     types" defined in <stdint.h> should be supported.  But for portability
-     between platforms, we support only those with N = 8, 16, 32, 64.  */
-  TYPE_INT8_T,
-  TYPE_UINT8_T,
-  TYPE_INT16_T,
-  TYPE_UINT16_T,
-  TYPE_INT32_T,
-  TYPE_UINT32_T,
-  TYPE_INT64_T,
-  TYPE_UINT64_T,
-  TYPE_INT_FAST8_T,
-  TYPE_UINT_FAST8_T,
-  TYPE_INT_FAST16_T,
-  TYPE_UINT_FAST16_T,
-  TYPE_INT_FAST32_T,
-  TYPE_UINT_FAST32_T,
-  TYPE_INT_FAST64_T,
-  TYPE_UINT_FAST64_T,
-  TYPE_DOUBLE,
-  TYPE_LONGDOUBLE,
-  TYPE_CHAR,
-#if HAVE_WINT_T
-  TYPE_WIDE_CHAR,
-#endif
-  TYPE_STRING,
-#if HAVE_WCHAR_T
-  TYPE_WIDE_STRING,
-#endif
-  TYPE_POINTER,
-  TYPE_COUNT_SCHAR_POINTER,
-  TYPE_COUNT_SHORT_POINTER,
-  TYPE_COUNT_INT_POINTER,
-  TYPE_COUNT_LONGINT_POINTER,
-  TYPE_COUNT_LONGLONGINT_POINTER,
-  TYPE_COUNT_INT8_T_POINTER,
-  TYPE_COUNT_INT16_T_POINTER,
-  TYPE_COUNT_INT32_T_POINTER,
-  TYPE_COUNT_INT64_T_POINTER,
-  TYPE_COUNT_INT_FAST8_T_POINTER,
-  TYPE_COUNT_INT_FAST16_T_POINTER,
-  TYPE_COUNT_INT_FAST32_T_POINTER,
-  TYPE_COUNT_INT_FAST64_T_POINTER
-#if ENABLE_UNISTDIO
-  /* The unistdio extensions.  */
-, TYPE_U8_STRING
-, TYPE_U16_STRING
-, TYPE_U32_STRING
-#endif
-} arg_type;
-
-/* Polymorphic argument */
-typedef struct
-{
-  arg_type type;
-  union
-  {
-    signed char                 a_schar;
-    unsigned char               a_uchar;
-    short                       a_short;
-    unsigned short              a_ushort;
-    int                         a_int;
-    unsigned int                a_uint;
-    long int                    a_longint;
-    unsigned long int           a_ulongint;
-    long long int               a_longlongint;
-    unsigned long long int      a_ulonglongint;
-    int8_t                      a_int8_t;
-    uint8_t                     a_uint8_t;
-    int16_t                     a_int16_t;
-    uint16_t                    a_uint16_t;
-    int32_t                     a_int32_t;
-    uint32_t                    a_uint32_t;
-    int64_t                     a_int64_t;
-    uint64_t                    a_uint64_t;
-    int_fast8_t                 a_int_fast8_t;
-    uint_fast8_t                a_uint_fast8_t;
-    int_fast16_t                a_int_fast16_t;
-    uint_fast16_t               a_uint_fast16_t;
-    int_fast32_t                a_int_fast32_t;
-    uint_fast32_t               a_uint_fast32_t;
-    int_fast64_t                a_int_fast64_t;
-    uint_fast64_t               a_uint_fast64_t;
-    float                       a_float;                     /* unused */
-    double                      a_double;
-    long double                 a_longdouble;
-    int                         a_char;
-#if HAVE_WINT_T
-    wint_t                      a_wide_char;
-#endif
-    const char*                 a_string;
-#if HAVE_WCHAR_T
-    const wchar_t*              a_wide_string;
-#endif
-    void*                       a_pointer;
-    signed char *               a_count_schar_pointer;
-    short *                     a_count_short_pointer;
-    int *                       a_count_int_pointer;
-    long int *                  a_count_longint_pointer;
-    long long int *             a_count_longlongint_pointer;
-    int8_t *                    a_count_int8_t_pointer;
-    int16_t *                   a_count_int16_t_pointer;
-    int32_t *                   a_count_int32_t_pointer;
-    int64_t *                   a_count_int64_t_pointer;
-    int_fast8_t *               a_count_int_fast8_t_pointer;
-    int_fast16_t *              a_count_int_fast16_t_pointer;
-    int_fast32_t *              a_count_int_fast32_t_pointer;
-    int_fast64_t *              a_count_int_fast64_t_pointer;
-#if ENABLE_UNISTDIO
-    /* The unistdio extensions.  */
-    const uint8_t *             a_u8_string;
-    const uint16_t *            a_u16_string;
-    const uint32_t *            a_u32_string;
-#endif
-  }
-  a;
-}
-argument;
-
-/* Number of directly allocated arguments (no malloc() needed).  */
-#define N_DIRECT_ALLOC_ARGUMENTS 7
-
-typedef struct
-{
-  size_t count;
-  argument *arg;
-  argument direct_alloc_arg[N_DIRECT_ALLOC_ARGUMENTS];
-}
-arguments;
-
-
-/* Fetch the arguments, putting them into a. */
-#ifdef STATIC
-STATIC
-#else
-extern
-#endif
-int PRINTF_FETCHARGS (va_list args, arguments *a);
-
-#endif /* _PRINTF_ARGS_H */
diff --git a/lib/printf-frexp.c b/lib/printf-frexp.c
deleted file mode 100644
index 8252b0656cb..00000000000
--- a/lib/printf-frexp.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/* Split a double into fraction and mantissa, for hexadecimal printf.
-   Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#if ! defined USE_LONG_DOUBLE
-# include <config.h>
-#endif
-
-/* Specification.  */
-#ifdef USE_LONG_DOUBLE
-# include "printf-frexpl.h"
-#else
-# include "printf-frexp.h"
-#endif
-
-#include <float.h>
-#include <math.h>
-#ifdef USE_LONG_DOUBLE
-# include "fpucw.h"
-#endif
-
-/* This file assumes FLT_RADIX = 2.  If FLT_RADIX is a power of 2 greater
-   than 2, or not even a power of 2, some rounding errors can occur, so that
-   then the returned mantissa is only guaranteed to be <= 2.0, not < 2.0.  */
-
-#ifdef USE_LONG_DOUBLE
-# define FUNC printf_frexpl
-# define DOUBLE long double
-# define MIN_EXP LDBL_MIN_EXP
-# if HAVE_FREXPL_IN_LIBC && HAVE_LDEXPL_IN_LIBC
-#  define USE_FREXP_LDEXP
-#  define FREXP frexpl
-#  define LDEXP ldexpl
-# endif
-# define DECL_ROUNDING DECL_LONG_DOUBLE_ROUNDING
-# define BEGIN_ROUNDING() BEGIN_LONG_DOUBLE_ROUNDING ()
-# define END_ROUNDING() END_LONG_DOUBLE_ROUNDING ()
-# define L_(literal) literal##L
-#else
-# define FUNC printf_frexp
-# define DOUBLE double
-# define MIN_EXP DBL_MIN_EXP
-# if HAVE_FREXP_IN_LIBC && HAVE_LDEXP_IN_LIBC
-#  define USE_FREXP_LDEXP
-#  define FREXP frexp
-#  define LDEXP ldexp
-# endif
-# define DECL_ROUNDING
-# define BEGIN_ROUNDING()
-# define END_ROUNDING()
-# define L_(literal) literal
-#endif
-
-DOUBLE
-FUNC (DOUBLE x, int *expptr)
-{
-  int exponent;
-  DECL_ROUNDING
-
-  BEGIN_ROUNDING ();
-
-#ifdef USE_FREXP_LDEXP
-  /* frexp and ldexp are usually faster than the loop below.  */
-  x = FREXP (x, &exponent);
-
-  x = x + x;
-  exponent -= 1;
-
-  if (exponent < MIN_EXP - 1)
-    {
-      x = LDEXP (x, exponent - (MIN_EXP - 1));
-      exponent = MIN_EXP - 1;
-    }
-#else
-  {
-    /* Since the exponent is an 'int', it fits in 64 bits.  Therefore the
-       loops are executed no more than 64 times.  */
-    DOUBLE pow2[64]; /* pow2[i] = 2^2^i */
-    DOUBLE powh[64]; /* powh[i] = 2^-2^i */
-    int i;
-
-    exponent = 0;
-    if (x >= L_(1.0))
-      {
-        /* A nonnegative exponent.  */
-        {
-          DOUBLE pow2_i; /* = pow2[i] */
-          DOUBLE powh_i; /* = powh[i] */
-
-          /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i,
-             x * 2^exponent = argument, x >= 1.0.  */
-          for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5);
-               ;
-               i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i)
-            {
-              if (x >= pow2_i)
-                {
-                  exponent += (1 << i);
-                  x *= powh_i;
-                }
-              else
-                break;
-
-              pow2[i] = pow2_i;
-              powh[i] = powh_i;
-            }
-        }
-        /* Here 1.0 <= x < 2^2^i.  */
-      }
-    else
-      {
-        /* A negative exponent.  */
-        {
-          DOUBLE pow2_i; /* = pow2[i] */
-          DOUBLE powh_i; /* = powh[i] */
-
-          /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i,
-             x * 2^exponent = argument, x < 1.0, exponent >= MIN_EXP - 1.  */
-          for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5);
-               ;
-               i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i)
-            {
-              if (exponent - (1 << i) < MIN_EXP - 1)
-                break;
-
-              exponent -= (1 << i);
-              x *= pow2_i;
-              if (x >= L_(1.0))
-                break;
-
-              pow2[i] = pow2_i;
-              powh[i] = powh_i;
-            }
-        }
-        /* Here either x < 1.0 and exponent - 2^i < MIN_EXP - 1 <= exponent,
-           or 1.0 <= x < 2^2^i and exponent >= MIN_EXP - 1.  */
-
-        if (x < L_(1.0))
-          /* Invariants: x * 2^exponent = argument, x < 1.0 and
-             exponent - 2^i < MIN_EXP - 1 <= exponent.  */
-          while (i > 0)
-            {
-              i--;
-              if (exponent - (1 << i) >= MIN_EXP - 1)
-                {
-                  exponent -= (1 << i);
-                  x *= pow2[i];
-                  if (x >= L_(1.0))
-                    break;
-                }
-            }
-
-        /* Here either x < 1.0 and exponent = MIN_EXP - 1,
-           or 1.0 <= x < 2^2^i and exponent >= MIN_EXP - 1.  */
-      }
-
-    /* Invariants: x * 2^exponent = argument, and
-       either x < 1.0 and exponent = MIN_EXP - 1,
-       or 1.0 <= x < 2^2^i and exponent >= MIN_EXP - 1.  */
-    while (i > 0)
-      {
-        i--;
-        if (x >= pow2[i])
-          {
-            exponent += (1 << i);
-            x *= powh[i];
-          }
-      }
-    /* Here either x < 1.0 and exponent = MIN_EXP - 1,
-       or 1.0 <= x < 2.0 and exponent >= MIN_EXP - 1.  */
-  }
-#endif
-
-  END_ROUNDING ();
-
-  *expptr = exponent;
-  return x;
-}
diff --git a/lib/printf-frexp.h b/lib/printf-frexp.h
deleted file mode 100644
index 7c3f9e585db..00000000000
--- a/lib/printf-frexp.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Split a double into fraction and mantissa, for hexadecimal printf.
-   Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* Write a finite, positive number x as
-     x = mantissa * 2^exp
-   where exp >= DBL_MIN_EXP - 1,
-         mantissa < 2.0,
-         if x is not a denormalized number then mantissa >= 1.0.
-   Store exp in *EXPPTR and return mantissa.  */
-extern double printf_frexp (double x, int *expptr);
diff --git a/lib/printf-frexpl.c b/lib/printf-frexpl.c
deleted file mode 100644
index ba7b579b987..00000000000
--- a/lib/printf-frexpl.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Split a 'long double' into fraction and mantissa, for hexadecimal printf.
-   Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
-
-/* Specification.  */
-# include "printf-frexpl.h"
-
-# include "printf-frexp.h"
-
-long double
-printf_frexpl (long double x, int *expptr)
-{
-  return printf_frexp (x, expptr);
-}
-
-#else
-
-# define USE_LONG_DOUBLE
-# include "printf-frexp.c"
-
-#endif
diff --git a/lib/printf-frexpl.h b/lib/printf-frexpl.h
deleted file mode 100644
index 827443ec579..00000000000
--- a/lib/printf-frexpl.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Split a 'long double' into fraction and mantissa, for hexadecimal printf.
-   Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* Write a finite, positive number x as
-     x = mantissa * 2^exp
-   where exp >= LDBL_MIN_EXP - 1,
-         mantissa < 2.0,
-         if x is not a denormalized number then mantissa >= 1.0.
-   Store exp in *EXPPTR and return mantissa.  */
-extern long double printf_frexpl (long double x, int *expptr);
diff --git a/lib/printf-parse.c b/lib/printf-parse.c
deleted file mode 100644
index d3f2c3cb5d1..00000000000
--- a/lib/printf-parse.c
+++ /dev/null
@@ -1,714 +0,0 @@
-/* Formatted output to strings.
-   Copyright (C) 1999-2000, 2002-2003, 2006-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* This file can be parametrized with the following macros:
-     CHAR_T             The element type of the format string.
-     CHAR_T_ONLY_ASCII  Set to 1 to enable verification that all characters
-                        in the format string are ASCII.
-     DIRECTIVE          Structure denoting a format directive.
-                        Depends on CHAR_T.
-     DIRECTIVES         Structure denoting the set of format directives of a
-                        format string.  Depends on CHAR_T.
-     PRINTF_PARSE       Function that parses a format string.
-                        Depends on CHAR_T.
-     STATIC             Set to 'static' to declare the function static.
-     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.  */
-
-#ifndef PRINTF_PARSE
-# include <config.h>
-#endif
-
-/* Specification.  */
-#ifndef PRINTF_PARSE
-# include "printf-parse.h"
-#endif
-
-/* Default parameters.  */
-#ifndef PRINTF_PARSE
-# define PRINTF_PARSE printf_parse
-# define CHAR_T char
-# define DIRECTIVE char_directive
-# define DIRECTIVES char_directives
-#endif
-
-/* Get size_t, NULL.  */
-#include <stddef.h>
-
-/* Get intmax_t.  */
-#include <stdint.h>
-
-/* malloc(), realloc(), free().  */
-#include <stdlib.h>
-
-/* memcpy().  */
-#include <string.h>
-
-/* errno.  */
-#include <errno.h>
-
-/* Checked size_t computations.  */
-#include "xsize.h"
-
-#if CHAR_T_ONLY_ASCII
-/* c_isascii().  */
-# include "c-ctype.h"
-#endif
-
-#ifdef STATIC
-STATIC
-#endif
-int
-PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
-{
-  const CHAR_T *cp = format;    /* pointer into format */
-  size_t arg_posn = 0;          /* number of regular arguments consumed */
-  size_t d_allocated;           /* allocated elements of d->dir */
-  size_t a_allocated;           /* allocated elements of a->arg */
-  size_t max_width_length = 0;
-  size_t max_precision_length = 0;
-
-  d->count = 0;
-  d_allocated = N_DIRECT_ALLOC_DIRECTIVES;
-  d->dir = d->direct_alloc_dir;
-
-  a->count = 0;
-  a_allocated = N_DIRECT_ALLOC_ARGUMENTS;
-  a->arg = a->direct_alloc_arg;
-
-#define REGISTER_ARG(_index_,_type_) \
-  {                                                                     \
-    size_t n = (_index_);                                               \
-    if (n >= a_allocated)                                               \
-      {                                                                 \
-        size_t memory_size;                                             \
-        argument *memory;                                               \
-                                                                        \
-        a_allocated = xtimes (a_allocated, 2);                          \
-        if (a_allocated <= n)                                           \
-          a_allocated = xsum (n, 1);                                    \
-        memory_size = xtimes (a_allocated, sizeof (argument));          \
-        if (size_overflow_p (memory_size))                              \
-          /* Overflow, would lead to out of memory.  */                 \
-          goto out_of_memory;                                           \
-        memory = (argument *) (a->arg != a->direct_alloc_arg            \
-                               ? realloc (a->arg, memory_size)          \
-                               : malloc (memory_size));                 \
-        if (memory == NULL)                                             \
-          /* Out of memory.  */                                         \
-          goto out_of_memory;                                           \
-        if (a->arg == a->direct_alloc_arg)                              \
-          memcpy (memory, a->arg, a->count * sizeof (argument));        \
-        a->arg = memory;                                                \
-      }                                                                 \
-    while (a->count <= n)                                               \
-      a->arg[a->count++].type = TYPE_NONE;                              \
-    if (a->arg[n].type == TYPE_NONE)                                    \
-      a->arg[n].type = (_type_);                                        \
-    else if (a->arg[n].type != (_type_))                                \
-      /* Ambiguous type for positional argument.  */                    \
-      goto error;                                                       \
-  }
-
-  while (*cp != '\0')
-    {
-      CHAR_T c = *cp++;
-      if (c == '%')
-        {
-          size_t arg_index = ARG_NONE;
-          DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */
-
-          /* Initialize the next directive.  */
-          dp->dir_start = cp - 1;
-          dp->flags = 0;
-          dp->width_start = NULL;
-          dp->width_end = NULL;
-          dp->width_arg_index = ARG_NONE;
-          dp->precision_start = NULL;
-          dp->precision_end = NULL;
-          dp->precision_arg_index = ARG_NONE;
-          dp->arg_index = ARG_NONE;
-
-          /* Test for positional argument.  */
-          if (*cp >= '0' && *cp <= '9')
-            {
-              const CHAR_T *np;
-
-              for (np = cp; *np >= '0' && *np <= '9'; np++)
-                ;
-              if (*np == '$')
-                {
-                  size_t n = 0;
-
-                  for (np = cp; *np >= '0' && *np <= '9'; np++)
-                    n = xsum (xtimes (n, 10), *np - '0');
-                  if (n == 0)
-                    /* Positional argument 0.  */
-                    goto error;
-                  if (size_overflow_p (n))
-                    /* n too large, would lead to out of memory later.  */
-                    goto error;
-                  arg_index = n - 1;
-                  cp = np + 1;
-                }
-            }
-
-          /* Read the flags.  */
-          for (;;)
-            {
-              if (*cp == '\'')
-                {
-                  dp->flags |= FLAG_GROUP;
-                  cp++;
-                }
-              else if (*cp == '-')
-                {
-                  dp->flags |= FLAG_LEFT;
-                  cp++;
-                }
-              else if (*cp == '+')
-                {
-                  dp->flags |= FLAG_SHOWSIGN;
-                  cp++;
-                }
-              else if (*cp == ' ')
-                {
-                  dp->flags |= FLAG_SPACE;
-                  cp++;
-                }
-              else if (*cp == '#')
-                {
-                  dp->flags |= FLAG_ALT;
-                  cp++;
-                }
-              else if (*cp == '0')
-                {
-                  dp->flags |= FLAG_ZERO;
-                  cp++;
-                }
-#if __GLIBC__ >= 2 && !defined __UCLIBC__
-              else if (*cp == 'I')
-                {
-                  dp->flags |= FLAG_LOCALIZED;
-                  cp++;
-                }
-#endif
-              else
-                break;
-            }
-
-          /* Parse the field width.  */
-          if (*cp == '*')
-            {
-              dp->width_start = cp;
-              cp++;
-              dp->width_end = cp;
-              if (max_width_length < 1)
-                max_width_length = 1;
-
-              /* Test for positional argument.  */
-              if (*cp >= '0' && *cp <= '9')
-                {
-                  const CHAR_T *np;
-
-                  for (np = cp; *np >= '0' && *np <= '9'; np++)
-                    ;
-                  if (*np == '$')
-                    {
-                      size_t n = 0;
-
-                      for (np = cp; *np >= '0' && *np <= '9'; np++)
-                        n = xsum (xtimes (n, 10), *np - '0');
-                      if (n == 0)
-                        /* Positional argument 0.  */
-                        goto error;
-                      if (size_overflow_p (n))
-                        /* n too large, would lead to out of memory later.  */
-                        goto error;
-                      dp->width_arg_index = n - 1;
-                      cp = np + 1;
-                    }
-                }
-              if (dp->width_arg_index == ARG_NONE)
-                {
-                  dp->width_arg_index = arg_posn++;
-                  if (dp->width_arg_index == ARG_NONE)
-                    /* arg_posn wrapped around.  */
-                    goto error;
-                }
-              REGISTER_ARG (dp->width_arg_index, TYPE_INT);
-            }
-          else if (*cp >= '0' && *cp <= '9')
-            {
-              size_t width_length;
-
-              dp->width_start = cp;
-              for (; *cp >= '0' && *cp <= '9'; cp++)
-                ;
-              dp->width_end = cp;
-              width_length = dp->width_end - dp->width_start;
-              if (max_width_length < width_length)
-                max_width_length = width_length;
-            }
-
-          /* Parse the precision.  */
-          if (*cp == '.')
-            {
-              cp++;
-              if (*cp == '*')
-                {
-                  dp->precision_start = cp - 1;
-                  cp++;
-                  dp->precision_end = cp;
-                  if (max_precision_length < 2)
-                    max_precision_length = 2;
-
-                  /* Test for positional argument.  */
-                  if (*cp >= '0' && *cp <= '9')
-                    {
-                      const CHAR_T *np;
-
-                      for (np = cp; *np >= '0' && *np <= '9'; np++)
-                        ;
-                      if (*np == '$')
-                        {
-                          size_t n = 0;
-
-                          for (np = cp; *np >= '0' && *np <= '9'; np++)
-                            n = xsum (xtimes (n, 10), *np - '0');
-                          if (n == 0)
-                            /* Positional argument 0.  */
-                            goto error;
-                          if (size_overflow_p (n))
-                            /* n too large, would lead to out of memory
-                               later.  */
-                            goto error;
-                          dp->precision_arg_index = n - 1;
-                          cp = np + 1;
-                        }
-                    }
-                  if (dp->precision_arg_index == ARG_NONE)
-                    {
-                      dp->precision_arg_index = arg_posn++;
-                      if (dp->precision_arg_index == ARG_NONE)
-                        /* arg_posn wrapped around.  */
-                        goto error;
-                    }
-                  REGISTER_ARG (dp->precision_arg_index, TYPE_INT);
-                }
-              else
-                {
-                  size_t precision_length;
-
-                  dp->precision_start = cp - 1;
-                  for (; *cp >= '0' && *cp <= '9'; cp++)
-                    ;
-                  dp->precision_end = cp;
-                  precision_length = dp->precision_end - dp->precision_start;
-                  if (max_precision_length < precision_length)
-                    max_precision_length = precision_length;
-                }
-            }
-
-          {
-            arg_type type;
-
-            /* Parse argument type/size specifiers.  */
-            /* Relevant for the conversion characters d, i.  */
-            arg_type signed_type = TYPE_INT;
-            /* Relevant for the conversion characters b, o, u, x, X.  */
-            arg_type unsigned_type = TYPE_UINT;
-            /* Relevant for the conversion characters n.  */
-            arg_type pointer_type = TYPE_COUNT_INT_POINTER;
-            /* Relevant for the conversion characters a, A, e, E, f, F, g, G.  
*/
-            arg_type floatingpoint_type = TYPE_DOUBLE;
-
-            if (*cp == 'h')
-              {
-                if (cp[1] == 'h')
-                  {
-                    signed_type = TYPE_SCHAR;
-                    unsigned_type = TYPE_UCHAR;
-                    pointer_type = TYPE_COUNT_SCHAR_POINTER;
-                    cp += 2;
-                  }
-                else
-                  {
-                    signed_type = TYPE_SHORT;
-                    unsigned_type = TYPE_USHORT;
-                    pointer_type = TYPE_COUNT_SHORT_POINTER;
-                    cp++;
-                  }
-              }
-            else if (*cp == 'l')
-              {
-                if (cp[1] == 'l')
-                  {
-                    signed_type = TYPE_LONGLONGINT;
-                    unsigned_type = TYPE_ULONGLONGINT;
-                    pointer_type = TYPE_COUNT_LONGLONGINT_POINTER;
-                    /* For backward compatibility only.  */
-                    floatingpoint_type = TYPE_LONGDOUBLE;
-                    cp += 2;
-                  }
-                else
-                  {
-                    signed_type = TYPE_LONGINT;
-                    unsigned_type = TYPE_ULONGINT;
-                    pointer_type = TYPE_COUNT_LONGINT_POINTER;
-                    cp++;
-                  }
-              }
-            else if (*cp == 'j')
-              {
-                if (sizeof (intmax_t) > sizeof (long))
-                  {
-                    /* intmax_t = long long */
-                    signed_type = TYPE_LONGLONGINT;
-                    unsigned_type = TYPE_ULONGLONGINT;
-                    pointer_type = TYPE_COUNT_LONGLONGINT_POINTER;
-                    /* For backward compatibility only.  */
-                    floatingpoint_type = TYPE_LONGDOUBLE;
-                  }
-                else if (sizeof (intmax_t) > sizeof (int))
-                  {
-                    /* intmax_t = long */
-                    signed_type = TYPE_LONGINT;
-                    unsigned_type = TYPE_ULONGINT;
-                    pointer_type = TYPE_COUNT_LONGINT_POINTER;
-                  }
-                cp++;
-              }
-            else if (*cp == 'z' || *cp == 'Z')
-              {
-                /* 'z' is standardized in ISO C 99, but glibc uses 'Z'
-                   because the warning facility in gcc-2.95.2 understands
-                   only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784).  */
-                if (sizeof (size_t) > sizeof (long))
-                  {
-                    /* size_t = unsigned long long */
-                    signed_type = TYPE_LONGLONGINT;
-                    unsigned_type = TYPE_ULONGLONGINT;
-                    pointer_type = TYPE_COUNT_LONGLONGINT_POINTER;
-                    /* For backward compatibility only.  */
-                    floatingpoint_type = TYPE_LONGDOUBLE;
-                  }
-                else if (sizeof (size_t) > sizeof (int))
-                  {
-                    /* size_t = unsigned long */
-                    signed_type = TYPE_LONGINT;
-                    unsigned_type = TYPE_ULONGINT;
-                    pointer_type = TYPE_COUNT_LONGINT_POINTER;
-                  }
-                cp++;
-              }
-            else if (*cp == 't')
-              {
-                if (sizeof (ptrdiff_t) > sizeof (long))
-                  {
-                    /* ptrdiff_t = long long */
-                    signed_type = TYPE_LONGLONGINT;
-                    unsigned_type = TYPE_ULONGLONGINT;
-                    pointer_type = TYPE_COUNT_LONGLONGINT_POINTER;
-                    /* For backward compatibility only.  */
-                    floatingpoint_type = TYPE_LONGDOUBLE;
-                  }
-                else if (sizeof (ptrdiff_t) > sizeof (int))
-                  {
-                    /* ptrdiff_t = long */
-                    signed_type = TYPE_LONGINT;
-                    unsigned_type = TYPE_ULONGINT;
-                    pointer_type = TYPE_COUNT_LONGINT_POINTER;
-                  }
-                cp++;
-              }
-            else if (*cp == 'w')
-              {
-                /* wN and wfN are standardized in ISO C 23.  */
-                if (cp[1] == 'f')
-                  {
-                    if (cp[2] == '8')
-                      {
-                        signed_type = TYPE_INT_FAST8_T;
-                        unsigned_type = TYPE_UINT_FAST8_T;
-                        pointer_type = TYPE_COUNT_INT_FAST8_T_POINTER;
-                        cp += 3;
-                      }
-                    else if (cp[2] == '1' && cp[3] == '6')
-                      {
-                        signed_type = TYPE_INT_FAST16_T;
-                        unsigned_type = TYPE_UINT_FAST16_T;
-                        pointer_type = TYPE_COUNT_INT_FAST16_T_POINTER;
-                        cp += 4;
-                      }
-                    else if (cp[2] == '3' && cp[3] == '2')
-                      {
-                        signed_type = TYPE_INT_FAST32_T;
-                        unsigned_type = TYPE_UINT_FAST32_T;
-                        pointer_type = TYPE_COUNT_INT_FAST32_T_POINTER;
-                        cp += 4;
-                      }
-                    else if (cp[2] == '6' && cp[3] == '4')
-                      {
-                        signed_type = TYPE_INT_FAST64_T;
-                        unsigned_type = TYPE_UINT_FAST64_T;
-                        pointer_type = TYPE_COUNT_INT_FAST64_T_POINTER;
-                        cp += 4;
-                      }
-                  }
-                else
-                  {
-                    if (cp[1] == '8')
-                      {
-                        signed_type = TYPE_INT8_T;
-                        unsigned_type = TYPE_UINT8_T;
-                        pointer_type = TYPE_COUNT_INT8_T_POINTER;
-                        cp += 2;
-                      }
-                    else if (cp[1] == '1' && cp[2] == '6')
-                      {
-                        signed_type = TYPE_INT16_T;
-                        unsigned_type = TYPE_UINT16_T;
-                        pointer_type = TYPE_COUNT_INT16_T_POINTER;
-                        cp += 3;
-                      }
-                    else if (cp[1] == '3' && cp[2] == '2')
-                      {
-                        signed_type = TYPE_INT32_T;
-                        unsigned_type = TYPE_UINT32_T;
-                        pointer_type = TYPE_COUNT_INT32_T_POINTER;
-                        cp += 3;
-                      }
-                    else if (cp[1] == '6' && cp[2] == '4')
-                      {
-                        signed_type = TYPE_INT64_T;
-                        unsigned_type = TYPE_UINT64_T;
-                        pointer_type = TYPE_COUNT_INT64_T_POINTER;
-                        cp += 3;
-                      }
-                  }
-              }
-            else if (*cp == 'L')
-              {
-                signed_type = TYPE_LONGLONGINT;
-                unsigned_type = TYPE_ULONGLONGINT;
-                pointer_type = TYPE_COUNT_LONGLONGINT_POINTER;
-                floatingpoint_type = TYPE_LONGDOUBLE;
-                cp++;
-              }
-#if defined __APPLE__ && defined __MACH__
-            /* On Mac OS X 10.3, PRIdMAX is defined as "qd".
-               We cannot change it to "lld" because PRIdMAX must also
-               be understood by the system's printf routines.  */
-            else if (*cp == 'q')
-              {
-                if (64 / 8 > sizeof (long))
-                  {
-                    /* int64_t = long long */
-                    signed_type = TYPE_LONGLONGINT;
-                    unsigned_type = TYPE_ULONGLONGINT;
-                    pointer_type = TYPE_COUNT_LONGLONGINT_POINTER;
-                    /* For backward compatibility only.  */
-                    floatingpoint_type = TYPE_LONGDOUBLE;
-                  }
-                else
-                  {
-                    /* int64_t = long */
-                    signed_type = TYPE_LONGINT;
-                    unsigned_type = TYPE_ULONGINT;
-                    pointer_type = TYPE_COUNT_LONGINT_POINTER;
-                  }
-                cp++;
-              }
-#endif
-#if defined _WIN32 && ! defined __CYGWIN__
-            /* On native Windows, PRIdMAX is defined as "I64d".
-               We cannot change it to "lld" because PRIdMAX must also
-               be understood by the system's printf routines.  */
-            else if (*cp == 'I' && cp[1] == '6' && cp[2] == '4')
-              {
-                if (64 / 8 > sizeof (long))
-                  {
-                    /* __int64_t = long long */
-                    signed_type = TYPE_LONGLONGINT;
-                    unsigned_type = TYPE_ULONGLONGINT;
-                    pointer_type = TYPE_COUNT_LONGLONGINT_POINTER;
-                    /* For backward compatibility only.  */
-                    floatingpoint_type = TYPE_LONGDOUBLE;
-                  }
-                else
-                  {
-                    /* __int64_t = long */
-                    signed_type = TYPE_LONGINT;
-                    unsigned_type = TYPE_ULONGINT;
-                    pointer_type = TYPE_COUNT_LONGINT_POINTER;
-                  }
-                cp++;
-              }
-#endif
-
-            /* Read the conversion character.  */
-            c = *cp++;
-            switch (c)
-              {
-              case 'd': case 'i':
-                type = signed_type;
-                break;
-              case 'b': case 'o': case 'u': case 'x': case 'X':
-              #if SUPPORT_GNU_PRINTF_DIRECTIVES \
-                  || (__GLIBC__ + (__GLIBC_MINOR__ >= 35) > 2)
-              case 'B':
-              #endif
-                type = unsigned_type;
-                break;
-              case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
-              case 'a': case 'A':
-                type = floatingpoint_type;
-                break;
-              case 'c':
-                if (signed_type == TYPE_LONGINT
-                    /* For backward compatibility only.  */
-                    || signed_type == TYPE_LONGLONGINT)
-#if HAVE_WINT_T
-                  type = TYPE_WIDE_CHAR;
-#else
-                  goto error;
-#endif
-                else
-                  type = TYPE_CHAR;
-                break;
-#if HAVE_WINT_T
-              case 'C':
-                type = TYPE_WIDE_CHAR;
-                c = 'c';
-                break;
-#endif
-              case 's':
-                if (signed_type == TYPE_LONGINT
-                    /* For backward compatibility only.  */
-                    || signed_type == TYPE_LONGLONGINT)
-#if HAVE_WCHAR_T
-                  type = TYPE_WIDE_STRING;
-#else
-                  goto error;
-#endif
-                else
-                  type = TYPE_STRING;
-                break;
-#if HAVE_WCHAR_T
-              case 'S':
-                type = TYPE_WIDE_STRING;
-                c = 's';
-                break;
-#endif
-              case 'p':
-                type = TYPE_POINTER;
-                break;
-              case 'n':
-                type = pointer_type;
-                break;
-#if ENABLE_UNISTDIO
-              /* The unistdio extensions.  */
-              case 'U':
-                if (signed_type == TYPE_LONGLONGINT)
-                  type = TYPE_U32_STRING;
-                else if (signed_type == TYPE_LONGINT)
-                  type = TYPE_U16_STRING;
-                else
-                  type = TYPE_U8_STRING;
-                break;
-#endif
-              case '%':
-                type = TYPE_NONE;
-                break;
-              default:
-                /* Unknown conversion character.  */
-                goto error;
-              }
-
-            if (type != TYPE_NONE)
-              {
-                dp->arg_index = arg_index;
-                if (dp->arg_index == ARG_NONE)
-                  {
-                    dp->arg_index = arg_posn++;
-                    if (dp->arg_index == ARG_NONE)
-                      /* arg_posn wrapped around.  */
-                      goto error;
-                  }
-                REGISTER_ARG (dp->arg_index, type);
-              }
-            dp->conversion = c;
-            dp->dir_end = cp;
-          }
-
-          d->count++;
-          if (d->count >= d_allocated)
-            {
-              size_t memory_size;
-              DIRECTIVE *memory;
-
-              d_allocated = xtimes (d_allocated, 2);
-              memory_size = xtimes (d_allocated, sizeof (DIRECTIVE));
-              if (size_overflow_p (memory_size))
-                /* Overflow, would lead to out of memory.  */
-                goto out_of_memory;
-              memory = (DIRECTIVE *) (d->dir != d->direct_alloc_dir
-                                      ? realloc (d->dir, memory_size)
-                                      : malloc (memory_size));
-              if (memory == NULL)
-                /* Out of memory.  */
-                goto out_of_memory;
-              if (d->dir == d->direct_alloc_dir)
-                memcpy (memory, d->dir, d->count * sizeof (DIRECTIVE));
-              d->dir = memory;
-            }
-        }
-#if CHAR_T_ONLY_ASCII
-      else if (!c_isascii (c))
-        {
-          /* Non-ASCII character.  Not supported.  */
-          goto error;
-        }
-#endif
-    }
-  d->dir[d->count].dir_start = cp;
-
-  d->max_width_length = max_width_length;
-  d->max_precision_length = max_precision_length;
-  return 0;
-
-error:
-  if (a->arg != a->direct_alloc_arg)
-    free (a->arg);
-  if (d->dir != d->direct_alloc_dir)
-    free (d->dir);
-  errno = EINVAL;
-  return -1;
-
-out_of_memory:
-  if (a->arg != a->direct_alloc_arg)
-    free (a->arg);
-  if (d->dir != d->direct_alloc_dir)
-    free (d->dir);
-  errno = ENOMEM;
-  return -1;
-}
-
-#undef PRINTF_PARSE
-#undef DIRECTIVES
-#undef DIRECTIVE
-#undef CHAR_T_ONLY_ASCII
-#undef CHAR_T
diff --git a/lib/printf-parse.h b/lib/printf-parse.h
deleted file mode 100644
index 45febac1f04..00000000000
--- a/lib/printf-parse.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/* Parse printf format string.
-   Copyright (C) 1999, 2002-2003, 2005, 2007, 2010-2023 Free Software
-   Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#ifndef _PRINTF_PARSE_H
-#define _PRINTF_PARSE_H
-
-/* This file can be parametrized with the following macros:
-     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
-     STATIC             Set to 'static' to declare the function static.  */
-
-#if HAVE_FEATURES_H
-# include <features.h> /* for __GLIBC__, __UCLIBC__ */
-#endif
-
-#include "printf-args.h"
-
-
-/* Flags */
-#define FLAG_GROUP       1      /* ' flag */
-#define FLAG_LEFT        2      /* - flag */
-#define FLAG_SHOWSIGN    4      /* + flag */
-#define FLAG_SPACE       8      /* space flag */
-#define FLAG_ALT        16      /* # flag */
-#define FLAG_ZERO       32
-#if __GLIBC__ >= 2 && !defined __UCLIBC__
-# define FLAG_LOCALIZED 64      /* I flag, uses localized digits */
-#endif
-
-/* arg_index value indicating that no argument is consumed.  */
-#define ARG_NONE        (~(size_t)0)
-
-/* xxx_directive: A parsed directive.
-   xxx_directives: A parsed format string.  */
-
-/* Number of directly allocated directives (no malloc() needed).  */
-#define N_DIRECT_ALLOC_DIRECTIVES 7
-
-/* A parsed directive.  */
-typedef struct
-{
-  const char* dir_start;
-  const char* dir_end;
-  int flags;
-  const char* width_start;
-  const char* width_end;
-  size_t width_arg_index;
-  const char* precision_start;
-  const char* precision_end;
-  size_t precision_arg_index;
-  char conversion; /* d i b B o u x X f F e E g G a A c s p n U % but not C S 
*/
-  size_t arg_index;
-}
-char_directive;
-
-/* A parsed format string.  */
-typedef struct
-{
-  size_t count;
-  char_directive *dir;
-  size_t max_width_length;
-  size_t max_precision_length;
-  char_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
-}
-char_directives;
-
-#if ENABLE_UNISTDIO
-
-/* A parsed directive.  */
-typedef struct
-{
-  const uint8_t* dir_start;
-  const uint8_t* dir_end;
-  int flags;
-  const uint8_t* width_start;
-  const uint8_t* width_end;
-  size_t width_arg_index;
-  const uint8_t* precision_start;
-  const uint8_t* precision_end;
-  size_t precision_arg_index;
-  uint8_t conversion; /* d i b B o u x X f F e E g G a A c s p n U % but not C 
S */
-  size_t arg_index;
-}
-u8_directive;
-
-/* A parsed format string.  */
-typedef struct
-{
-  size_t count;
-  u8_directive *dir;
-  size_t max_width_length;
-  size_t max_precision_length;
-  u8_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
-}
-u8_directives;
-
-/* A parsed directive.  */
-typedef struct
-{
-  const uint16_t* dir_start;
-  const uint16_t* dir_end;
-  int flags;
-  const uint16_t* width_start;
-  const uint16_t* width_end;
-  size_t width_arg_index;
-  const uint16_t* precision_start;
-  const uint16_t* precision_end;
-  size_t precision_arg_index;
-  uint16_t conversion; /* d i b B o u x X f F e E g G a A c s p n U % but not 
C S */
-  size_t arg_index;
-}
-u16_directive;
-
-/* A parsed format string.  */
-typedef struct
-{
-  size_t count;
-  u16_directive *dir;
-  size_t max_width_length;
-  size_t max_precision_length;
-  u16_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
-}
-u16_directives;
-
-/* A parsed directive.  */
-typedef struct
-{
-  const uint32_t* dir_start;
-  const uint32_t* dir_end;
-  int flags;
-  const uint32_t* width_start;
-  const uint32_t* width_end;
-  size_t width_arg_index;
-  const uint32_t* precision_start;
-  const uint32_t* precision_end;
-  size_t precision_arg_index;
-  uint32_t conversion; /* d i b B o u x X f F e E g G a A c s p n U % but not 
C S */
-  size_t arg_index;
-}
-u32_directive;
-
-/* A parsed format string.  */
-typedef struct
-{
-  size_t count;
-  u32_directive *dir;
-  size_t max_width_length;
-  size_t max_precision_length;
-  u32_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
-}
-u32_directives;
-
-#endif
-
-
-/* Parses the format string.  Fills in the number N of directives, and fills
-   in directives[0], ..., directives[N-1], and sets directives[N].dir_start
-   to the end of the format string.  Also fills in the arg_type fields of the
-   arguments and the needed count of arguments.  */
-#if ENABLE_UNISTDIO
-extern int
-       ulc_printf_parse (const char *format, char_directives *d, arguments *a);
-extern int
-       u8_printf_parse (const uint8_t *format, u8_directives *d, arguments *a);
-extern int
-       u16_printf_parse (const uint16_t *format, u16_directives *d,
-                         arguments *a);
-extern int
-       u32_printf_parse (const uint32_t *format, u32_directives *d,
-                         arguments *a);
-#else
-# ifdef STATIC
-STATIC
-# else
-extern
-# endif
-int printf_parse (const char *format, char_directives *d, arguments *a);
-#endif
-
-#endif /* _PRINTF_PARSE_H */
diff --git a/lib/printf.c b/lib/printf.c
deleted file mode 100644
index 00483271292..00000000000
--- a/lib/printf.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Formatted output to a stream.
-   Copyright (C) 2007, 2010-2023 Free Software Foundation, Inc.
-
-   This file 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 3 of the
-   License, or (at your option) any later version.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* Specification.  */
-#include <stdio.h>
-
-#include <stdarg.h>
-
-/* Print formatted output to standard output.
-   Return string length of formatted string.  On error, return a negative
-   value.  */
-int
-printf (const char *format, ...)
-{
-  int retval;
-  va_list args;
-
-  va_start (args, format);
-  retval = vfprintf (stdout, format, args);
-  va_end (args);
-
-  return retval;
-}
diff --git a/lib/signbitd.c b/lib/signbitd.c
deleted file mode 100644
index 706ea394414..00000000000
--- a/lib/signbitd.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* signbit() macro: Determine the sign bit of a floating-point number.
-   Copyright (C) 2007-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include <math.h>
-
-#include <string.h>
-#include "isnand-nolibm.h"
-#include "float+.h"
-
-#ifdef gl_signbitd_OPTIMIZED_MACRO
-# undef gl_signbitd
-#endif
-
-int
-gl_signbitd (double arg)
-{
-#if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT
-  /* The use of a union to extract the bits of the representation of a
-     'long double' is safe in practice, despite of the "aliasing rules" of
-     C99, because the GCC docs say
-       "Even with '-fstrict-aliasing', type-punning is allowed, provided the
-        memory is accessed through the union type."
-     and similarly for other compilers.  */
-# define NWORDS \
-    ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-  union { double value; unsigned int word[NWORDS]; } m;
-  m.value = arg;
-  return (m.word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1;
-#elif HAVE_COPYSIGN_IN_LIBC
-  return copysign (1.0, arg) < 0;
-#else
-  /* This does not do the right thing for NaN, but this is irrelevant for
-     most use cases.  */
-  if (isnand (arg))
-    return 0;
-  if (arg < 0.0)
-    return 1;
-  else if (arg == 0.0)
-    {
-      /* Distinguish 0.0 and -0.0.  */
-      static double plus_zero = 0.0;
-      double arg_mem = arg;
-      return (memcmp (&plus_zero, &arg_mem, SIZEOF_DBL) != 0);
-    }
-  else
-    return 0;
-#endif
-}
diff --git a/lib/signbitf.c b/lib/signbitf.c
deleted file mode 100644
index c25bb64a0d2..00000000000
--- a/lib/signbitf.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* signbit() macro: Determine the sign bit of a floating-point number.
-   Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include <math.h>
-
-#include <string.h>
-#include "isnanf-nolibm.h"
-#include "float+.h"
-
-#ifdef gl_signbitf_OPTIMIZED_MACRO
-# undef gl_signbitf
-#endif
-
-int
-gl_signbitf (float arg)
-{
-#if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT
-  /* The use of a union to extract the bits of the representation of a
-     'long double' is safe in practice, despite of the "aliasing rules" of
-     C99, because the GCC docs say
-       "Even with '-fstrict-aliasing', type-punning is allowed, provided the
-        memory is accessed through the union type."
-     and similarly for other compilers.  */
-# define NWORDS \
-    ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-  union { float value; unsigned int word[NWORDS]; } m;
-  m.value = arg;
-  return (m.word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1;
-#elif HAVE_COPYSIGNF_IN_LIBC
-  return copysignf (1.0f, arg) < 0;
-#else
-  /* This does not do the right thing for NaN, but this is irrelevant for
-     most use cases.  */
-  if (isnanf (arg))
-    return 0;
-  if (arg < 0.0f)
-    return 1;
-  else if (arg == 0.0f)
-    {
-      /* Distinguish 0.0f and -0.0f.  */
-      static float plus_zero = 0.0f;
-      float arg_mem = arg;
-      return (memcmp (&plus_zero, &arg_mem, SIZEOF_FLT) != 0);
-    }
-  else
-    return 0;
-#endif
-}
diff --git a/lib/signbitl.c b/lib/signbitl.c
deleted file mode 100644
index 9d459caf879..00000000000
--- a/lib/signbitl.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* signbit() macro: Determine the sign bit of a floating-point number.
-   Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include <math.h>
-
-#include <string.h>
-#include "isnanl-nolibm.h"
-#include "float+.h"
-
-#ifdef gl_signbitl_OPTIMIZED_MACRO
-# undef gl_signbitl
-#endif
-
-int
-gl_signbitl (long double arg)
-{
-#if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT
-  /* The use of a union to extract the bits of the representation of a
-     'long double' is safe in practice, despite of the "aliasing rules" of
-     C99, because the GCC docs say
-       "Even with '-fstrict-aliasing', type-punning is allowed, provided the
-        memory is accessed through the union type."
-     and similarly for other compilers.  */
-# define NWORDS \
-    ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned 
int))
-  union { long double value; unsigned int word[NWORDS]; } m;
-  m.value = arg;
-  return (m.word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1;
-#elif HAVE_COPYSIGNL_IN_LIBC
-  return copysignl (1.0L, arg) < 0;
-#else
-  /* This does not do the right thing for NaN, but this is irrelevant for
-     most use cases.  */
-  if (isnanl (arg))
-    return 0;
-  if (arg < 0.0L)
-    return 1;
-  else if (arg == 0.0L)
-    {
-      /* Distinguish 0.0L and -0.0L.  */
-      static long double plus_zero = 0.0L;
-      long double arg_mem = arg;
-      return (memcmp (&plus_zero, &arg_mem, SIZEOF_LDBL) != 0);
-    }
-  else
-    return 0;
-#endif
-}
diff --git a/lib/size_max.h b/lib/size_max.h
deleted file mode 100644
index 2cfd31a59b8..00000000000
--- a/lib/size_max.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* size_max.h -- declare SIZE_MAX through system headers
-   Copyright (C) 2005-2006, 2009-2023 Free Software Foundation, Inc.
-   Written by Simon Josefsson.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#ifndef GNULIB_SIZE_MAX_H
-#define GNULIB_SIZE_MAX_H
-
-/* This file uses HAVE_STDINT_H.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-/* Get SIZE_MAX declaration on systems like Solaris 7/8/9.  */
-# include <limits.h>
-/* Get SIZE_MAX declaration on systems like glibc 2.  */
-# if HAVE_STDINT_H
-#  include <stdint.h>
-# endif
-/* On systems where these include files don't define it, SIZE_MAX is defined
-   in config.h.  */
-
-#endif /* GNULIB_SIZE_MAX_H */
diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c
deleted file mode 100644
index 9ad31b2a084..00000000000
--- a/lib/vasnprintf.c
+++ /dev/null
@@ -1,6963 +0,0 @@
-/* vsprintf with automatic memory allocation.
-   Copyright (C) 1999, 2002-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* This file can be parametrized with the following macros:
-     VASNPRINTF         The name of the function being defined.
-     FCHAR_T            The element type of the format string.
-     DCHAR_T            The element type of the destination (result) string.
-     FCHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters
-                        in the format string are ASCII. MUST be set if
-                        FCHAR_T and DCHAR_T are not the same type.
-     DIRECTIVE          Structure denoting a format directive.
-                        Depends on FCHAR_T.
-     DIRECTIVES         Structure denoting the set of format directives of a
-                        format string.  Depends on FCHAR_T.
-     PRINTF_PARSE       Function that parses a format string.
-                        Depends on FCHAR_T.
-     DCHAR_CPY          memcpy like function for DCHAR_T[] arrays.
-     DCHAR_SET          memset like function for DCHAR_T[] arrays.
-     DCHAR_MBSNLEN      mbsnlen like function for DCHAR_T[] arrays.
-     SNPRINTF           The system's snprintf (or similar) function.
-                        This may be either snprintf or swprintf.
-     TCHAR_T            The element type of the argument and result string
-                        of the said SNPRINTF function.  This may be either
-                        char or wchar_t.  The code exploits that
-                        sizeof (TCHAR_T) | sizeof (DCHAR_T) and
-                        alignof (TCHAR_T) <= alignof (DCHAR_T).
-     DCHAR_IS_TCHAR     Set to 1 if DCHAR_T and TCHAR_T are the same type.
-     DCHAR_CONV_FROM_ENCODING A function to convert from char[] to DCHAR[].
-     DCHAR_IS_UINT8_T   Set to 1 if DCHAR_T is uint8_t.
-     DCHAR_IS_UINT16_T  Set to 1 if DCHAR_T is uint16_t.
-     DCHAR_IS_UINT32_T  Set to 1 if DCHAR_T is uint32_t.
-     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
-     ENABLE_WCHAR_FALLBACK  Set to 1 to avoid EILSEQ during conversion of wide
-                        characters (wchar_t) and wide character strings
-                        (wchar_t[]) to multibyte sequences.  The fallback is 
the
-                        hexadecimal escape syntax (\unnnn or \Unnnnnnnn) or,
-                        if wchar_t is not Unicode encoded, \wnnnn or 
\Wnnnnnnnn.
- */
-
-/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
-   This must come before <config.h> because <config.h> may include
-   <features.h>, and once <features.h> has been included, it's too late.  */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE    1
-#endif
-
-#ifndef VASNPRINTF
-# include <config.h>
-#endif
-
-/* As of GCC 11.2.1, gcc -Wanalyzer-too-complex reports that main's
-   use of CHECK macros expands to code that is too complicated for gcc
-   -fanalyzer.  Suppress the resulting bogus warnings.  */
-#if 10 <= __GNUC__
-# pragma GCC diagnostic ignored "-Wanalyzer-null-argument"
-#endif
-
-#include <alloca.h>
-
-/* Specification.  */
-#ifndef VASNPRINTF
-# if WIDE_CHAR_VERSION
-#  include "vasnwprintf.h"
-# else
-#  include "vasnprintf.h"
-# endif
-#endif
-
-#include <locale.h>     /* localeconv() */
-#include <stdio.h>      /* snprintf(), sprintf() */
-#include <stdlib.h>     /* abort(), malloc(), realloc(), free() */
-#include <string.h>     /* memcpy(), strlen() */
-#include <wchar.h>      /* mbstate_t, mbrtowc(), mbrlen(), wcrtomb() */
-#include <errno.h>      /* errno */
-#include <limits.h>     /* CHAR_BIT, INT_WIDTH, LONG_WIDTH */
-#include <float.h>      /* DBL_MAX_EXP, LDBL_MAX_EXP */
-#if HAVE_NL_LANGINFO
-# include <langinfo.h>
-#endif
-#ifndef VASNPRINTF
-# if WIDE_CHAR_VERSION
-#  include "wprintf-parse.h"
-# else
-#  include "printf-parse.h"
-# endif
-#endif
-
-/* Checked size_t computations.  */
-#include "xsize.h"
-
-#include "attribute.h"
-
-#if NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE || 
(NEED_WPRINTF_DIRECTIVE_LA && WIDE_CHAR_VERSION)
-# include <math.h>
-# include "float+.h"
-#endif
-
-#if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
-# include <math.h>
-# include "isnand-nolibm.h"
-#endif
-
-#if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || 
(NEED_WPRINTF_DIRECTIVE_LA && WIDE_CHAR_VERSION)
-# include <math.h>
-# include "isnanl-nolibm.h"
-# include "fpucw.h"
-#endif
-
-#if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE
-# include <math.h>
-# include "isnand-nolibm.h"
-# include "printf-frexp.h"
-#endif
-
-#if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || 
(NEED_WPRINTF_DIRECTIVE_LA && WIDE_CHAR_VERSION)
-# include <math.h>
-# include "isnanl-nolibm.h"
-# include "printf-frexpl.h"
-# include "fpucw.h"
-#endif
-
-/* Default parameters.  */
-#ifndef VASNPRINTF
-# if WIDE_CHAR_VERSION
-#  define VASNPRINTF vasnwprintf
-#  define FCHAR_T wchar_t
-#  define DCHAR_T wchar_t
-#  define DIRECTIVE wchar_t_directive
-#  define DIRECTIVES wchar_t_directives
-#  define PRINTF_PARSE wprintf_parse
-#  define DCHAR_CPY wmemcpy
-#  define DCHAR_SET wmemset
-# else
-#  define VASNPRINTF vasnprintf
-#  define FCHAR_T char
-#  define DCHAR_T char
-#  define TCHAR_T char
-#  define DCHAR_IS_TCHAR 1
-#  define DIRECTIVE char_directive
-#  define DIRECTIVES char_directives
-#  define PRINTF_PARSE printf_parse
-#  define DCHAR_CPY memcpy
-#  define DCHAR_SET memset
-# endif
-#endif
-#if WIDE_CHAR_VERSION
-  /* DCHAR_T is wchar_t.  */
-# if HAVE_DECL__SNWPRINTF || (HAVE_SWPRINTF && HAVE_WORKING_SWPRINTF)
-#  define TCHAR_T wchar_t
-#  define DCHAR_IS_TCHAR 1
-#  define USE_SNPRINTF 1
-#  if HAVE_DECL__SNWPRINTF
-    /* On Windows, the function swprintf() has a different signature than
-       on Unix; we use the function _snwprintf() or - on mingw - snwprintf()
-       instead.  The mingw function snwprintf() has fewer bugs than the
-       MSVCRT function _snwprintf(), so prefer that.  */
-#   if defined __MINGW32__
-#    define SNPRINTF snwprintf
-#   else
-#    define SNPRINTF _snwprintf
-#    define USE_MSVC__SNPRINTF 1
-#   endif
-#  else
-    /* Unix.  */
-#   define SNPRINTF swprintf
-#  endif
-# else
-   /* Old platforms such as NetBSD 3.0, OpenBSD 3.8, HP-UX 11.00, IRIX 6.5.  */
-#   define TCHAR_T char
-# endif
-#endif
-#if !WIDE_CHAR_VERSION || !DCHAR_IS_TCHAR
-  /* TCHAR_T is char.  */
-  /* Use snprintf if it exists under the name 'snprintf' or '_snprintf'.
-     But don't use it on BeOS, since BeOS snprintf produces no output if the
-     size argument is >= 0x3000000.
-     Also don't use it on Linux libc5, since there snprintf with size = 1
-     writes any output without bounds, like sprintf.  */
-# if (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) && !defined __BEOS__ && 
!(__GNU_LIBRARY__ == 1)
-#  define USE_SNPRINTF 1
-# else
-#  define USE_SNPRINTF 0
-# endif
-# if HAVE_DECL__SNPRINTF
-   /* Windows.  The mingw function snprintf() has fewer bugs than the MSVCRT
-      function _snprintf(), so prefer that.  */
-#  if defined __MINGW32__
-#   define SNPRINTF snprintf
-    /* Here we need to call the native snprintf, not rpl_snprintf.  */
-#   undef snprintf
-#  else
-    /* MSVC versions < 14 did not have snprintf, only _snprintf.  */
-#   define SNPRINTF _snprintf
-#   define USE_MSVC__SNPRINTF 1
-#  endif
-# else
-   /* Unix.  */
-#  define SNPRINTF snprintf
-   /* Here we need to call the native snprintf, not rpl_snprintf.  */
-#  undef snprintf
-# endif
-#endif
-/* Here we need to call the native sprintf, not rpl_sprintf.  */
-#undef sprintf
-
-/* GCC >= 4.0 with -Wall emits unjustified "... may be used uninitialized"
-   warnings in this file.  Use -Dlint to suppress them.  */
-#if defined GCC_LINT || defined lint
-# define IF_LINT(Code) Code
-#else
-# define IF_LINT(Code) /* empty */
-#endif
-
-/* Avoid some warnings from "gcc -Wshadow".
-   This file doesn't use the exp() and remainder() functions.  */
-#undef exp
-#define exp expo
-#undef remainder
-#define remainder rem
-
-#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF) && 
!WIDE_CHAR_VERSION
-# if (HAVE_STRNLEN && !defined _AIX)
-#  define local_strnlen strnlen
-# else
-#  ifndef local_strnlen_defined
-#   define local_strnlen_defined 1
-static size_t
-local_strnlen (const char *string, size_t maxlen)
-{
-  const char *end = memchr (string, '\0', maxlen);
-  return end ? (size_t) (end - string) : maxlen;
-}
-#  endif
-# endif
-#endif
-
-#if (((!USE_SNPRINTF || WIDE_CHAR_VERSION || !HAVE_SNPRINTF_RETVAL_C99 || 
USE_MSVC__SNPRINTF || NEED_WPRINTF_DIRECTIVE_LC) && WIDE_CHAR_VERSION) || 
((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || 
NEED_PRINTF_DIRECTIVE_LS) && !WIDE_CHAR_VERSION && DCHAR_IS_TCHAR)) && 
HAVE_WCHAR_T
-# if HAVE_WCSLEN
-#  define local_wcslen wcslen
-# else
-   /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid
-      a dependency towards this library, here is a local substitute.
-      Define this substitute only once, even if this file is included
-      twice in the same compilation unit.  */
-#  ifndef local_wcslen_defined
-#   define local_wcslen_defined 1
-static size_t
-local_wcslen (const wchar_t *s)
-{
-  const wchar_t *ptr;
-
-  for (ptr = s; *ptr != (wchar_t) 0; ptr++)
-    ;
-  return ptr - s;
-}
-#  endif
-# endif
-#endif
-
-#if (!USE_SNPRINTF || (WIDE_CHAR_VERSION && DCHAR_IS_TCHAR) || 
!HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF) && HAVE_WCHAR_T && 
WIDE_CHAR_VERSION
-# if HAVE_WCSNLEN && HAVE_DECL_WCSNLEN
-#  define local_wcsnlen wcsnlen
-# else
-#  ifndef local_wcsnlen_defined
-#   define local_wcsnlen_defined 1
-static size_t
-local_wcsnlen (const wchar_t *s, size_t maxlen)
-{
-  const wchar_t *ptr;
-
-  for (ptr = s; maxlen > 0 && *ptr != (wchar_t) 0; ptr++, maxlen--)
-    ;
-  return ptr - s;
-}
-#  endif
-# endif
-#endif
-
-#if (((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || 
NEED_PRINTF_DIRECTIVE_LS || ENABLE_WCHAR_FALLBACK) && HAVE_WCHAR_T) || 
((NEED_PRINTF_DIRECTIVE_LC || ENABLE_WCHAR_FALLBACK) && HAVE_WINT_T)) && 
!WIDE_CHAR_VERSION
-# if ENABLE_WCHAR_FALLBACK
-static size_t
-wctomb_fallback (char *s, wchar_t wc)
-{
-  static char hex[16] = "0123456789ABCDEF";
-
-  s[0] = '\\';
-  if (sizeof (wchar_t) > 2 && wc > 0xffff)
-    {
-#  if __STDC_ISO_10646__ || (__GLIBC__ >= 2) || (defined _WIN32 || defined 
__CYGWIN__)
-      s[1] = 'U';
-#  else
-      s[1] = 'W';
-#  endif
-      s[2] = hex[(wc & 0xf0000000U) >> 28];
-      s[3] = hex[(wc & 0xf000000U) >> 24];
-      s[4] = hex[(wc & 0xf00000U) >> 20];
-      s[5] = hex[(wc & 0xf0000U) >> 16];
-      s[6] = hex[(wc & 0xf000U) >> 12];
-      s[7] = hex[(wc & 0xf00U) >> 8];
-      s[8] = hex[(wc & 0xf0U) >> 4];
-      s[9] = hex[wc & 0xfU];
-      return 10;
-    }
-  else
-    {
-#  if __STDC_ISO_10646__ || (__GLIBC__ >= 2) || (defined _WIN32 || defined 
__CYGWIN__)
-      s[1] = 'u';
-#  else
-      s[1] = 'w';
-#  endif
-      s[2] = hex[(wc & 0xf000U) >> 12];
-      s[3] = hex[(wc & 0xf00U) >> 8];
-      s[4] = hex[(wc & 0xf0U) >> 4];
-      s[5] = hex[wc & 0xfU];
-      return 6;
-    }
-}
-#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-static size_t
-local_wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
-{
-  size_t count = wcrtomb (s, wc, ps);
-  if (count == (size_t)(-1))
-    count = wctomb_fallback (s, wc);
-  return count;
-}
-#  else
-static int
-local_wctomb (char *s, wchar_t wc)
-{
-  int count = wctomb (s, wc);
-  if (count < 0)
-    count = wctomb_fallback (s, wc);
-  return count;
-}
-#   define local_wcrtomb(S, WC, PS)  local_wctomb ((S), (WC))
-#  endif
-# else
-#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-#   define local_wcrtomb(S, WC, PS)  wcrtomb ((S), (WC), (PS))
-#  else
-#   define local_wcrtomb(S, WC, PS)  wctomb ((S), (WC))
-#  endif
-# endif
-#endif
-
-#if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || 
NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_DOUBLE || 
NEED_PRINTF_INFINITE_DOUBLE || (NEED_WPRINTF_DIRECTIVE_LA && WIDE_CHAR_VERSION)
-/* Determine the decimal-point character according to the current locale.  */
-# ifndef decimal_point_char_defined
-#  define decimal_point_char_defined 1
-static char
-decimal_point_char (void)
-{
-  const char *point;
-  /* Determine it in a multithread-safe way.  We know nl_langinfo is
-     multithread-safe on glibc systems and Mac OS X systems, but is not 
required
-     to be multithread-safe by POSIX.  sprintf(), however, is multithread-safe.
-     localeconv() is rarely multithread-safe.  */
-#  if HAVE_NL_LANGINFO && (__GLIBC__ || defined __UCLIBC__ || (defined 
__APPLE__ && defined __MACH__))
-  point = nl_langinfo (RADIXCHAR);
-#  elif 1
-  char pointbuf[5];
-  sprintf (pointbuf, "%#.0f", 1.0);
-  point = &pointbuf[1];
-#  else
-  point = localeconv () -> decimal_point;
-#  endif
-  /* The decimal point is always a single byte: either '.' or ','.  */
-  return (point[0] != '\0' ? point[0] : '.');
-}
-# endif
-#endif
-
-#if NEED_PRINTF_INFINITE_DOUBLE && !NEED_PRINTF_DOUBLE
-
-/* Equivalent to !isfinite(x) || x == 0, but does not require libm.  */
-static int
-is_infinite_or_zero (double x)
-{
-  return isnand (x) || x + x == x;
-}
-
-#endif
-
-#if NEED_PRINTF_INFINITE_LONG_DOUBLE && !NEED_PRINTF_LONG_DOUBLE
-
-/* Equivalent to !isfinite(x) || x == 0, but does not require libm.  */
-static int
-is_infinite_or_zerol (long double x)
-{
-  return isnanl (x) || x + x == x;
-}
-
-#endif
-
-#if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE
-
-/* Converting 'long double' to decimal without rare rounding bugs requires
-   real bignums.  We use the naming conventions of GNU gmp, but vastly simpler
-   (and slower) algorithms.  */
-
-typedef unsigned int mp_limb_t;
-# define GMP_LIMB_BITS 32
-static_assert (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS);
-
-typedef unsigned long long mp_twolimb_t;
-# define GMP_TWOLIMB_BITS 64
-static_assert (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS);
-
-/* Representation of a bignum >= 0.  */
-typedef struct
-{
-  size_t nlimbs;
-  mp_limb_t *limbs; /* Bits in little-endian order, allocated with malloc().  
*/
-} mpn_t;
-
-/* Compute the product of two bignums >= 0.
-   Return the allocated memory in case of success, NULL in case of memory
-   allocation failure.  */
-static void *
-multiply (mpn_t src1, mpn_t src2, mpn_t *dest)
-{
-  const mp_limb_t *p1;
-  const mp_limb_t *p2;
-  size_t len1;
-  size_t len2;
-
-  if (src1.nlimbs <= src2.nlimbs)
-    {
-      len1 = src1.nlimbs;
-      p1 = src1.limbs;
-      len2 = src2.nlimbs;
-      p2 = src2.limbs;
-    }
-  else
-    {
-      len1 = src2.nlimbs;
-      p1 = src2.limbs;
-      len2 = src1.nlimbs;
-      p2 = src1.limbs;
-    }
-  /* Now 0 <= len1 <= len2.  */
-  if (len1 == 0)
-    {
-      /* src1 or src2 is zero.  */
-      dest->nlimbs = 0;
-      dest->limbs = (mp_limb_t *) malloc (1);
-    }
-  else
-    {
-      /* Here 1 <= len1 <= len2.  */
-      size_t dlen;
-      mp_limb_t *dp;
-      size_t k, i, j;
-
-      dlen = len1 + len2;
-      dp = (mp_limb_t *) malloc (dlen * sizeof (mp_limb_t));
-      if (dp == NULL)
-        return NULL;
-      for (k = len2; k > 0; )
-        dp[--k] = 0;
-      for (i = 0; i < len1; i++)
-        {
-          mp_limb_t digit1 = p1[i];
-          mp_twolimb_t carry = 0;
-          for (j = 0; j < len2; j++)
-            {
-              mp_limb_t digit2 = p2[j];
-              carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2;
-              carry += dp[i + j];
-              dp[i + j] = (mp_limb_t) carry;
-              carry = carry >> GMP_LIMB_BITS;
-            }
-          dp[i + len2] = (mp_limb_t) carry;
-        }
-      /* Normalise.  */
-      while (dlen > 0 && dp[dlen - 1] == 0)
-        dlen--;
-      dest->nlimbs = dlen;
-      dest->limbs = dp;
-    }
-  return dest->limbs;
-}
-
-/* Compute the quotient of a bignum a >= 0 and a bignum b > 0.
-   a is written as  a = q * b + r  with 0 <= r < b.  q is the quotient, r
-   the remainder.
-   Finally, round-to-even is performed: If r > b/2 or if r = b/2 and q is odd,
-   q is incremented.
-   Return the allocated memory in case of success, NULL in case of memory
-   allocation failure.  */
-static void *
-divide (mpn_t a, mpn_t b, mpn_t *q)
-{
-  /* Algorithm:
-     First normalise a and b: a=[a[m-1],...,a[0]], b=[b[n-1],...,b[0]]
-     with m>=0 and n>0 (in base beta = 2^GMP_LIMB_BITS).
-     If m<n, then q:=0 and r:=a.
-     If m>=n=1, perform a single-precision division:
-       r:=0, j:=m,
-       while j>0 do
-         {Here (q[m-1]*beta^(m-1)+...+q[j]*beta^j) * b[0] + r*beta^j =
-               = a[m-1]*beta^(m-1)+...+a[j]*beta^j und 0<=r<b[0]<beta}
-         j:=j-1, r:=r*beta+a[j], q[j]:=floor(r/b[0]), r:=r-b[0]*q[j].
-       Normalise [q[m-1],...,q[0]], yields q.
-     If m>=n>1, perform a multiple-precision division:
-       We have a/b < beta^(m-n+1).
-       s:=intDsize-1-(highest bit in b[n-1]), 0<=s<intDsize.
-       Shift a and b left by s bits, copying them. r:=a.
-       r=[r[m],...,r[0]], b=[b[n-1],...,b[0]] with b[n-1]>=beta/2.
-       For j=m-n,...,0: {Here 0 <= r < b*beta^(j+1).}
-         Compute q* :
-           q* := floor((r[j+n]*beta+r[j+n-1])/b[n-1]).
-           In case of overflow (q* >= beta) set q* := beta-1.
-           Compute c2 := ((r[j+n]*beta+r[j+n-1]) - q* * b[n-1])*beta + r[j+n-2]
-           and c3 := b[n-2] * q*.
-           {We have 0 <= c2 < 2*beta^2, even 0 <= c2 < beta^2 if no overflow
-            occurred.  Furthermore 0 <= c3 < beta^2.
-            If there was overflow and
-            r[j+n]*beta+r[j+n-1] - q* * b[n-1] >= beta, i.e. c2 >= beta^2,
-            the next test can be skipped.}
-           While c3 > c2, {Here 0 <= c2 < c3 < beta^2}
-             Put q* := q* - 1, c2 := c2 + b[n-1]*beta, c3 := c3 - b[n-2].
-           If q* > 0:
-             Put r := r - b * q* * beta^j. In detail:
-               [r[n+j],...,r[j]] := [r[n+j],...,r[j]] - q* * [b[n-1],...,b[0]].
-               hence: u:=0, for i:=0 to n-1 do
-                              u := u + q* * b[i],
-                              r[j+i]:=r[j+i]-(u mod beta) (+ beta, if carry),
-                              u:=u div beta (+ 1, if carry in subtraction)
-                      r[n+j]:=r[n+j]-u.
-               {Since always u = (q* * [b[i-1],...,b[0]] div beta^i) + 1
-                               < q* + 1 <= beta,
-                the carry u does not overflow.}
-             If a negative carry occurs, put q* := q* - 1
-               and [r[n+j],...,r[j]] := [r[n+j],...,r[j]] + 
[0,b[n-1],...,b[0]].
-         Set q[j] := q*.
-       Normalise [q[m-n],..,q[0]]; this yields the quotient q.
-       Shift [r[n-1],...,r[0]] right by s bits and normalise; this yields the
-       rest r.
-       The room for q[j] can be allocated at the memory location of r[n+j].
-     Finally, round-to-even:
-       Shift r left by 1 bit.
-       If r > b or if r = b and q[0] is odd, q := q+1.
-   */
-  const mp_limb_t *a_ptr = a.limbs;
-  size_t a_len = a.nlimbs;
-  const mp_limb_t *b_ptr = b.limbs;
-  size_t b_len = b.nlimbs;
-  mp_limb_t *roomptr;
-  mp_limb_t *tmp_roomptr = NULL;
-  mp_limb_t *q_ptr;
-  size_t q_len;
-  mp_limb_t *r_ptr;
-  size_t r_len;
-
-  /* Allocate room for a_len+2 digits.
-     (Need a_len+1 digits for the real division and 1 more digit for the
-     final rounding of q.)  */
-  roomptr = (mp_limb_t *) malloc ((a_len + 2) * sizeof (mp_limb_t));
-  if (roomptr == NULL)
-    return NULL;
-
-  /* Normalise a.  */
-  while (a_len > 0 && a_ptr[a_len - 1] == 0)
-    a_len--;
-
-  /* Normalise b.  */
-  for (;;)
-    {
-      if (b_len == 0)
-        /* Division by zero.  */
-        abort ();
-      if (b_ptr[b_len - 1] == 0)
-        b_len--;
-      else
-        break;
-    }
-
-  /* Here m = a_len >= 0 and n = b_len > 0.  */
-
-  if (a_len < b_len)
-    {
-      /* m<n: trivial case.  q=0, r := copy of a.  */
-      r_ptr = roomptr;
-      r_len = a_len;
-      memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t));
-      q_ptr = roomptr + a_len;
-      q_len = 0;
-    }
-  else if (b_len == 1)
-    {
-      /* n=1: single precision division.
-         beta^(m-1) <= a < beta^m  ==>  beta^(m-2) <= a/b < beta^m  */
-      r_ptr = roomptr;
-      q_ptr = roomptr + 1;
-      {
-        mp_limb_t den = b_ptr[0];
-        mp_limb_t remainder = 0;
-        const mp_limb_t *sourceptr = a_ptr + a_len;
-        mp_limb_t *destptr = q_ptr + a_len;
-        size_t count;
-        for (count = a_len; count > 0; count--)
-          {
-            mp_twolimb_t num =
-              ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--sourceptr;
-            *--destptr = num / den;
-            remainder = num % den;
-          }
-        /* Normalise and store r.  */
-        if (remainder > 0)
-          {
-            r_ptr[0] = remainder;
-            r_len = 1;
-          }
-        else
-          r_len = 0;
-        /* Normalise q.  */
-        q_len = a_len;
-        if (q_ptr[q_len - 1] == 0)
-          q_len--;
-      }
-    }
-  else
-    {
-      /* n>1: multiple precision division.
-         beta^(m-1) <= a < beta^m, beta^(n-1) <= b < beta^n  ==>
-         beta^(m-n-1) <= a/b < beta^(m-n+1).  */
-      /* Determine s.  */
-      size_t s;
-      {
-        mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */
-        /* Determine s = GMP_LIMB_BITS - integer_length (msd).
-           Code copied from gnulib's integer_length.c.  */
-# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) \
-     || (__clang_major__ >= 4)
-        s = __builtin_clz (msd);
-# else
-#  if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
-        if (GMP_LIMB_BITS <= DBL_MANT_BIT)
-          {
-            /* Use 'double' operations.
-               Assumes an IEEE 754 'double' implementation.  */
-#   define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7)
-#   define DBL_EXP_BIAS (DBL_EXP_MASK / 2 - 1)
-#   define NWORDS \
-     ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-            union { double value; unsigned int word[NWORDS]; } m;
-
-            /* Use a single integer to floating-point conversion.  */
-            m.value = msd;
-
-            s = GMP_LIMB_BITS
-                - (((m.word[DBL_EXPBIT0_WORD] >> DBL_EXPBIT0_BIT) & 
DBL_EXP_MASK)
-                   - DBL_EXP_BIAS);
-          }
-        else
-#   undef NWORDS
-#  endif
-          {
-            s = 31;
-            if (msd >= 0x10000)
-              {
-                msd = msd >> 16;
-                s -= 16;
-              }
-            if (msd >= 0x100)
-              {
-                msd = msd >> 8;
-                s -= 8;
-              }
-            if (msd >= 0x10)
-              {
-                msd = msd >> 4;
-                s -= 4;
-              }
-            if (msd >= 0x4)
-              {
-                msd = msd >> 2;
-                s -= 2;
-              }
-            if (msd >= 0x2)
-              {
-                msd = msd >> 1;
-                s -= 1;
-              }
-          }
-# endif
-      }
-      /* 0 <= s < GMP_LIMB_BITS.
-         Copy b, shifting it left by s bits.  */
-      if (s > 0)
-        {
-          tmp_roomptr = (mp_limb_t *) malloc (b_len * sizeof (mp_limb_t));
-          if (tmp_roomptr == NULL)
-            {
-              free (roomptr);
-              return NULL;
-            }
-          {
-            const mp_limb_t *sourceptr = b_ptr;
-            mp_limb_t *destptr = tmp_roomptr;
-            mp_twolimb_t accu = 0;
-            size_t count;
-            for (count = b_len; count > 0; count--)
-              {
-                accu += (mp_twolimb_t) *sourceptr++ << s;
-                *destptr++ = (mp_limb_t) accu;
-                accu = accu >> GMP_LIMB_BITS;
-              }
-            /* accu must be zero, since that was how s was determined.  */
-            if (accu != 0)
-              abort ();
-          }
-          b_ptr = tmp_roomptr;
-        }
-      /* Copy a, shifting it left by s bits, yields r.
-         Memory layout:
-         At the beginning: r = roomptr[0..a_len],
-         at the end: r = roomptr[0..b_len-1], q = roomptr[b_len..a_len]  */
-      r_ptr = roomptr;
-      if (s == 0)
-        {
-          memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t));
-          r_ptr[a_len] = 0;
-        }
-      else
-        {
-          const mp_limb_t *sourceptr = a_ptr;
-          mp_limb_t *destptr = r_ptr;
-          mp_twolimb_t accu = 0;
-          size_t count;
-          for (count = a_len; count > 0; count--)
-            {
-              accu += (mp_twolimb_t) *sourceptr++ << s;
-              *destptr++ = (mp_limb_t) accu;
-              accu = accu >> GMP_LIMB_BITS;
-            }
-          *destptr++ = (mp_limb_t) accu;
-        }
-      q_ptr = roomptr + b_len;
-      q_len = a_len - b_len + 1; /* q will have m-n+1 limbs */
-      {
-        size_t j = a_len - b_len; /* m-n */
-        mp_limb_t b_msd = b_ptr[b_len - 1]; /* b[n-1] */
-        mp_limb_t b_2msd = b_ptr[b_len - 2]; /* b[n-2] */
-        mp_twolimb_t b_msdd = /* b[n-1]*beta+b[n-2] */
-          ((mp_twolimb_t) b_msd << GMP_LIMB_BITS) | b_2msd;
-        /* Division loop, traversed m-n+1 times.
-           j counts down, b is unchanged, beta/2 <= b[n-1] < beta.  */
-        for (;;)
-          {
-            mp_limb_t q_star;
-            mp_limb_t c1;
-            if (r_ptr[j + b_len] < b_msd) /* r[j+n] < b[n-1] ? */
-              {
-                /* Divide r[j+n]*beta+r[j+n-1] by b[n-1], no overflow.  */
-                mp_twolimb_t num =
-                  ((mp_twolimb_t) r_ptr[j + b_len] << GMP_LIMB_BITS)
-                  | r_ptr[j + b_len - 1];
-                q_star = num / b_msd;
-                c1 = num % b_msd;
-              }
-            else
-              {
-                /* Overflow, hence r[j+n]*beta+r[j+n-1] >= beta*b[n-1].  */
-                q_star = (mp_limb_t)~(mp_limb_t)0; /* q* = beta-1 */
-                /* Test whether r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] >= beta
-                   <==> r[j+n]*beta+r[j+n-1] + b[n-1] >= beta*b[n-1]+beta
-                   <==> b[n-1] < floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta)
-                        {<= beta !}.
-                   If yes, jump directly to the subtraction loop.
-                   (Otherwise, r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] < beta
-                    <==> floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) = b[n-1] ) 
*/
-                if (r_ptr[j + b_len] > b_msd
-                    || (c1 = r_ptr[j + b_len - 1] + b_msd) < b_msd)
-                  /* r[j+n] >= b[n-1]+1 or
-                     r[j+n] = b[n-1] and the addition r[j+n-1]+b[n-1] gives a
-                     carry.  */
-                  goto subtract;
-              }
-            /* q_star = q*,
-               c1 = (r[j+n]*beta+r[j+n-1]) - q* * b[n-1] (>=0, <beta).  */
-            {
-              mp_twolimb_t c2 = /* c1*beta+r[j+n-2] */
-                ((mp_twolimb_t) c1 << GMP_LIMB_BITS) | r_ptr[j + b_len - 2];
-              mp_twolimb_t c3 = /* b[n-2] * q* */
-                (mp_twolimb_t) b_2msd * (mp_twolimb_t) q_star;
-              /* While c2 < c3, increase c2 and decrease c3.
-                 Consider c3-c2.  While it is > 0, decrease it by
-                 b[n-1]*beta+b[n-2].  Because of b[n-1]*beta+b[n-2] >= beta^2/2
-                 this can happen only twice.  */
-              if (c3 > c2)
-                {
-                  q_star = q_star - 1; /* q* := q* - 1 */
-                  if (c3 - c2 > b_msdd)
-                    q_star = q_star - 1; /* q* := q* - 1 */
-                }
-            }
-            if (q_star > 0)
-              subtract:
-              {
-                /* Subtract r := r - b * q* * beta^j.  */
-                mp_limb_t cr;
-                {
-                  const mp_limb_t *sourceptr = b_ptr;
-                  mp_limb_t *destptr = r_ptr + j;
-                  mp_twolimb_t carry = 0;
-                  size_t count;
-                  for (count = b_len; count > 0; count--)
-                    {
-                      /* Here 0 <= carry <= q*.  */
-                      carry =
-                        carry
-                        + (mp_twolimb_t) q_star * (mp_twolimb_t) *sourceptr++
-                        + (mp_limb_t) ~(*destptr);
-                      /* Here 0 <= carry <= beta*q* + beta-1.  */
-                      *destptr++ = ~(mp_limb_t) carry;
-                      carry = carry >> GMP_LIMB_BITS; /* <= q* */
-                    }
-                  cr = (mp_limb_t) carry;
-                }
-                /* Subtract cr from r_ptr[j + b_len], then forget about
-                   r_ptr[j + b_len].  */
-                if (cr > r_ptr[j + b_len])
-                  {
-                    /* Subtraction gave a carry.  */
-                    q_star = q_star - 1; /* q* := q* - 1 */
-                    /* Add b back.  */
-                    {
-                      const mp_limb_t *sourceptr = b_ptr;
-                      mp_limb_t *destptr = r_ptr + j;
-                      mp_limb_t carry = 0;
-                      size_t count;
-                      for (count = b_len; count > 0; count--)
-                        {
-                          mp_limb_t source1 = *sourceptr++;
-                          mp_limb_t source2 = *destptr;
-                          *destptr++ = source1 + source2 + carry;
-                          carry =
-                            (carry
-                             ? source1 >= (mp_limb_t) ~source2
-                             : source1 > (mp_limb_t) ~source2);
-                        }
-                    }
-                    /* Forget about the carry and about r[j+n].  */
-                  }
-              }
-            /* q* is determined.  Store it as q[j].  */
-            q_ptr[j] = q_star;
-            if (j == 0)
-              break;
-            j--;
-          }
-      }
-      r_len = b_len;
-      /* Normalise q.  */
-      if (q_ptr[q_len - 1] == 0)
-        q_len--;
-# if 0 /* Not needed here, since we need r only to compare it with b/2, and
-          b is shifted left by s bits.  */
-      /* Shift r right by s bits.  */
-      if (s > 0)
-        {
-          mp_limb_t ptr = r_ptr + r_len;
-          mp_twolimb_t accu = 0;
-          size_t count;
-          for (count = r_len; count > 0; count--)
-            {
-              accu = (mp_twolimb_t) (mp_limb_t) accu << GMP_LIMB_BITS;
-              accu += (mp_twolimb_t) *--ptr << (GMP_LIMB_BITS - s);
-              *ptr = (mp_limb_t) (accu >> GMP_LIMB_BITS);
-            }
-        }
-# endif
-      /* Normalise r.  */
-      while (r_len > 0 && r_ptr[r_len - 1] == 0)
-        r_len--;
-    }
-  /* Compare r << 1 with b.  */
-  if (r_len > b_len)
-    goto increment_q;
-  {
-    size_t i;
-    for (i = b_len;;)
-      {
-        mp_limb_t r_i =
-          (i <= r_len && i > 0 ? r_ptr[i - 1] >> (GMP_LIMB_BITS - 1) : 0)
-          | (i < r_len ? r_ptr[i] << 1 : 0);
-        mp_limb_t b_i = (i < b_len ? b_ptr[i] : 0);
-        if (r_i > b_i)
-          goto increment_q;
-        if (r_i < b_i)
-          goto keep_q;
-        if (i == 0)
-          break;
-        i--;
-      }
-  }
-  if (q_len > 0 && ((q_ptr[0] & 1) != 0))
-    /* q is odd.  */
-    increment_q:
-    {
-      size_t i;
-      for (i = 0; i < q_len; i++)
-        if (++(q_ptr[i]) != 0)
-          goto keep_q;
-      q_ptr[q_len++] = 1;
-    }
-  keep_q:
-  free (tmp_roomptr);
-  q->limbs = q_ptr;
-  q->nlimbs = q_len;
-  return roomptr;
-}
-
-/* Avoid pointless GCC warning "argument 1 value '18446744073709551615' exceeds
-   maximum object size 9223372036854775807", triggered by the use of xsum as
-   argument of malloc.  */
-# if __GNUC__ >= 7
-#  pragma GCC diagnostic push
-#  pragma GCC diagnostic ignored "-Walloc-size-larger-than="
-# endif
-
-/* Convert a bignum a >= 0, multiplied with 10^extra_zeroes, to decimal
-   representation.
-   Destroys the contents of a.
-   Return the allocated memory - containing the decimal digits in low-to-high
-   order, terminated with a NUL character - in case of success, NULL in case
-   of memory allocation failure.  */
-static char *
-convert_to_decimal (mpn_t a, size_t extra_zeroes)
-{
-  mp_limb_t *a_ptr = a.limbs;
-  size_t a_len = a.nlimbs;
-  /* 0.03345 is slightly larger than log(2)/(9*log(10)).  */
-  size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1);
-  /* We need extra_zeroes bytes for zeroes, followed by c_len bytes for the
-     digits of a, followed by 1 byte for the terminating NUL.  */
-  char *c_ptr = (char *) malloc (xsum (xsum (extra_zeroes, c_len), 1));
-  if (c_ptr != NULL)
-    {
-      char *d_ptr = c_ptr;
-      for (; extra_zeroes > 0; extra_zeroes--)
-        *d_ptr++ = '0';
-      while (a_len > 0)
-        {
-          /* Divide a by 10^9, in-place.  */
-          mp_limb_t remainder = 0;
-          mp_limb_t *ptr = a_ptr + a_len;
-          size_t count;
-          for (count = a_len; count > 0; count--)
-            {
-              mp_twolimb_t num =
-                ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--ptr;
-              *ptr = num / 1000000000;
-              remainder = num % 1000000000;
-            }
-          /* Store the remainder as 9 decimal digits.  */
-          for (count = 9; count > 0; count--)
-            {
-              *d_ptr++ = '0' + (remainder % 10);
-              remainder = remainder / 10;
-            }
-          /* Normalize a.  */
-          if (a_ptr[a_len - 1] == 0)
-            a_len--;
-        }
-      /* Remove leading zeroes.  */
-      while (d_ptr > c_ptr && d_ptr[-1] == '0')
-        d_ptr--;
-      /* But keep at least one zero.  */
-      if (d_ptr == c_ptr)
-        *d_ptr++ = '0';
-      /* Terminate the string.  */
-      *d_ptr = '\0';
-    }
-  return c_ptr;
-}
-
-# if __GNUC__ >= 7
-#  pragma GCC diagnostic pop
-# endif
-
-# if NEED_PRINTF_LONG_DOUBLE
-
-/* Assuming x is finite and >= 0:
-   write x as x = 2^e * m, where m is a bignum.
-   Return the allocated memory in case of success, NULL in case of memory
-   allocation failure.  */
-static void *
-decode_long_double (long double x, int *ep, mpn_t *mp)
-{
-  mpn_t m;
-  int exp;
-  long double y;
-  size_t i;
-
-  /* Allocate memory for result.  */
-  m.nlimbs = (LDBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS;
-  m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t));
-  if (m.limbs == NULL)
-    return NULL;
-  /* Split into exponential part and mantissa.  */
-  y = frexpl (x, &exp);
-  if (!(y >= 0.0L && y < 1.0L))
-    abort ();
-  /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * 2^LDBL_MANT_BIT), and the
-     latter is an integer.  */
-  /* Convert the mantissa (y * 2^LDBL_MANT_BIT) to a sequence of limbs.
-     I'm not sure whether it's safe to cast a 'long double' value between
-     2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
-     'long double' values between 0 and 2^16 (to 'unsigned int' or 'int',
-     doesn't matter).  */
-#  if (LDBL_MANT_BIT % GMP_LIMB_BITS) != 0
-#   if (LDBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2
-    {
-      mp_limb_t hi, lo;
-      y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % (GMP_LIMB_BITS / 2));
-      hi = (int) y;
-      y -= hi;
-      if (!(y >= 0.0L && y < 1.0L))
-        abort ();
-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
-      lo = (int) y;
-      y -= lo;
-      if (!(y >= 0.0L && y < 1.0L))
-        abort ();
-      m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | 
lo;
-    }
-#   else
-    {
-      mp_limb_t d;
-      y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % GMP_LIMB_BITS);
-      d = (int) y;
-      y -= d;
-      if (!(y >= 0.0L && y < 1.0L))
-        abort ();
-      m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = d;
-    }
-#   endif
-#  endif
-  for (i = LDBL_MANT_BIT / GMP_LIMB_BITS; i > 0; )
-    {
-      mp_limb_t hi, lo;
-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
-      hi = (int) y;
-      y -= hi;
-      if (!(y >= 0.0L && y < 1.0L))
-        abort ();
-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
-      lo = (int) y;
-      y -= lo;
-      if (!(y >= 0.0L && y < 1.0L))
-        abort ();
-      m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo;
-    }
-#  if 0 /* On FreeBSD 6.1/x86, 'long double' numbers sometimes have excess
-           precision.  */
-  if (!(y == 0.0L))
-    abort ();
-#  endif
-  /* Normalise.  */
-  while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0)
-    m.nlimbs--;
-  *mp = m;
-  *ep = exp - LDBL_MANT_BIT;
-  return m.limbs;
-}
-
-# endif
-
-# if NEED_PRINTF_DOUBLE
-
-/* Assuming x is finite and >= 0:
-   write x as x = 2^e * m, where m is a bignum.
-   Return the allocated memory in case of success, NULL in case of memory
-   allocation failure.  */
-static void *
-decode_double (double x, int *ep, mpn_t *mp)
-{
-  mpn_t m;
-  int exp;
-  double y;
-  size_t i;
-
-  /* Allocate memory for result.  */
-  m.nlimbs = (DBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS;
-  m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t));
-  if (m.limbs == NULL)
-    return NULL;
-  /* Split into exponential part and mantissa.  */
-  y = frexp (x, &exp);
-  if (!(y >= 0.0 && y < 1.0))
-    abort ();
-  /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * 2^DBL_MANT_BIT), and the
-     latter is an integer.  */
-  /* Convert the mantissa (y * 2^DBL_MANT_BIT) to a sequence of limbs.
-     I'm not sure whether it's safe to cast a 'double' value between
-     2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
-     'double' values between 0 and 2^16 (to 'unsigned int' or 'int',
-     doesn't matter).  */
-#  if (DBL_MANT_BIT % GMP_LIMB_BITS) != 0
-#   if (DBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2
-    {
-      mp_limb_t hi, lo;
-      y *= (mp_limb_t) 1 << (DBL_MANT_BIT % (GMP_LIMB_BITS / 2));
-      hi = (int) y;
-      y -= hi;
-      if (!(y >= 0.0 && y < 1.0))
-        abort ();
-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
-      lo = (int) y;
-      y -= lo;
-      if (!(y >= 0.0 && y < 1.0))
-        abort ();
-      m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo;
-    }
-#   else
-    {
-      mp_limb_t d;
-      y *= (mp_limb_t) 1 << (DBL_MANT_BIT % GMP_LIMB_BITS);
-      d = (int) y;
-      y -= d;
-      if (!(y >= 0.0 && y < 1.0))
-        abort ();
-      m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = d;
-    }
-#   endif
-#  endif
-  for (i = DBL_MANT_BIT / GMP_LIMB_BITS; i > 0; )
-    {
-      mp_limb_t hi, lo;
-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
-      hi = (int) y;
-      y -= hi;
-      if (!(y >= 0.0 && y < 1.0))
-        abort ();
-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
-      lo = (int) y;
-      y -= lo;
-      if (!(y >= 0.0 && y < 1.0))
-        abort ();
-      m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo;
-    }
-  if (!(y == 0.0))
-    abort ();
-  /* Normalise.  */
-  while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0)
-    m.nlimbs--;
-  *mp = m;
-  *ep = exp - DBL_MANT_BIT;
-  return m.limbs;
-}
-
-# endif
-
-/* Assuming x = 2^e * m is finite and >= 0, and n is an integer:
-   Returns the decimal representation of round (x * 10^n).
-   Return the allocated memory - containing the decimal digits in low-to-high
-   order, terminated with a NUL character - in case of success, NULL in case
-   of memory allocation failure.  */
-static char *
-scale10_round_decimal_decoded (int e, mpn_t m, void *memory, int n)
-{
-  int s;
-  size_t extra_zeroes;
-  unsigned int abs_n;
-  unsigned int abs_s;
-  mp_limb_t *pow5_ptr;
-  size_t pow5_len;
-  unsigned int s_limbs;
-  unsigned int s_bits;
-  mpn_t pow5;
-  mpn_t z;
-  void *z_memory;
-  char *digits;
-
-  /* x = 2^e * m, hence
-     y = round (2^e * 10^n * m) = round (2^(e+n) * 5^n * m)
-       = round (2^s * 5^n * m).  */
-  s = e + n;
-  extra_zeroes = 0;
-  /* Factor out a common power of 10 if possible.  */
-  if (s > 0 && n > 0)
-    {
-      extra_zeroes = (s < n ? s : n);
-      s -= extra_zeroes;
-      n -= extra_zeroes;
-    }
-  /* Here y = round (2^s * 5^n * m) * 10^extra_zeroes.
-     Before converting to decimal, we need to compute
-     z = round (2^s * 5^n * m).  */
-  /* Compute 5^|n|, possibly shifted by |s| bits if n and s have the same
-     sign.  2.322 is slightly larger than log(5)/log(2).  */
-  abs_n = (n >= 0 ? n : -n);
-  abs_s = (s >= 0 ? s : -s);
-  pow5_ptr = (mp_limb_t *) malloc (((int)(abs_n * (2.322f / GMP_LIMB_BITS)) + 1
-                                    + abs_s / GMP_LIMB_BITS + 1)
-                                   * sizeof (mp_limb_t));
-  if (pow5_ptr == NULL)
-    {
-      free (memory);
-      return NULL;
-    }
-  /* Initialize with 1.  */
-  pow5_ptr[0] = 1;
-  pow5_len = 1;
-  /* Multiply with 5^|n|.  */
-  if (abs_n > 0)
-    {
-      static mp_limb_t const small_pow5[13 + 1] =
-        {
-          1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625,
-          48828125, 244140625, 1220703125
-        };
-      unsigned int n13;
-      for (n13 = 0; n13 <= abs_n; n13 += 13)
-        {
-          mp_limb_t digit1 = small_pow5[n13 + 13 <= abs_n ? 13 : abs_n - n13];
-          size_t j;
-          mp_twolimb_t carry = 0;
-          for (j = 0; j < pow5_len; j++)
-            {
-              mp_limb_t digit2 = pow5_ptr[j];
-              carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2;
-              pow5_ptr[j] = (mp_limb_t) carry;
-              carry = carry >> GMP_LIMB_BITS;
-            }
-          if (carry > 0)
-            pow5_ptr[pow5_len++] = (mp_limb_t) carry;
-        }
-    }
-  s_limbs = abs_s / GMP_LIMB_BITS;
-  s_bits = abs_s % GMP_LIMB_BITS;
-  if (n >= 0 ? s >= 0 : s <= 0)
-    {
-      /* Multiply with 2^|s|.  */
-      if (s_bits > 0)
-        {
-          mp_limb_t *ptr = pow5_ptr;
-          mp_twolimb_t accu = 0;
-          size_t count;
-          for (count = pow5_len; count > 0; count--)
-            {
-              accu += (mp_twolimb_t) *ptr << s_bits;
-              *ptr++ = (mp_limb_t) accu;
-              accu = accu >> GMP_LIMB_BITS;
-            }
-          if (accu > 0)
-            {
-              *ptr = (mp_limb_t) accu;
-              pow5_len++;
-            }
-        }
-      if (s_limbs > 0)
-        {
-          size_t count;
-          for (count = pow5_len; count > 0;)
-            {
-              count--;
-              pow5_ptr[s_limbs + count] = pow5_ptr[count];
-            }
-          for (count = s_limbs; count > 0;)
-            {
-              count--;
-              pow5_ptr[count] = 0;
-            }
-          pow5_len += s_limbs;
-        }
-      pow5.limbs = pow5_ptr;
-      pow5.nlimbs = pow5_len;
-      if (n >= 0)
-        {
-          /* Multiply m with pow5.  No division needed.  */
-          z_memory = multiply (m, pow5, &z);
-        }
-      else
-        {
-          /* Divide m by pow5 and round.  */
-          z_memory = divide (m, pow5, &z);
-        }
-    }
-  else
-    {
-      pow5.limbs = pow5_ptr;
-      pow5.nlimbs = pow5_len;
-      if (n >= 0)
-        {
-          /* n >= 0, s < 0.
-             Multiply m with pow5, then divide by 2^|s|.  */
-          mpn_t numerator;
-          mpn_t denominator;
-          void *tmp_memory;
-          tmp_memory = multiply (m, pow5, &numerator);
-          if (tmp_memory == NULL)
-            {
-              free (pow5_ptr);
-              free (memory);
-              return NULL;
-            }
-          /* Construct 2^|s|.  */
-          {
-            mp_limb_t *ptr = pow5_ptr + pow5_len;
-            size_t i;
-            for (i = 0; i < s_limbs; i++)
-              ptr[i] = 0;
-            ptr[s_limbs] = (mp_limb_t) 1 << s_bits;
-            denominator.limbs = ptr;
-            denominator.nlimbs = s_limbs + 1;
-          }
-          z_memory = divide (numerator, denominator, &z);
-          free (tmp_memory);
-        }
-      else
-        {
-          /* n < 0, s > 0.
-             Multiply m with 2^s, then divide by pow5.  */
-          mpn_t numerator;
-          mp_limb_t *num_ptr;
-          num_ptr = (mp_limb_t *) malloc ((m.nlimbs + s_limbs + 1)
-                                          * sizeof (mp_limb_t));
-          if (num_ptr == NULL)
-            {
-              free (pow5_ptr);
-              free (memory);
-              return NULL;
-            }
-          {
-            mp_limb_t *destptr = num_ptr;
-            {
-              size_t i;
-              for (i = 0; i < s_limbs; i++)
-                *destptr++ = 0;
-            }
-            if (s_bits > 0)
-              {
-                const mp_limb_t *sourceptr = m.limbs;
-                mp_twolimb_t accu = 0;
-                size_t count;
-                for (count = m.nlimbs; count > 0; count--)
-                  {
-                    accu += (mp_twolimb_t) *sourceptr++ << s_bits;
-                    *destptr++ = (mp_limb_t) accu;
-                    accu = accu >> GMP_LIMB_BITS;
-                  }
-                if (accu > 0)
-                  *destptr++ = (mp_limb_t) accu;
-              }
-            else
-              {
-                const mp_limb_t *sourceptr = m.limbs;
-                size_t count;
-                for (count = m.nlimbs; count > 0; count--)
-                  *destptr++ = *sourceptr++;
-              }
-            numerator.limbs = num_ptr;
-            numerator.nlimbs = destptr - num_ptr;
-          }
-          z_memory = divide (numerator, pow5, &z);
-          free (num_ptr);
-        }
-    }
-  free (pow5_ptr);
-  free (memory);
-
-  /* Here y = round (x * 10^n) = z * 10^extra_zeroes.  */
-
-  if (z_memory == NULL)
-    return NULL;
-  digits = convert_to_decimal (z, extra_zeroes);
-  free (z_memory);
-  return digits;
-}
-
-# if NEED_PRINTF_LONG_DOUBLE
-
-/* Assuming x is finite and >= 0, and n is an integer:
-   Returns the decimal representation of round (x * 10^n).
-   Return the allocated memory - containing the decimal digits in low-to-high
-   order, terminated with a NUL character - in case of success, NULL in case
-   of memory allocation failure.  */
-static char *
-scale10_round_decimal_long_double (long double x, int n)
-{
-  int e;
-  mpn_t m;
-  void *memory = decode_long_double (x, &e, &m);
-  if (memory != NULL)
-    return scale10_round_decimal_decoded (e, m, memory, n);
-  else
-    return NULL;
-}
-
-# endif
-
-# if NEED_PRINTF_DOUBLE
-
-/* Assuming x is finite and >= 0, and n is an integer:
-   Returns the decimal representation of round (x * 10^n).
-   Return the allocated memory - containing the decimal digits in low-to-high
-   order, terminated with a NUL character - in case of success, NULL in case
-   of memory allocation failure.  */
-static char *
-scale10_round_decimal_double (double x, int n)
-{
-  int e;
-  mpn_t m;
-  void *memory = decode_double (x, &e, &m);
-  if (memory != NULL)
-    return scale10_round_decimal_decoded (e, m, memory, n);
-  else
-    return NULL;
-}
-
-# endif
-
-# if NEED_PRINTF_LONG_DOUBLE
-
-/* Assuming x is finite and > 0:
-   Return an approximation for n with 10^n <= x < 10^(n+1).
-   The approximation is usually the right n, but may be off by 1 sometimes.  */
-static int
-floorlog10l (long double x)
-{
-  int exp;
-  long double y;
-  double z;
-  double l;
-
-  /* Split into exponential part and mantissa.  */
-  y = frexpl (x, &exp);
-  if (!(y >= 0.0L && y < 1.0L))
-    abort ();
-  if (y == 0.0L)
-    return INT_MIN;
-  if (y < 0.5L)
-    {
-      while (y < (1.0L / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 
2))))
-        {
-          y *= 1.0L * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2));
-          exp -= GMP_LIMB_BITS;
-        }
-      if (y < (1.0L / (1 << 16)))
-        {
-          y *= 1.0L * (1 << 16);
-          exp -= 16;
-        }
-      if (y < (1.0L / (1 << 8)))
-        {
-          y *= 1.0L * (1 << 8);
-          exp -= 8;
-        }
-      if (y < (1.0L / (1 << 4)))
-        {
-          y *= 1.0L * (1 << 4);
-          exp -= 4;
-        }
-      if (y < (1.0L / (1 << 2)))
-        {
-          y *= 1.0L * (1 << 2);
-          exp -= 2;
-        }
-      if (y < (1.0L / (1 << 1)))
-        {
-          y *= 1.0L * (1 << 1);
-          exp -= 1;
-        }
-    }
-  if (!(y >= 0.5L && y < 1.0L))
-    abort ();
-  /* Compute an approximation for l = log2(x) = exp + log2(y).  */
-  l = exp;
-  z = y;
-  if (z < 0.70710678118654752444)
-    {
-      z *= 1.4142135623730950488;
-      l -= 0.5;
-    }
-  if (z < 0.8408964152537145431)
-    {
-      z *= 1.1892071150027210667;
-      l -= 0.25;
-    }
-  if (z < 0.91700404320467123175)
-    {
-      z *= 1.0905077326652576592;
-      l -= 0.125;
-    }
-  if (z < 0.9576032806985736469)
-    {
-      z *= 1.0442737824274138403;
-      l -= 0.0625;
-    }
-  /* Now 0.95 <= z <= 1.01.  */
-  z = 1 - z;
-  /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...)
-     Four terms are enough to get an approximation with error < 10^-7.  */
-  l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 
0.25)));
-  /* Finally multiply with log(2)/log(10), yields an approximation for
-     log10(x).  */
-  l *= 0.30102999566398119523;
-  /* Round down to the next integer.  */
-  return (int) l + (l < 0 ? -1 : 0);
-}
-
-# endif
-
-# if NEED_PRINTF_DOUBLE
-
-/* Assuming x is finite and > 0:
-   Return an approximation for n with 10^n <= x < 10^(n+1).
-   The approximation is usually the right n, but may be off by 1 sometimes.  */
-static int
-floorlog10 (double x)
-{
-  int exp;
-  double y;
-  double z;
-  double l;
-
-  /* Split into exponential part and mantissa.  */
-  y = frexp (x, &exp);
-  if (!(y >= 0.0 && y < 1.0))
-    abort ();
-  if (y == 0.0)
-    return INT_MIN;
-  if (y < 0.5)
-    {
-      while (y < (1.0 / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 
2))))
-        {
-          y *= 1.0 * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2));
-          exp -= GMP_LIMB_BITS;
-        }
-      if (y < (1.0 / (1 << 16)))
-        {
-          y *= 1.0 * (1 << 16);
-          exp -= 16;
-        }
-      if (y < (1.0 / (1 << 8)))
-        {
-          y *= 1.0 * (1 << 8);
-          exp -= 8;
-        }
-      if (y < (1.0 / (1 << 4)))
-        {
-          y *= 1.0 * (1 << 4);
-          exp -= 4;
-        }
-      if (y < (1.0 / (1 << 2)))
-        {
-          y *= 1.0 * (1 << 2);
-          exp -= 2;
-        }
-      if (y < (1.0 / (1 << 1)))
-        {
-          y *= 1.0 * (1 << 1);
-          exp -= 1;
-        }
-    }
-  if (!(y >= 0.5 && y < 1.0))
-    abort ();
-  /* Compute an approximation for l = log2(x) = exp + log2(y).  */
-  l = exp;
-  z = y;
-  if (z < 0.70710678118654752444)
-    {
-      z *= 1.4142135623730950488;
-      l -= 0.5;
-    }
-  if (z < 0.8408964152537145431)
-    {
-      z *= 1.1892071150027210667;
-      l -= 0.25;
-    }
-  if (z < 0.91700404320467123175)
-    {
-      z *= 1.0905077326652576592;
-      l -= 0.125;
-    }
-  if (z < 0.9576032806985736469)
-    {
-      z *= 1.0442737824274138403;
-      l -= 0.0625;
-    }
-  /* Now 0.95 <= z <= 1.01.  */
-  z = 1 - z;
-  /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...)
-     Four terms are enough to get an approximation with error < 10^-7.  */
-  l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 
0.25)));
-  /* Finally multiply with log(2)/log(10), yields an approximation for
-     log10(x).  */
-  l *= 0.30102999566398119523;
-  /* Round down to the next integer.  */
-  return (int) l + (l < 0 ? -1 : 0);
-}
-
-# endif
-
-/* Tests whether a string of digits consists of exactly PRECISION zeroes and
-   a single '1' digit.  */
-static int
-is_borderline (const char *digits, size_t precision)
-{
-  for (; precision > 0; precision--, digits++)
-    if (*digits != '0')
-      return 0;
-  if (*digits != '1')
-    return 0;
-  digits++;
-  return *digits == '\0';
-}
-
-#endif
-
-#if !USE_SNPRINTF || (WIDE_CHAR_VERSION && DCHAR_IS_TCHAR) || 
!HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF
-
-/* Use a different function name, to make it possible that the 'wchar_t'
-   parametrization and the 'char' parametrization get compiled in the same
-   translation unit.  */
-# if WIDE_CHAR_VERSION
-#  define MAX_ROOM_NEEDED wmax_room_needed
-# else
-#  define MAX_ROOM_NEEDED max_room_needed
-# endif
-
-/* Returns the number of TCHAR_T units needed as temporary space for the result
-   of sprintf or SNPRINTF of a single conversion directive.  */
-static size_t
-MAX_ROOM_NEEDED (const arguments *ap, size_t arg_index, FCHAR_T conversion,
-                 arg_type type, int flags, size_t width, int has_precision,
-                 size_t precision, int pad_ourselves)
-{
-  size_t tmp_length;
-
-  switch (conversion)
-    {
-    case 'd': case 'i': case 'u':
-      switch (type)
-        {
-        default:
-          tmp_length =
-            (unsigned int) (sizeof (unsigned int) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_LONGINT:
-          tmp_length =
-            (unsigned int) (sizeof (long int) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_ULONGINT:
-          tmp_length =
-            (unsigned int) (sizeof (unsigned long int) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_LONGLONGINT:
-          tmp_length =
-            (unsigned int) (sizeof (long long int) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_ULONGLONGINT:
-          tmp_length =
-            (unsigned int) (sizeof (unsigned long long int) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_INT8_T:
-          tmp_length =
-            (unsigned int) (sizeof (int8_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT8_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint8_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_INT16_T:
-          tmp_length =
-            (unsigned int) (sizeof (int16_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT16_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint16_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_INT32_T:
-          tmp_length =
-            (unsigned int) (sizeof (int32_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT32_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint32_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_INT64_T:
-          tmp_length =
-            (unsigned int) (sizeof (int64_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT64_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint64_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_INT_FAST8_T:
-          tmp_length =
-            (unsigned int) (sizeof (int_fast8_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST8_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast8_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_INT_FAST16_T:
-          tmp_length =
-            (unsigned int) (sizeof (int_fast16_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST16_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast16_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_INT_FAST32_T:
-          tmp_length =
-            (unsigned int) (sizeof (int_fast32_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST32_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast32_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_INT_FAST64_T:
-          tmp_length =
-            (unsigned int) (sizeof (int_fast64_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST64_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast64_t) * CHAR_BIT
-                            * 0.30103 /* binary -> decimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        }
-      if (tmp_length < precision)
-        tmp_length = precision;
-      /* Multiply by 2, as an estimate for FLAG_GROUP.  */
-      tmp_length = xsum (tmp_length, tmp_length);
-      /* Add 1, to account for a leading sign.  */
-      tmp_length = xsum (tmp_length, 1);
-      break;
-
-    case 'b':
-    #if SUPPORT_GNU_PRINTF_DIRECTIVES \
-        || (__GLIBC__ + (__GLIBC_MINOR__ >= 35) > 2)
-    case 'B':
-    #endif
-      switch (type)
-        {
-        default:
-          tmp_length =
-            (unsigned int) (sizeof (unsigned int) * CHAR_BIT)
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_ULONGINT:
-          tmp_length =
-            (unsigned int) (sizeof (unsigned long int) * CHAR_BIT)
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_ULONGLONGINT:
-          tmp_length =
-            (unsigned int) (sizeof (unsigned long long int) * CHAR_BIT)
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT8_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint8_t) * CHAR_BIT)
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT16_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint16_t) * CHAR_BIT)
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT32_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint32_t) * CHAR_BIT)
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT64_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint64_t) * CHAR_BIT)
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST8_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast8_t) * CHAR_BIT)
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST16_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast16_t) * CHAR_BIT)
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST32_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast32_t) * CHAR_BIT)
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST64_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast64_t) * CHAR_BIT)
-            + 1; /* turn floor into ceil */
-          break;
-        }
-      if (tmp_length < precision)
-        tmp_length = precision;
-      /* Add 2, to account for a prefix from the alternate form.  */
-      tmp_length = xsum (tmp_length, 2);
-      break;
-
-    case 'o':
-      switch (type)
-        {
-        default:
-          tmp_length =
-            (unsigned int) (sizeof (unsigned int) * CHAR_BIT
-                            * 0.333334 /* binary -> octal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_ULONGINT:
-          tmp_length =
-            (unsigned int) (sizeof (unsigned long int) * CHAR_BIT
-                            * 0.333334 /* binary -> octal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_ULONGLONGINT:
-          tmp_length =
-            (unsigned int) (sizeof (unsigned long long int) * CHAR_BIT
-                            * 0.333334 /* binary -> octal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT8_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint8_t) * CHAR_BIT
-                            * 0.333334 /* binary -> octal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT16_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint16_t) * CHAR_BIT
-                            * 0.333334 /* binary -> octal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT32_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint32_t) * CHAR_BIT
-                            * 0.333334 /* binary -> octal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT64_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint64_t) * CHAR_BIT
-                            * 0.333334 /* binary -> octal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST8_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast8_t) * CHAR_BIT
-                            * 0.333334 /* binary -> octal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST16_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast16_t) * CHAR_BIT
-                            * 0.333334 /* binary -> octal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST32_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast32_t) * CHAR_BIT
-                            * 0.333334 /* binary -> octal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST64_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast64_t) * CHAR_BIT
-                            * 0.333334 /* binary -> octal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        }
-      if (tmp_length < precision)
-        tmp_length = precision;
-      /* Add 1, to account for a leading sign.  */
-      tmp_length = xsum (tmp_length, 1);
-      break;
-
-    case 'x': case 'X':
-      switch (type)
-        {
-        default:
-          tmp_length =
-            (unsigned int) (sizeof (unsigned int) * CHAR_BIT
-                            * 0.25 /* binary -> hexadecimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_ULONGINT:
-          tmp_length =
-            (unsigned int) (sizeof (unsigned long int) * CHAR_BIT
-                            * 0.25 /* binary -> hexadecimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_ULONGLONGINT:
-          tmp_length =
-            (unsigned int) (sizeof (unsigned long long int) * CHAR_BIT
-                            * 0.25 /* binary -> hexadecimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT8_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint8_t) * CHAR_BIT
-                            * 0.25 /* binary -> hexadecimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT16_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint16_t) * CHAR_BIT
-                            * 0.25 /* binary -> hexadecimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT32_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint32_t) * CHAR_BIT
-                            * 0.25 /* binary -> hexadecimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT64_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint64_t) * CHAR_BIT
-                            * 0.25 /* binary -> hexadecimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST8_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast8_t) * CHAR_BIT
-                            * 0.25 /* binary -> hexadecimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST16_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast16_t) * CHAR_BIT
-                            * 0.25 /* binary -> hexadecimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST32_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast32_t) * CHAR_BIT
-                            * 0.25 /* binary -> hexadecimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        case TYPE_UINT_FAST64_T:
-          tmp_length =
-            (unsigned int) (sizeof (uint_fast64_t) * CHAR_BIT
-                            * 0.25 /* binary -> hexadecimal */
-                           )
-            + 1; /* turn floor into ceil */
-          break;
-        }
-      if (tmp_length < precision)
-        tmp_length = precision;
-      /* Add 2, to account for a prefix from the alternate form.  */
-      tmp_length = xsum (tmp_length, 2);
-      break;
-
-    case 'f': case 'F':
-      if (type == TYPE_LONGDOUBLE)
-        tmp_length =
-          (unsigned int) (LDBL_MAX_EXP
-                          * 0.30103 /* binary -> decimal */
-                          * 2 /* estimate for FLAG_GROUP */
-                         )
-          + 1 /* turn floor into ceil */
-          + 10; /* sign, decimal point etc. */
-      else
-        tmp_length =
-          (unsigned int) (DBL_MAX_EXP
-                          * 0.30103 /* binary -> decimal */
-                          * 2 /* estimate for FLAG_GROUP */
-                         )
-          + 1 /* turn floor into ceil */
-          + 10; /* sign, decimal point etc. */
-      tmp_length = xsum (tmp_length, precision);
-      break;
-
-    case 'e': case 'E': case 'g': case 'G':
-      tmp_length =
-        12; /* sign, decimal point, exponent etc. */
-      tmp_length = xsum (tmp_length, precision);
-      break;
-
-    case 'a': case 'A':
-      if (type == TYPE_LONGDOUBLE)
-        tmp_length =
-          (unsigned int) (LDBL_DIG
-                          * 0.831 /* decimal -> hexadecimal */
-                         )
-          + 1; /* turn floor into ceil */
-      else
-        tmp_length =
-          (unsigned int) (DBL_DIG
-                          * 0.831 /* decimal -> hexadecimal */
-                         )
-          + 1; /* turn floor into ceil */
-      if (tmp_length < precision)
-        tmp_length = precision;
-      /* Account for sign, decimal point etc. */
-      tmp_length = xsum (tmp_length, 12);
-      break;
-
-    case 'c':
-# if HAVE_WINT_T && !WIDE_CHAR_VERSION
-      if (type == TYPE_WIDE_CHAR)
-        {
-          tmp_length = MB_CUR_MAX;
-#  if ENABLE_WCHAR_FALLBACK
-          if (tmp_length < (sizeof (wchar_t) > 2 ? 10 : 6))
-            tmp_length = (sizeof (wchar_t) > 2 ? 10 : 6);
-#  endif
-        }
-      else
-# endif
-        tmp_length = 1;
-      break;
-
-    case 's':
-# if HAVE_WCHAR_T
-      if (type == TYPE_WIDE_STRING)
-        {
-#  if WIDE_CHAR_VERSION
-          /* ISO C says about %ls in fwprintf:
-               "If the precision is not specified or is greater than the size
-                of the array, the array shall contain a null wide character."
-             So if there is a precision, we must not use wcslen.  */
-          const wchar_t *arg = ap->arg[arg_index].a.a_wide_string;
-
-          if (has_precision)
-            tmp_length = local_wcsnlen (arg, precision);
-          else
-            tmp_length = local_wcslen (arg);
-#  else
-          /* ISO C says about %ls in fprintf:
-               "If a precision is specified, no more than that many bytes are
-                written (including shift sequences, if any), and the array
-                shall contain a null wide character if, to equal the multibyte
-                character sequence length given by the precision, the function
-                would need to access a wide character one past the end of the
-                array."
-             So if there is a precision, we must not use wcslen.  */
-          /* This case has already been handled separately in VASNPRINTF.  */
-          abort ();
-#  endif
-        }
-      else
-# endif
-        {
-# if WIDE_CHAR_VERSION
-          /* ISO C says about %s in fwprintf:
-               "If the precision is not specified or is greater than the size
-                of the converted array, the converted array shall contain a
-                null wide character."
-             So if there is a precision, we must not use strlen.  */
-          /* This case has already been handled separately in VASNPRINTF.  */
-          abort ();
-# else
-          /* ISO C says about %s in fprintf:
-               "If the precision is not specified or greater than the size of
-                the array, the array shall contain a null character."
-             So if there is a precision, we must not use strlen.  */
-          const char *arg = ap->arg[arg_index].a.a_string;
-
-          if (has_precision)
-            tmp_length = local_strnlen (arg, precision);
-          else
-            tmp_length = strlen (arg);
-# endif
-        }
-      break;
-
-    case 'p':
-      tmp_length =
-        (unsigned int) (sizeof (void *) * CHAR_BIT
-                        * 0.25 /* binary -> hexadecimal */
-                       )
-          + 1 /* turn floor into ceil */
-          + 2; /* account for leading 0x */
-      break;
-
-    default:
-      abort ();
-    }
-
-  if (!pad_ourselves)
-    {
-# if ENABLE_UNISTDIO
-      /* Padding considers the number of characters, therefore the number of
-         elements after padding may be
-           > max (tmp_length, width)
-         but is certainly
-           <= tmp_length + width.  */
-      tmp_length = xsum (tmp_length, width);
-# else
-      /* Padding considers the number of elements, says POSIX.  */
-      if (tmp_length < width)
-        tmp_length = width;
-# endif
-    }
-
-  tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
-
-  return tmp_length;
-}
-
-#endif
-
-DCHAR_T *
-VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
-            const FCHAR_T *format, va_list args)
-{
-  DIRECTIVES d;
-  arguments a;
-
-  if (PRINTF_PARSE (format, &d, &a) < 0)
-    /* errno is already set.  */
-    return NULL;
-
-  /* Frees the memory allocated by this function.  Preserves errno.  */
-#define CLEANUP() \
-  if (d.dir != d.direct_alloc_dir)                                      \
-    free (d.dir);                                                       \
-  if (a.arg != a.direct_alloc_arg)                                      \
-    free (a.arg);
-
-  if (PRINTF_FETCHARGS (args, &a) < 0)
-    goto fail_1_with_EINVAL;
-
-  {
-    size_t buf_neededlength;
-    TCHAR_T *buf;
-    TCHAR_T *buf_malloced;
-    const FCHAR_T *cp;
-    size_t i;
-    DIRECTIVE *dp;
-    /* Output string accumulator.  */
-    DCHAR_T *result;
-    size_t allocated;
-    size_t length;
-
-    /* Allocate a small buffer that will hold a directive passed to
-       sprintf or snprintf.  */
-    buf_neededlength =
-      xsum4 (7, d.max_width_length, d.max_precision_length, 6);
-#if HAVE_ALLOCA
-    if (buf_neededlength < 4000 / sizeof (TCHAR_T))
-      {
-        buf = (TCHAR_T *) alloca (buf_neededlength * sizeof (TCHAR_T));
-        buf_malloced = NULL;
-      }
-    else
-#endif
-      {
-        size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T));
-        if (size_overflow_p (buf_memsize))
-          goto out_of_memory_1;
-        buf = (TCHAR_T *) malloc (buf_memsize);
-        if (buf == NULL)
-          goto out_of_memory_1;
-        buf_malloced = buf;
-      }
-
-    result = resultbuf;
-    allocated = (resultbuf != NULL ? *lengthp : 0);
-    length = 0;
-    /* Invariants:
-       result is either == resultbuf or malloc-allocated.
-       If result == NULL, resultbuf is == NULL as well.
-       If length > 0, then result != NULL.  */
-
-    /* Ensures that allocated >= needed.  Aborts through a jump to
-       out_of_memory if needed is SIZE_MAX or otherwise too big.  */
-#define ENSURE_ALLOCATION_ELSE(needed, oom_statement) \
-    if ((needed) > allocated)                                                \
-      {                                                                      \
-        size_t memory_size;                                                  \
-        DCHAR_T *memory;                                                     \
-                                                                             \
-        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
-        if ((needed) > allocated)                                            \
-          allocated = (needed);                                              \
-        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
-        if (size_overflow_p (memory_size))                                   \
-          oom_statement                                                      \
-        if (result == resultbuf)                                             \
-          memory = (DCHAR_T *) malloc (memory_size);                         \
-        else                                                                 \
-          memory = (DCHAR_T *) realloc (result, memory_size);                \
-        if (memory == NULL)                                                  \
-          oom_statement                                                      \
-        if (result == resultbuf && length > 0)                               \
-          DCHAR_CPY (memory, result, length);                                \
-        result = memory;                                                     \
-      }
-#define ENSURE_ALLOCATION(needed) \
-  ENSURE_ALLOCATION_ELSE((needed), goto out_of_memory; )
-
-    for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
-      {
-        if (cp != dp->dir_start)
-          {
-            size_t n = dp->dir_start - cp;
-            size_t augmented_length = xsum (length, n);
-
-            ENSURE_ALLOCATION (augmented_length);
-            /* This copies a piece of FCHAR_T[] into a DCHAR_T[].  Here we
-               need that the format string contains only ASCII characters
-               if FCHAR_T and DCHAR_T are not the same type.  */
-            if (sizeof (FCHAR_T) == sizeof (DCHAR_T))
-              {
-                DCHAR_CPY (result + length, (const DCHAR_T *) cp, n);
-                length = augmented_length;
-              }
-            else
-              {
-                do
-                  result[length++] = *cp++;
-                while (--n > 0);
-              }
-          }
-        if (i == d.count)
-          break;
-
-        /* Execute a single directive.  */
-        if (dp->conversion == '%')
-          {
-            size_t augmented_length;
-
-            if (!(dp->arg_index == ARG_NONE))
-              abort ();
-            augmented_length = xsum (length, 1);
-            ENSURE_ALLOCATION (augmented_length);
-            result[length] = '%';
-            length = augmented_length;
-          }
-        else
-          {
-            if (!(dp->arg_index != ARG_NONE))
-              abort ();
-
-            if (dp->conversion == 'n')
-              {
-                switch (a.arg[dp->arg_index].type)
-                  {
-                  case TYPE_COUNT_SCHAR_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_schar_pointer = length;
-                    break;
-                  case TYPE_COUNT_SHORT_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_short_pointer = length;
-                    break;
-                  case TYPE_COUNT_INT_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_int_pointer = length;
-                    break;
-                  case TYPE_COUNT_LONGINT_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_longint_pointer = length;
-                    break;
-                  case TYPE_COUNT_LONGLONGINT_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_longlongint_pointer = 
length;
-                    break;
-                  case TYPE_COUNT_INT8_T_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_int8_t_pointer = length;
-                    break;
-                  case TYPE_COUNT_INT16_T_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_int16_t_pointer = length;
-                    break;
-                  case TYPE_COUNT_INT32_T_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_int32_t_pointer = length;
-                    break;
-                  case TYPE_COUNT_INT64_T_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_int64_t_pointer = length;
-                    break;
-                  case TYPE_COUNT_INT_FAST8_T_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_int_fast8_t_pointer = 
length;
-                    break;
-                  case TYPE_COUNT_INT_FAST16_T_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_int_fast16_t_pointer = 
length;
-                    break;
-                  case TYPE_COUNT_INT_FAST32_T_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_int_fast32_t_pointer = 
length;
-                    break;
-                  case TYPE_COUNT_INT_FAST64_T_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_int_fast64_t_pointer = 
length;
-                    break;
-                  default:
-                    abort ();
-                  }
-              }
-#if ENABLE_UNISTDIO
-            /* The unistdio extensions.  */
-            else if (dp->conversion == 'U')
-              {
-                arg_type type = a.arg[dp->arg_index].type;
-                int flags = dp->flags;
-                int has_width;
-                size_t width;
-                int has_precision;
-                size_t precision;
-
-                has_width = 0;
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        width = arg;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = -width;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                    has_width = 1;
-                  }
-
-                has_precision = 0;
-                precision = 0;
-                if (dp->precision_start != dp->precision_end)
-                  {
-                    if (dp->precision_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->precision_arg_index].a.a_int;
-                        /* "A negative precision is taken as if the precision
-                            were omitted."  */
-                        if (arg >= 0)
-                          {
-                            precision = arg;
-                            has_precision = 1;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->precision_start + 1;
-
-                        precision = 0;
-                        while (digitp != dp->precision_end)
-                          precision = xsum (xtimes (precision, 10), *digitp++ 
- '0');
-                        has_precision = 1;
-                      }
-                  }
-
-                switch (type)
-                  {
-                  case TYPE_U8_STRING:
-                    {
-                      const uint8_t *arg = a.arg[dp->arg_index].a.a_u8_string;
-                      const uint8_t *arg_end;
-                      size_t characters;
-
-                      if (has_precision)
-                        {
-                          /* Use only PRECISION characters, from the left.  */
-                          arg_end = arg;
-                          characters = 0;
-                          for (; precision > 0; precision--)
-                            {
-                              int count = u8_strmblen (arg_end);
-                              if (count == 0)
-                                break;
-                              if (count < 0)
-                                goto fail_with_EILSEQ;
-                              arg_end += count;
-                              characters++;
-                            }
-                        }
-                      else if (has_width)
-                        {
-                          /* Use the entire string, and count the number of
-                             characters.  */
-                          arg_end = arg;
-                          characters = 0;
-                          for (;;)
-                            {
-                              int count = u8_strmblen (arg_end);
-                              if (count == 0)
-                                break;
-                              if (count < 0)
-                                goto fail_with_EILSEQ;
-                              arg_end += count;
-                              characters++;
-                            }
-                        }
-                      else
-                        {
-                          /* Use the entire string.  */
-                          arg_end = arg + u8_strlen (arg);
-                          /* The number of characters doesn't matter.  */
-                          characters = 0;
-                        }
-
-                      if (characters < width && !(flags & FLAG_LEFT))
-                        {
-                          size_t n = width - characters;
-                          ENSURE_ALLOCATION (xsum (length, n));
-                          DCHAR_SET (result + length, ' ', n);
-                          length += n;
-                        }
-
-# if DCHAR_IS_UINT8_T
-                      {
-                        size_t n = arg_end - arg;
-                        ENSURE_ALLOCATION (xsum (length, n));
-                        DCHAR_CPY (result + length, arg, n);
-                        length += n;
-                      }
-# else
-                      { /* Convert.  */
-                        DCHAR_T *converted = result + length;
-                        size_t converted_len = allocated - length;
-#  if DCHAR_IS_TCHAR
-                        /* Convert from UTF-8 to locale encoding.  */
-                        converted =
-                          u8_conv_to_encoding (locale_charset (),
-                                               iconveh_question_mark,
-                                               arg, arg_end - arg, NULL,
-                                               converted, &converted_len);
-#  else
-                        /* Convert from UTF-8 to UTF-16/UTF-32.  */
-                        converted =
-                          U8_TO_DCHAR (arg, arg_end - arg,
-                                       converted, &converted_len);
-#  endif
-                        if (converted == NULL)
-                          goto fail_with_errno;
-                        if (converted != result + length)
-                          {
-                            ENSURE_ALLOCATION_ELSE (xsum (length, 
converted_len),
-                                                    { free (converted); goto 
out_of_memory; });
-                            DCHAR_CPY (result + length, converted, 
converted_len);
-                            free (converted);
-                          }
-                        length += converted_len;
-                      }
-# endif
-
-                      if (characters < width && (flags & FLAG_LEFT))
-                        {
-                          size_t n = width - characters;
-                          ENSURE_ALLOCATION (xsum (length, n));
-                          DCHAR_SET (result + length, ' ', n);
-                          length += n;
-                        }
-                    }
-                    break;
-
-                  case TYPE_U16_STRING:
-                    {
-                      const uint16_t *arg = 
a.arg[dp->arg_index].a.a_u16_string;
-                      const uint16_t *arg_end;
-                      size_t characters;
-
-                      if (has_precision)
-                        {
-                          /* Use only PRECISION characters, from the left.  */
-                          arg_end = arg;
-                          characters = 0;
-                          for (; precision > 0; precision--)
-                            {
-                              int count = u16_strmblen (arg_end);
-                              if (count == 0)
-                                break;
-                              if (count < 0)
-                                goto fail_with_EILSEQ;
-                              arg_end += count;
-                              characters++;
-                            }
-                        }
-                      else if (has_width)
-                        {
-                          /* Use the entire string, and count the number of
-                             characters.  */
-                          arg_end = arg;
-                          characters = 0;
-                          for (;;)
-                            {
-                              int count = u16_strmblen (arg_end);
-                              if (count == 0)
-                                break;
-                              if (count < 0)
-                                goto fail_with_EILSEQ;
-                              arg_end += count;
-                              characters++;
-                            }
-                        }
-                      else
-                        {
-                          /* Use the entire string.  */
-                          arg_end = arg + u16_strlen (arg);
-                          /* The number of characters doesn't matter.  */
-                          characters = 0;
-                        }
-
-                      if (characters < width && !(flags & FLAG_LEFT))
-                        {
-                          size_t n = width - characters;
-                          ENSURE_ALLOCATION (xsum (length, n));
-                          DCHAR_SET (result + length, ' ', n);
-                          length += n;
-                        }
-
-# if DCHAR_IS_UINT16_T
-                      {
-                        size_t n = arg_end - arg;
-                        ENSURE_ALLOCATION (xsum (length, n));
-                        DCHAR_CPY (result + length, arg, n);
-                        length += n;
-                      }
-# else
-                      { /* Convert.  */
-                        DCHAR_T *converted = result + length;
-                        size_t converted_len = allocated - length;
-#  if DCHAR_IS_TCHAR
-                        /* Convert from UTF-16 to locale encoding.  */
-                        converted =
-                          u16_conv_to_encoding (locale_charset (),
-                                                iconveh_question_mark,
-                                                arg, arg_end - arg, NULL,
-                                                converted, &converted_len);
-#  else
-                        /* Convert from UTF-16 to UTF-8/UTF-32.  */
-                        converted =
-                          U16_TO_DCHAR (arg, arg_end - arg,
-                                        converted, &converted_len);
-#  endif
-                        if (converted == NULL)
-                          goto fail_with_errno;
-                        if (converted != result + length)
-                          {
-                            ENSURE_ALLOCATION_ELSE (xsum (length, 
converted_len),
-                                                    { free (converted); goto 
out_of_memory; });
-                            DCHAR_CPY (result + length, converted, 
converted_len);
-                            free (converted);
-                          }
-                        length += converted_len;
-                      }
-# endif
-
-                      if (characters < width && (flags & FLAG_LEFT))
-                        {
-                          size_t n = width - characters;
-                          ENSURE_ALLOCATION (xsum (length, n));
-                          DCHAR_SET (result + length, ' ', n);
-                          length += n;
-                        }
-                    }
-                    break;
-
-                  case TYPE_U32_STRING:
-                    {
-                      const uint32_t *arg = 
a.arg[dp->arg_index].a.a_u32_string;
-                      const uint32_t *arg_end;
-                      size_t characters;
-
-                      if (has_precision)
-                        {
-                          /* Use only PRECISION characters, from the left.  */
-                          arg_end = arg;
-                          characters = 0;
-                          for (; precision > 0; precision--)
-                            {
-                              int count = u32_strmblen (arg_end);
-                              if (count == 0)
-                                break;
-                              if (count < 0)
-                                goto fail_with_EILSEQ;
-                              arg_end += count;
-                              characters++;
-                            }
-                        }
-                      else if (has_width)
-                        {
-                          /* Use the entire string, and count the number of
-                             characters.  */
-                          arg_end = arg;
-                          characters = 0;
-                          for (;;)
-                            {
-                              int count = u32_strmblen (arg_end);
-                              if (count == 0)
-                                break;
-                              if (count < 0)
-                                goto fail_with_EILSEQ;
-                              arg_end += count;
-                              characters++;
-                            }
-                        }
-                      else
-                        {
-                          /* Use the entire string.  */
-                          arg_end = arg + u32_strlen (arg);
-                          /* The number of characters doesn't matter.  */
-                          characters = 0;
-                        }
-
-                      if (characters < width && !(flags & FLAG_LEFT))
-                        {
-                          size_t n = width - characters;
-                          ENSURE_ALLOCATION (xsum (length, n));
-                          DCHAR_SET (result + length, ' ', n);
-                          length += n;
-                        }
-
-# if DCHAR_IS_UINT32_T
-                      {
-                        size_t n = arg_end - arg;
-                        ENSURE_ALLOCATION (xsum (length, n));
-                        DCHAR_CPY (result + length, arg, n);
-                        length += n;
-                      }
-# else
-                      { /* Convert.  */
-                        DCHAR_T *converted = result + length;
-                        size_t converted_len = allocated - length;
-#  if DCHAR_IS_TCHAR
-                        /* Convert from UTF-32 to locale encoding.  */
-                        converted =
-                          u32_conv_to_encoding (locale_charset (),
-                                                iconveh_question_mark,
-                                                arg, arg_end - arg, NULL,
-                                                converted, &converted_len);
-#  else
-                        /* Convert from UTF-32 to UTF-8/UTF-16.  */
-                        converted =
-                          U32_TO_DCHAR (arg, arg_end - arg,
-                                        converted, &converted_len);
-#  endif
-                        if (converted == NULL)
-                          goto fail_with_errno;
-                        if (converted != result + length)
-                          {
-                            ENSURE_ALLOCATION_ELSE (xsum (length, 
converted_len),
-                                                    { free (converted); goto 
out_of_memory; });
-                            DCHAR_CPY (result + length, converted, 
converted_len);
-                            free (converted);
-                          }
-                        length += converted_len;
-                      }
-# endif
-
-                      if (characters < width && (flags & FLAG_LEFT))
-                        {
-                          size_t n = width - characters;
-                          ENSURE_ALLOCATION (xsum (length, n));
-                          DCHAR_SET (result + length, ' ', n);
-                          length += n;
-                        }
-                    }
-                    break;
-
-                  default:
-                    abort ();
-                  }
-              }
-#endif
-#if WIDE_CHAR_VERSION && (!DCHAR_IS_TCHAR || NEED_WPRINTF_DIRECTIVE_LC)
-            else if ((dp->conversion == 's'
-                      && a.arg[dp->arg_index].type == TYPE_WIDE_STRING)
-                     || (dp->conversion == 'c'
-                         && a.arg[dp->arg_index].type == TYPE_WIDE_CHAR))
-              {
-                /* %ls or %lc in vasnwprintf.  See the specification of
-                   fwprintf.  */
-                /* It would be silly to use snprintf ("%ls", ...) and then
-                   convert back the result from a char[] to a wchar_t[].
-                   Instead, just copy the argument wchar_t[] to the result.  */
-                int flags = dp->flags;
-                size_t width;
-
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        width = arg;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = -width;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                  }
-
-                {
-                  const wchar_t *ls_arg;
-                  wchar_t lc_arg[1];
-                  size_t characters;
-
-                  if (dp->conversion == 's')
-                    {
-                      int has_precision;
-                      size_t precision;
-
-                      has_precision = 0;
-                      precision = 6;
-                      if (dp->precision_start != dp->precision_end)
-                        {
-                          if (dp->precision_arg_index != ARG_NONE)
-                            {
-                              int arg;
-
-                              if (!(a.arg[dp->precision_arg_index].type == 
TYPE_INT))
-                                abort ();
-                              arg = a.arg[dp->precision_arg_index].a.a_int;
-                              /* "A negative precision is taken as if the 
precision
-                                  were omitted."  */
-                              if (arg >= 0)
-                                {
-                                  precision = arg;
-                                  has_precision = 1;
-                                }
-                            }
-                          else
-                            {
-                              const FCHAR_T *digitp = dp->precision_start + 1;
-
-                              precision = 0;
-                              while (digitp != dp->precision_end)
-                                precision = xsum (xtimes (precision, 10), 
*digitp++ - '0');
-                              has_precision = 1;
-                            }
-                        }
-
-                      ls_arg = a.arg[dp->arg_index].a.a_wide_string;
-
-                      if (has_precision)
-                        {
-                          /* Use only at most PRECISION wide characters, from
-                             the left.  */
-                          const wchar_t *ls_arg_end;
-
-                          ls_arg_end = ls_arg;
-                          characters = 0;
-                          for (; precision > 0; precision--)
-                            {
-                              if (*ls_arg_end == 0)
-                                /* Found the terminating null wide character.  
*/
-                                break;
-                              ls_arg_end++;
-                              characters++;
-                            }
-                        }
-                      else
-                        {
-                          /* Use the entire string, and count the number of 
wide
-                             characters.  */
-                          characters = local_wcslen (ls_arg);
-                        }
-                    }
-                  else /* dp->conversion == 'c' */
-                    {
-                      lc_arg[0] = (wchar_t) a.arg[dp->arg_index].a.a_wide_char;
-                      ls_arg = lc_arg;
-                      characters = 1;
-                    }
-
-                  {
-                    size_t total = (characters < width ? width : characters);
-                    ENSURE_ALLOCATION (xsum (length, total));
-
-                    if (characters < width && !(flags & FLAG_LEFT))
-                      {
-                        size_t n = width - characters;
-                        DCHAR_SET (result + length, ' ', n);
-                        length += n;
-                      }
-
-                    if (characters > 0)
-                      {
-                        DCHAR_CPY (result + length, ls_arg, characters);
-                        length += characters;
-                      }
-
-                    if (characters < width && (flags & FLAG_LEFT))
-                      {
-                        size_t n = width - characters;
-                        DCHAR_SET (result + length, ' ', n);
-                        length += n;
-                      }
-                  }
-                }
-              }
-#endif
-#if (!USE_SNPRINTF || WIDE_CHAR_VERSION || !HAVE_SNPRINTF_RETVAL_C99 || 
USE_MSVC__SNPRINTF || NEED_PRINTF_DIRECTIVE_LS || ENABLE_WCHAR_FALLBACK) && 
HAVE_WCHAR_T
-            else if (dp->conversion == 's'
-# if WIDE_CHAR_VERSION
-                     && a.arg[dp->arg_index].type != TYPE_WIDE_STRING
-# else
-                     && a.arg[dp->arg_index].type == TYPE_WIDE_STRING
-# endif
-                    )
-              {
-                /* The normal handling of the 's' directive below requires
-                   allocating a temporary buffer.  The determination of its
-                   length (tmp_length), in the case when a precision is
-                   specified, below requires a conversion between a char[]
-                   string and a wchar_t[] wide string.  It could be done, but
-                   we have no guarantee that the implementation of sprintf will
-                   use the exactly same algorithm.  Without this guarantee, it
-                   is possible to have buffer overrun bugs.  In order to avoid
-                   such bugs, we implement the entire processing of the 's'
-                   directive ourselves.  */
-                int flags = dp->flags;
-                int has_width;
-                size_t width;
-                int has_precision;
-                size_t precision;
-
-                has_width = 0;
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        width = arg;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = -width;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                    has_width = 1;
-                  }
-
-                has_precision = 0;
-                precision = 6;
-                if (dp->precision_start != dp->precision_end)
-                  {
-                    if (dp->precision_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->precision_arg_index].a.a_int;
-                        /* "A negative precision is taken as if the precision
-                            were omitted."  */
-                        if (arg >= 0)
-                          {
-                            precision = arg;
-                            has_precision = 1;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->precision_start + 1;
-
-                        precision = 0;
-                        while (digitp != dp->precision_end)
-                          precision = xsum (xtimes (precision, 10), *digitp++ 
- '0');
-                        has_precision = 1;
-                      }
-                  }
-
-# if WIDE_CHAR_VERSION
-                /* %s in vasnwprintf.  See the specification of fwprintf.  */
-                {
-                  const char *arg = a.arg[dp->arg_index].a.a_string;
-                  const char *arg_end;
-                  size_t characters;
-
-                  if (has_precision)
-                    {
-                      /* Use only as many bytes as needed to produce PRECISION
-                         wide characters, from the left.  */
-#  if HAVE_MBRTOWC
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-                      arg_end = arg;
-                      characters = 0;
-                      for (; precision > 0; precision--)
-                        {
-                          int count;
-#  if HAVE_MBRTOWC
-                          count = mbrlen (arg_end, MB_CUR_MAX, &state);
-#  else
-                          count = mblen (arg_end, MB_CUR_MAX);
-#  endif
-                          if (count == 0)
-                            /* Found the terminating NUL.  */
-                            break;
-                          if (count < 0)
-                            /* Invalid or incomplete multibyte character.  */
-                            goto fail_with_EILSEQ;
-                          arg_end += count;
-                          characters++;
-                        }
-                    }
-                  else if (has_width)
-                    {
-                      /* Use the entire string, and count the number of wide
-                         characters.  */
-#  if HAVE_MBRTOWC
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-                      arg_end = arg;
-                      characters = 0;
-                      for (;;)
-                        {
-                          int count;
-#  if HAVE_MBRTOWC
-                          count = mbrlen (arg_end, MB_CUR_MAX, &state);
-#  else
-                          count = mblen (arg_end, MB_CUR_MAX);
-#  endif
-                          if (count == 0)
-                            /* Found the terminating NUL.  */
-                            break;
-                          if (count < 0)
-                            /* Invalid or incomplete multibyte character.  */
-                            goto fail_with_EILSEQ;
-                          arg_end += count;
-                          characters++;
-                        }
-                    }
-                  else
-                    {
-                      /* Use the entire string.  */
-                      arg_end = arg + strlen (arg);
-                      /* The number of characters doesn't matter.  */
-                      characters = 0;
-                    }
-
-                  if (characters < width && !(flags & FLAG_LEFT))
-                    {
-                      size_t n = width - characters;
-                      ENSURE_ALLOCATION (xsum (length, n));
-                      DCHAR_SET (result + length, ' ', n);
-                      length += n;
-                    }
-
-                  if (has_precision || has_width)
-                    {
-                      /* We know the number of wide characters in advance.  */
-                      size_t remaining;
-#  if HAVE_MBRTOWC
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-                      ENSURE_ALLOCATION (xsum (length, characters));
-                      for (remaining = characters; remaining > 0; remaining--)
-                        {
-                          wchar_t wc;
-                          int count;
-#  if HAVE_MBRTOWC
-                          count = mbrtowc (&wc, arg, arg_end - arg, &state);
-#  else
-                          count = mbtowc (&wc, arg, arg_end - arg);
-#  endif
-                          if (count <= 0)
-                            /* mbrtowc not consistent with mbrlen, or mbtowc
-                               not consistent with mblen.  */
-                            abort ();
-                          result[length++] = wc;
-                          arg += count;
-                        }
-                      if (!(arg == arg_end))
-                        abort ();
-                    }
-                  else
-                    {
-#  if HAVE_MBRTOWC
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-                      while (arg < arg_end)
-                        {
-                          wchar_t wc;
-                          int count;
-#  if HAVE_MBRTOWC
-                          count = mbrtowc (&wc, arg, arg_end - arg, &state);
-#  else
-                          count = mbtowc (&wc, arg, arg_end - arg);
-#  endif
-                          if (count == 0)
-                            /* mbrtowc not consistent with strlen.  */
-                            abort ();
-                          if (count < 0)
-                            /* Invalid or incomplete multibyte character.  */
-                            goto fail_with_EILSEQ;
-                          ENSURE_ALLOCATION (xsum (length, 1));
-                          result[length++] = wc;
-                          arg += count;
-                        }
-                    }
-
-                  if (characters < width && (flags & FLAG_LEFT))
-                    {
-                      size_t n = width - characters;
-                      ENSURE_ALLOCATION (xsum (length, n));
-                      DCHAR_SET (result + length, ' ', n);
-                      length += n;
-                    }
-                }
-# else
-                /* %ls in vasnprintf.  See the specification of fprintf.  */
-                {
-                  const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
-                  const wchar_t *arg_end;
-                  size_t characters;
-#  if !DCHAR_IS_TCHAR
-                  /* This code assumes that TCHAR_T is 'char'.  */
-                  static_assert (sizeof (TCHAR_T) == 1);
-                  TCHAR_T *tmpsrc;
-                  DCHAR_T *tmpdst;
-                  size_t tmpdst_len;
-#  endif
-                  size_t w;
-
-                  if (has_precision)
-                    {
-                      /* Use only as many wide characters as needed to produce
-                         at most PRECISION bytes, from the left.  */
-#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-                      arg_end = arg;
-                      characters = 0;
-                      while (precision > 0)
-                        {
-                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                          int count;
-
-                          if (*arg_end == 0)
-                            /* Found the terminating null wide character.  */
-                            break;
-                          count = local_wcrtomb (cbuf, *arg_end, &state);
-                          if (count < 0)
-                            /* Cannot convert.  */
-                            goto fail_with_EILSEQ;
-                          if (precision < (unsigned int) count)
-                            break;
-                          arg_end++;
-                          characters += count;
-                          precision -= count;
-                        }
-                    }
-#  if DCHAR_IS_TCHAR
-                  else if (has_width)
-#  else
-                  else
-#  endif
-                    {
-                      /* Use the entire string, and count the number of
-                         bytes.  */
-#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-                      arg_end = arg;
-                      characters = 0;
-                      for (;;)
-                        {
-                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                          int count;
-
-                          if (*arg_end == 0)
-                            /* Found the terminating null wide character.  */
-                            break;
-                          count = local_wcrtomb (cbuf, *arg_end, &state);
-                          if (count < 0)
-                            /* Cannot convert.  */
-                            goto fail_with_EILSEQ;
-                          arg_end++;
-                          characters += count;
-                        }
-                    }
-#  if DCHAR_IS_TCHAR
-                  else
-                    {
-                      /* Use the entire string.  */
-                      arg_end = arg + local_wcslen (arg);
-                      /* The number of bytes doesn't matter.  */
-                      characters = 0;
-                    }
-#  endif
-
-#  if !DCHAR_IS_TCHAR
-                  /* Convert the string into a piece of temporary memory.  */
-                  tmpsrc = (TCHAR_T *) malloc (characters * sizeof (TCHAR_T));
-                  if (tmpsrc == NULL)
-                    goto out_of_memory;
-                  {
-                    TCHAR_T *tmpptr = tmpsrc;
-                    size_t remaining;
-#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                    mbstate_t state;
-                    memset (&state, '\0', sizeof (mbstate_t));
-#   endif
-                    for (remaining = characters; remaining > 0; )
-                      {
-                        char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                        int count;
-
-                        if (*arg == 0)
-                          abort ();
-                        count = local_wcrtomb (cbuf, *arg, &state);
-                        if (count <= 0)
-                          /* Inconsistency.  */
-                          abort ();
-                        memcpy (tmpptr, cbuf, count);
-                        tmpptr += count;
-                        arg++;
-                        remaining -= count;
-                      }
-                    if (!(arg == arg_end))
-                      abort ();
-                  }
-
-                  /* Convert from TCHAR_T[] to DCHAR_T[].  */
-                  tmpdst =
-                    DCHAR_CONV_FROM_ENCODING (locale_charset (),
-                                              iconveh_question_mark,
-                                              tmpsrc, characters,
-                                              NULL,
-                                              NULL, &tmpdst_len);
-                  if (tmpdst == NULL)
-                    {
-                      free (tmpsrc);
-                      goto fail_with_errno;
-                    }
-                  free (tmpsrc);
-#  endif
-
-                  if (has_width)
-                    {
-#  if ENABLE_UNISTDIO
-                      /* Outside POSIX, it's preferable to compare the width
-                         against the number of _characters_ of the converted
-                         value.  */
-                      w = DCHAR_MBSNLEN (result + length, characters);
-#  else
-                      /* The width is compared against the number of _bytes_
-                         of the converted value, says POSIX.  */
-                      w = characters;
-#  endif
-                    }
-                  else
-                    /* w doesn't matter.  */
-                    w = 0;
-
-                  if (w < width && !(flags & FLAG_LEFT))
-                    {
-                      size_t n = width - w;
-                      ENSURE_ALLOCATION (xsum (length, n));
-                      DCHAR_SET (result + length, ' ', n);
-                      length += n;
-                    }
-
-#  if DCHAR_IS_TCHAR
-                  if (has_precision || has_width)
-                    {
-                      /* We know the number of bytes in advance.  */
-                      size_t remaining;
-#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#   endif
-                      ENSURE_ALLOCATION (xsum (length, characters));
-                      for (remaining = characters; remaining > 0; )
-                        {
-                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                          int count;
-
-                          if (*arg == 0)
-                            abort ();
-                          count = local_wcrtomb (cbuf, *arg, &state);
-                          if (count <= 0)
-                            /* Inconsistency.  */
-                            abort ();
-                          memcpy (result + length, cbuf, count);
-                          length += count;
-                          arg++;
-                          remaining -= count;
-                        }
-                      if (!(arg == arg_end))
-                        abort ();
-                    }
-                  else
-                    {
-#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#   endif
-                      while (arg < arg_end)
-                        {
-                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                          int count;
-
-                          if (*arg == 0)
-                            abort ();
-                          count = local_wcrtomb (cbuf, *arg, &state);
-                          if (count <= 0)
-                            /* Cannot convert.  */
-                            goto fail_with_EILSEQ;
-                          ENSURE_ALLOCATION (xsum (length, count));
-                          memcpy (result + length, cbuf, count);
-                          length += count;
-                          arg++;
-                        }
-                    }
-#  else
-                  ENSURE_ALLOCATION_ELSE (xsum (length, tmpdst_len),
-                                          { free (tmpdst); goto out_of_memory; 
});
-                  DCHAR_CPY (result + length, tmpdst, tmpdst_len);
-                  free (tmpdst);
-                  length += tmpdst_len;
-#  endif
-
-                  if (w < width && (flags & FLAG_LEFT))
-                    {
-                      size_t n = width - w;
-                      ENSURE_ALLOCATION (xsum (length, n));
-                      DCHAR_SET (result + length, ' ', n);
-                      length += n;
-                    }
-                }
-# endif
-              }
-#endif
-#if (NEED_PRINTF_DIRECTIVE_LC || ENABLE_WCHAR_FALLBACK) && HAVE_WINT_T && 
!WIDE_CHAR_VERSION
-            else if (dp->conversion == 'c'
-                     && a.arg[dp->arg_index].type == TYPE_WIDE_CHAR)
-              {
-                /* Implement the 'lc' directive ourselves, in order to provide
-                   a correct behaviour for the null wint_t argument and/or the
-                   fallback that avoids EILSEQ.  */
-                int flags = dp->flags;
-                int has_width;
-                size_t width;
-
-                has_width = 0;
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        width = arg;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = -width;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                    has_width = 1;
-                  }
-
-                /* %lc in vasnprintf.  See the specification of fprintf.  */
-                {
-                  wchar_t arg = (wchar_t) a.arg[dp->arg_index].a.a_wide_char;
-                  size_t characters;
-# if !DCHAR_IS_TCHAR
-                  /* This code assumes that TCHAR_T is 'char'.  */
-                  static_assert (sizeof (TCHAR_T) == 1);
-                  TCHAR_T tmpsrc[64]; /* Assume MB_CUR_MAX <= 64.  */
-                  DCHAR_T *tmpdst;
-                  size_t tmpdst_len;
-# endif
-                  size_t w;
-
-# if DCHAR_IS_TCHAR
-                  if (has_width)
-# endif
-                    {
-                      /* Count the number of bytes.  */
-                      characters = 0;
-                      if (arg != 0)
-                        {
-                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                          int count;
-# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                          mbstate_t state;
-                          memset (&state, '\0', sizeof (mbstate_t));
-# endif
-
-                          count = local_wcrtomb (cbuf, arg, &state);
-                          if (count < 0)
-                            /* Cannot convert.  */
-                            goto fail_with_EILSEQ;
-                          characters = count;
-                        }
-                    }
-# if DCHAR_IS_TCHAR
-                  else
-                    {
-                      /* The number of bytes doesn't matter.  */
-                      characters = 0;
-                    }
-# endif
-
-# if !DCHAR_IS_TCHAR
-                  /* Convert the string into a piece of temporary memory.  */
-                  if (characters > 0) /* implies arg != 0 */
-                    {
-                      char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                      int count;
-#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-
-                      count = local_wcrtomb (cbuf, arg, &state);
-                      if (count <= 0)
-                        /* Inconsistency.  */
-                        abort ();
-                      memcpy (tmpsrc, cbuf, count);
-                    }
-
-                  /* Convert from TCHAR_T[] to DCHAR_T[].  */
-                  tmpdst =
-                    DCHAR_CONV_FROM_ENCODING (locale_charset (),
-                                              iconveh_question_mark,
-                                              tmpsrc, characters,
-                                              NULL,
-                                              NULL, &tmpdst_len);
-                  if (tmpdst == NULL)
-                    goto fail_with_errno;
-# endif
-
-                  if (has_width)
-                    {
-# if ENABLE_UNISTDIO
-                      /* Outside POSIX, it's preferable to compare the width
-                         against the number of _characters_ of the converted
-                         value.  */
-                      w = DCHAR_MBSNLEN (result + length, characters);
-# else
-                      /* The width is compared against the number of _bytes_
-                         of the converted value, says POSIX.  */
-                      w = characters;
-# endif
-                    }
-                  else
-                    /* w doesn't matter.  */
-                    w = 0;
-
-                  if (w < width && !(flags & FLAG_LEFT))
-                    {
-                      size_t n = width - w;
-                      ENSURE_ALLOCATION (xsum (length, n));
-                      DCHAR_SET (result + length, ' ', n);
-                      length += n;
-                    }
-
-# if DCHAR_IS_TCHAR
-                  if (has_width)
-                    {
-                      /* We know the number of bytes in advance.  */
-                      ENSURE_ALLOCATION (xsum (length, characters));
-                      if (characters > 0) /* implies arg != 0 */
-                        {
-                          int count;
-#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                          mbstate_t state;
-                          memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-
-                          count = local_wcrtomb (result + length, arg, &state);
-                          if (count <= 0)
-                            /* Inconsistency.  */
-                            abort ();
-                          length += count;
-                        }
-                    }
-                  else
-                    {
-                      if (arg != 0)
-                        {
-                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                          int count;
-#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                          mbstate_t state;
-                          memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-
-                          count = local_wcrtomb (cbuf, arg, &state);
-                          if (count < 0)
-                            /* Cannot convert.  */
-                            goto fail_with_EILSEQ;
-                          ENSURE_ALLOCATION (xsum (length, count));
-                          memcpy (result + length, cbuf, count);
-                          length += count;
-                        }
-                    }
-# else
-                  ENSURE_ALLOCATION_ELSE (xsum (length, tmpdst_len),
-                                          { free (tmpdst); goto out_of_memory; 
});
-                  DCHAR_CPY (result + length, tmpdst, tmpdst_len);
-                  free (tmpdst);
-                  length += tmpdst_len;
-# endif
-
-                  if (w < width && (flags & FLAG_LEFT))
-                    {
-                      size_t n = width - w;
-                      ENSURE_ALLOCATION (xsum (length, n));
-                      DCHAR_SET (result + length, ' ', n);
-                      length += n;
-                    }
-                }
-              }
-#endif
-#if NEED_WPRINTF_DIRECTIVE_C && WIDE_CHAR_VERSION
-            else if (dp->conversion == 'c'
-                     && a.arg[dp->arg_index].type != TYPE_WIDE_CHAR)
-              {
-                /* Implement the 'c' directive ourselves, in order to avoid
-                   EILSEQ in the "C" locale.  */
-                int flags = dp->flags;
-                size_t width;
-
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        width = arg;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = -width;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                  }
-
-                /* %c in vasnwprintf.  See the specification of fwprintf.  */
-                {
-                  char arg = (char) a.arg[dp->arg_index].a.a_char;
-                  mbstate_t state;
-                  wchar_t wc;
-
-                  memset (&state, '\0', sizeof (mbstate_t));
-                  int count = mbrtowc (&wc, &arg, 1, &state);
-                  if (count < 0)
-                    /* Invalid or incomplete multibyte character.  */
-                    goto fail_with_EILSEQ;
-
-                  if (1 < width && !(flags & FLAG_LEFT))
-                    {
-                      size_t n = width - 1;
-                      ENSURE_ALLOCATION (xsum (length, n));
-                      DCHAR_SET (result + length, ' ', n);
-                      length += n;
-                    }
-
-                  ENSURE_ALLOCATION (xsum (length, 1));
-                  result[length++] = wc;
-
-                  if (1 < width && (flags & FLAG_LEFT))
-                    {
-                      size_t n = width - 1;
-                      ENSURE_ALLOCATION (xsum (length, n));
-                      DCHAR_SET (result + length, ' ', n);
-                      length += n;
-                    }
-                }
-              }
-#endif
-#if NEED_PRINTF_DIRECTIVE_B || NEED_PRINTF_DIRECTIVE_UPPERCASE_B
-            else if (0
-# if NEED_PRINTF_DIRECTIVE_B
-                     || (dp->conversion == 'b')
-# endif
-# if NEED_PRINTF_DIRECTIVE_UPPERCASE_B
-                     || (dp->conversion == 'B')
-# endif
-                    )
-              {
-                arg_type type = a.arg[dp->arg_index].type;
-                int flags = dp->flags;
-                int has_width;
-                size_t width;
-                int has_precision;
-                size_t precision;
-                size_t tmp_length;
-                size_t count;
-                DCHAR_T tmpbuf[700];
-                DCHAR_T *tmp;
-                DCHAR_T *tmp_end;
-                DCHAR_T *tmp_start;
-                DCHAR_T *pad_ptr;
-                DCHAR_T *p;
-
-                has_width = 0;
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        width = arg;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = -width;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                    has_width = 1;
-                  }
-
-                has_precision = 0;
-                precision = 1;
-                if (dp->precision_start != dp->precision_end)
-                  {
-                    if (dp->precision_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->precision_arg_index].a.a_int;
-                        /* "A negative precision is taken as if the precision
-                            were omitted."  */
-                        if (arg >= 0)
-                          {
-                            precision = arg;
-                            has_precision = 1;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->precision_start + 1;
-
-                        precision = 0;
-                        while (digitp != dp->precision_end)
-                          precision = xsum (xtimes (precision, 10), *digitp++ 
- '0');
-                        has_precision = 1;
-                      }
-                  }
-
-                /* Allocate a temporary buffer of sufficient size.  */
-                switch (type)
-                  {
-                  default:
-                    tmp_length =
-                      (unsigned int) (sizeof (unsigned int) * CHAR_BIT)
-                      + 1; /* turn floor into ceil */
-                    break;
-                  case TYPE_ULONGINT:
-                    tmp_length =
-                      (unsigned int) (sizeof (unsigned long int) * CHAR_BIT)
-                      + 1; /* turn floor into ceil */
-                    break;
-                  case TYPE_ULONGLONGINT:
-                    tmp_length =
-                      (unsigned int) (sizeof (unsigned long long int) * 
CHAR_BIT)
-                      + 1; /* turn floor into ceil */
-                    break;
-                  case TYPE_UINT8_T:
-                    tmp_length =
-                      (unsigned int) (sizeof (uint8_t) * CHAR_BIT)
-                      + 1; /* turn floor into ceil */
-                    break;
-                  case TYPE_UINT16_T:
-                    tmp_length =
-                      (unsigned int) (sizeof (uint16_t) * CHAR_BIT)
-                      + 1; /* turn floor into ceil */
-                    break;
-                  case TYPE_UINT32_T:
-                    tmp_length =
-                      (unsigned int) (sizeof (uint32_t) * CHAR_BIT)
-                      + 1; /* turn floor into ceil */
-                    break;
-                  case TYPE_UINT64_T:
-                    tmp_length =
-                      (unsigned int) (sizeof (uint64_t) * CHAR_BIT)
-                      + 1; /* turn floor into ceil */
-                    break;
-                  case TYPE_UINT_FAST8_T:
-                    tmp_length =
-                      (unsigned int) (sizeof (uint_fast8_t) * CHAR_BIT)
-                      + 1; /* turn floor into ceil */
-                    break;
-                  case TYPE_UINT_FAST16_T:
-                    tmp_length =
-                      (unsigned int) (sizeof (uint_fast16_t) * CHAR_BIT)
-                      + 1; /* turn floor into ceil */
-                    break;
-                  case TYPE_UINT_FAST32_T:
-                    tmp_length =
-                      (unsigned int) (sizeof (uint_fast32_t) * CHAR_BIT)
-                      + 1; /* turn floor into ceil */
-                    break;
-                  case TYPE_UINT_FAST64_T:
-                    tmp_length =
-                      (unsigned int) (sizeof (uint_fast64_t) * CHAR_BIT)
-                      + 1; /* turn floor into ceil */
-                    break;
-                  }
-                if (tmp_length < precision)
-                  tmp_length = precision;
-                /* Add 2, to account for a prefix from the alternate form.  */
-                tmp_length = xsum (tmp_length, 2);
-
-                if (tmp_length < width)
-                  tmp_length = width;
-
-                if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
-                  tmp = tmpbuf;
-                else
-                  {
-                    size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
-
-                    if (size_overflow_p (tmp_memsize))
-                      /* Overflow, would lead to out of memory.  */
-                      goto out_of_memory;
-                    tmp = (DCHAR_T *) malloc (tmp_memsize);
-                    if (tmp == NULL)
-                      /* Out of memory.  */
-                      goto out_of_memory;
-                  }
-
-                tmp_end = tmp + tmp_length;
-
-                unsigned long long arg;
-                switch (type)
-                  {
-                  case TYPE_UCHAR:
-                    arg = a.arg[dp->arg_index].a.a_uchar;
-                    break;
-                  case TYPE_USHORT:
-                    arg = a.arg[dp->arg_index].a.a_ushort;
-                    break;
-                  case TYPE_UINT:
-                    arg = a.arg[dp->arg_index].a.a_uint;
-                    break;
-                  case TYPE_ULONGINT:
-                    arg = a.arg[dp->arg_index].a.a_ulongint;
-                    break;
-                  case TYPE_ULONGLONGINT:
-                    arg = a.arg[dp->arg_index].a.a_ulonglongint;
-                    break;
-                  case TYPE_UINT8_T:
-                    arg = a.arg[dp->arg_index].a.a_uint8_t;
-                    break;
-                  case TYPE_UINT16_T:
-                    arg = a.arg[dp->arg_index].a.a_uint16_t;
-                    break;
-                  case TYPE_UINT32_T:
-                    arg = a.arg[dp->arg_index].a.a_uint32_t;
-                    break;
-                  case TYPE_UINT64_T:
-                    arg = a.arg[dp->arg_index].a.a_uint64_t;
-                    break;
-                  case TYPE_UINT_FAST8_T:
-                    arg = a.arg[dp->arg_index].a.a_uint_fast8_t;
-                    break;
-                  case TYPE_UINT_FAST16_T:
-                    arg = a.arg[dp->arg_index].a.a_uint_fast16_t;
-                    break;
-                  case TYPE_UINT_FAST32_T:
-                    arg = a.arg[dp->arg_index].a.a_uint_fast32_t;
-                    break;
-                  case TYPE_UINT_FAST64_T:
-                    arg = a.arg[dp->arg_index].a.a_uint_fast64_t;
-                    break;
-                  default:
-                    abort ();
-                  }
-                int need_prefix = ((flags & FLAG_ALT) && arg != 0);
-
-                p = tmp_end;
-                /* "The result of converting a zero value with a precision
-                   of zero is no characters."  */
-                if (!(has_precision && precision == 0 && arg == 0))
-                  {
-                    do
-                      {
-                        *--p = '0' + (arg & 1);
-                        arg = arg >> 1;
-                      }
-                    while (arg != 0);
-                  }
-
-                if (has_precision)
-                  {
-                    DCHAR_T *digits_start = tmp_end - precision;
-                    while (p > digits_start)
-                      *--p = '0';
-                  }
-
-                pad_ptr = p;
-
-                if (need_prefix)
-                  {
-# if NEED_PRINTF_DIRECTIVE_B && !NEED_PRINTF_DIRECTIVE_UPPERCASE_B
-                    *--p = 'b';
-# elif NEED_PRINTF_DIRECTIVE_UPPERCASE_B && !NEED_PRINTF_DIRECTIVE_B
-                    *--p = 'B';
-# else
-                    *--p = dp->conversion;
-# endif
-                    *--p = '0';
-                  }
-                tmp_start = p;
-
-                /* The generated string now extends from tmp_start to tmp_end,
-                   with the zero padding insertion point being at pad_ptr,
-                   tmp_start <= pad_ptr <= tmp_end.  */
-                count = tmp_end - tmp_start;
-
-                if (count < width)
-                  {
-                    size_t pad = width - count;
-
-                    if (flags & FLAG_LEFT)
-                      {
-                        /* Pad with spaces on the right.  */
-                        for (p = tmp_start; p < tmp_end; p++)
-                          *(p - pad) = *p;
-                        for (p = tmp_end - pad; p < tmp_end; p++)
-                          *p = ' ';
-                      }
-                    else if ((flags & FLAG_ZERO)
-                             /* Neither ISO C nor POSIX specify that the '0'
-                                flag is ignored when a width and a precision
-                                are both present.  But most implementations
-                                do so.  */
-                             && !(has_width && has_precision))
-                      {
-                        /* Pad with zeroes.  */
-                        for (p = tmp_start; p < pad_ptr; p++)
-                          *(p - pad) = *p;
-                        for (p = pad_ptr - pad; p < pad_ptr; p++)
-                          *p = '0';
-                      }
-                    else
-                      {
-                        /* Pad with spaces on the left.  */
-                        for (p = tmp_start - pad; p < tmp_start; p++)
-                          *p = ' ';
-                      }
-
-                    tmp_start = tmp_start - pad;
-                  }
-
-                count = tmp_end - tmp_start;
-
-                if (count > tmp_length)
-                  /* tmp_length was incorrectly calculated - fix the
-                     code above!  */
-                  abort ();
-
-                /* Make room for the result.  */
-                if (count >= allocated - length)
-                  {
-                    size_t n = xsum (length, count);
-
-                    ENSURE_ALLOCATION (n);
-                  }
-
-                /* Append the result.  */
-                memcpy (result + length, tmp_start, count * sizeof (DCHAR_T));
-                if (tmp != tmpbuf)
-                  free (tmp);
-                length += count;
-              }
-#endif
-#if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE 
|| (NEED_WPRINTF_DIRECTIVE_LA && WIDE_CHAR_VERSION)
-            else if ((dp->conversion == 'a' || dp->conversion == 'A')
-# if !(NEED_PRINTF_DIRECTIVE_A || (NEED_PRINTF_LONG_DOUBLE && 
NEED_PRINTF_DOUBLE))
-                     && (0
-#  if NEED_PRINTF_DOUBLE
-                         || a.arg[dp->arg_index].type == TYPE_DOUBLE
-#  endif
-#  if NEED_PRINTF_LONG_DOUBLE || (NEED_WPRINTF_DIRECTIVE_LA && 
WIDE_CHAR_VERSION)
-                         || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
-#  endif
-                        )
-# endif
-                    )
-              {
-                arg_type type = a.arg[dp->arg_index].type;
-                int flags = dp->flags;
-                size_t width;
-                int has_precision;
-                size_t precision;
-                size_t tmp_length;
-                size_t count;
-                DCHAR_T tmpbuf[700];
-                DCHAR_T *tmp;
-                DCHAR_T *pad_ptr;
-                DCHAR_T *p;
-
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        width = arg;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = -width;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                  }
-
-                has_precision = 0;
-                precision = 0;
-                if (dp->precision_start != dp->precision_end)
-                  {
-                    if (dp->precision_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->precision_arg_index].a.a_int;
-                        /* "A negative precision is taken as if the precision
-                            were omitted."  */
-                        if (arg >= 0)
-                          {
-                            precision = arg;
-                            has_precision = 1;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->precision_start + 1;
-
-                        precision = 0;
-                        while (digitp != dp->precision_end)
-                          precision = xsum (xtimes (precision, 10), *digitp++ 
- '0');
-                        has_precision = 1;
-                      }
-                  }
-
-                /* Allocate a temporary buffer of sufficient size.  */
-                if (type == TYPE_LONGDOUBLE)
-                  tmp_length =
-                    (unsigned int) ((LDBL_DIG + 1)
-                                    * 0.831 /* decimal -> hexadecimal */
-                                   )
-                    + 1; /* turn floor into ceil */
-                else
-                  tmp_length =
-                    (unsigned int) ((DBL_DIG + 1)
-                                    * 0.831 /* decimal -> hexadecimal */
-                                   )
-                    + 1; /* turn floor into ceil */
-                if (tmp_length < precision)
-                  tmp_length = precision;
-                /* Account for sign, decimal point etc. */
-                tmp_length = xsum (tmp_length, 12);
-
-                if (tmp_length < width)
-                  tmp_length = width;
-
-                tmp_length = xsum (tmp_length, 1); /* account for trailing NUL 
*/
-
-                if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
-                  tmp = tmpbuf;
-                else
-                  {
-                    size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
-
-                    if (size_overflow_p (tmp_memsize))
-                      /* Overflow, would lead to out of memory.  */
-                      goto out_of_memory;
-                    tmp = (DCHAR_T *) malloc (tmp_memsize);
-                    if (tmp == NULL)
-                      /* Out of memory.  */
-                      goto out_of_memory;
-                  }
-
-                pad_ptr = NULL;
-                p = tmp;
-                if (type == TYPE_LONGDOUBLE)
-                  {
-# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || 
(NEED_WPRINTF_DIRECTIVE_LA && WIDE_CHAR_VERSION)
-                    long double arg = a.arg[dp->arg_index].a.a_longdouble;
-
-                    if (isnanl (arg))
-                      {
-                        if (dp->conversion == 'A')
-                          {
-                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
-                          }
-                        else
-                          {
-                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
-                          }
-                      }
-                    else
-                      {
-                        int sign = 0;
-                        DECL_LONG_DOUBLE_ROUNDING
-
-                        BEGIN_LONG_DOUBLE_ROUNDING ();
-
-                        if (signbit (arg)) /* arg < 0.0L or negative zero */
-                          {
-                            sign = -1;
-                            arg = -arg;
-                          }
-
-                        if (sign < 0)
-                          *p++ = '-';
-                        else if (flags & FLAG_SHOWSIGN)
-                          *p++ = '+';
-                        else if (flags & FLAG_SPACE)
-                          *p++ = ' ';
-
-                        if (arg > 0.0L && arg + arg == arg)
-                          {
-                            if (dp->conversion == 'A')
-                              {
-                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
-                              }
-                            else
-                              {
-                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
-                              }
-                          }
-                        else
-                          {
-                            int exponent;
-                            long double mantissa;
-
-                            if (arg > 0.0L)
-                              mantissa = printf_frexpl (arg, &exponent);
-                            else
-                              {
-                                exponent = 0;
-                                mantissa = 0.0L;
-                              }
-
-                            if (has_precision
-                                && precision < (unsigned int) ((LDBL_DIG + 1) 
* 0.831) + 1)
-                              {
-                                /* Round the mantissa.  */
-                                long double tail = mantissa;
-                                size_t q;
-
-                                for (q = precision; ; q--)
-                                  {
-                                    int digit = (int) tail;
-                                    tail -= digit;
-                                    if (q == 0)
-                                      {
-                                        if (digit & 1 ? tail >= 0.5L : tail > 
0.5L)
-                                          tail = 1 - tail;
-                                        else
-                                          tail = - tail;
-                                        break;
-                                      }
-                                    tail *= 16.0L;
-                                  }
-                                if (tail != 0.0L)
-                                  for (q = precision; q > 0; q--)
-                                    tail *= 0.0625L;
-                                mantissa += tail;
-                              }
-
-                            *p++ = '0';
-                            *p++ = dp->conversion - 'A' + 'X';
-                            pad_ptr = p;
-                            {
-                              int digit;
-
-                              digit = (int) mantissa;
-                              mantissa -= digit;
-                              *p++ = '0' + digit;
-                              if ((flags & FLAG_ALT)
-                                  || mantissa > 0.0L || precision > 0)
-                                {
-                                  *p++ = decimal_point_char ();
-                                  /* This loop terminates because we assume
-                                     that FLT_RADIX is a power of 2.  */
-                                  while (mantissa > 0.0L)
-                                    {
-                                      mantissa *= 16.0L;
-                                      digit = (int) mantissa;
-                                      mantissa -= digit;
-                                      *p++ = digit
-                                             + (digit < 10
-                                                ? '0'
-                                                : dp->conversion - 10);
-                                      if (precision > 0)
-                                        precision--;
-                                    }
-                                  while (precision > 0)
-                                    {
-                                      *p++ = '0';
-                                      precision--;
-                                    }
-                                }
-                              }
-                              *p++ = dp->conversion - 'A' + 'P';
-#  if WIDE_CHAR_VERSION && DCHAR_IS_TCHAR
-                              {
-                                static const wchar_t decimal_format[] =
-                                  { '%', '+', 'd', '\0' };
-                                SNPRINTF (p, 6 + 1, decimal_format, exponent);
-                              }
-                              while (*p != '\0')
-                                p++;
-#  else
-                              if (sizeof (DCHAR_T) == 1)
-                                {
-                                  sprintf ((char *) p, "%+d", exponent);
-                                  while (*p != '\0')
-                                    p++;
-                                }
-                              else
-                                {
-                                  char expbuf[6 + 1];
-                                  const char *ep;
-                                  sprintf (expbuf, "%+d", exponent);
-                                  for (ep = expbuf; (*p = *ep) != '\0'; ep++)
-                                    p++;
-                                }
-#  endif
-                          }
-
-                        END_LONG_DOUBLE_ROUNDING ();
-                      }
-# else
-                    abort ();
-# endif
-                  }
-                else
-                  {
-# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE
-                    double arg = a.arg[dp->arg_index].a.a_double;
-
-                    if (isnand (arg))
-                      {
-                        if (dp->conversion == 'A')
-                          {
-                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
-                          }
-                        else
-                          {
-                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
-                          }
-                      }
-                    else
-                      {
-                        int sign = 0;
-
-                        if (signbit (arg)) /* arg < 0.0 or negative zero */
-                          {
-                            sign = -1;
-                            arg = -arg;
-                          }
-
-                        if (sign < 0)
-                          *p++ = '-';
-                        else if (flags & FLAG_SHOWSIGN)
-                          *p++ = '+';
-                        else if (flags & FLAG_SPACE)
-                          *p++ = ' ';
-
-                        if (arg > 0.0 && arg + arg == arg)
-                          {
-                            if (dp->conversion == 'A')
-                              {
-                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
-                              }
-                            else
-                              {
-                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
-                              }
-                          }
-                        else
-                          {
-                            int exponent;
-                            double mantissa;
-
-                            if (arg > 0.0)
-                              mantissa = printf_frexp (arg, &exponent);
-                            else
-                              {
-                                exponent = 0;
-                                mantissa = 0.0;
-                              }
-
-                            if (has_precision
-                                && precision < (unsigned int) ((DBL_DIG + 1) * 
0.831) + 1)
-                              {
-                                /* Round the mantissa.  */
-                                double tail = mantissa;
-                                size_t q;
-
-                                for (q = precision; ; q--)
-                                  {
-                                    int digit = (int) tail;
-                                    tail -= digit;
-                                    if (q == 0)
-                                      {
-                                        if (digit & 1 ? tail >= 0.5 : tail > 
0.5)
-                                          tail = 1 - tail;
-                                        else
-                                          tail = - tail;
-                                        break;
-                                      }
-                                    tail *= 16.0;
-                                  }
-                                if (tail != 0.0)
-                                  for (q = precision; q > 0; q--)
-                                    tail *= 0.0625;
-                                mantissa += tail;
-                              }
-
-                            *p++ = '0';
-                            *p++ = dp->conversion - 'A' + 'X';
-                            pad_ptr = p;
-                            {
-                              int digit;
-
-                              digit = (int) mantissa;
-                              mantissa -= digit;
-                              *p++ = '0' + digit;
-                              if ((flags & FLAG_ALT)
-                                  || mantissa > 0.0 || precision > 0)
-                                {
-                                  *p++ = decimal_point_char ();
-                                  /* This loop terminates because we assume
-                                     that FLT_RADIX is a power of 2.  */
-                                  while (mantissa > 0.0)
-                                    {
-                                      mantissa *= 16.0;
-                                      digit = (int) mantissa;
-                                      mantissa -= digit;
-                                      *p++ = digit
-                                             + (digit < 10
-                                                ? '0'
-                                                : dp->conversion - 10);
-                                      if (precision > 0)
-                                        precision--;
-                                    }
-                                  while (precision > 0)
-                                    {
-                                      *p++ = '0';
-                                      precision--;
-                                    }
-                                }
-                              }
-                              *p++ = dp->conversion - 'A' + 'P';
-#  if WIDE_CHAR_VERSION && DCHAR_IS_TCHAR
-                              {
-                                static const wchar_t decimal_format[] =
-                                  { '%', '+', 'd', '\0' };
-                                SNPRINTF (p, 6 + 1, decimal_format, exponent);
-                              }
-                              while (*p != '\0')
-                                p++;
-#  else
-                              if (sizeof (DCHAR_T) == 1)
-                                {
-                                  sprintf ((char *) p, "%+d", exponent);
-                                  while (*p != '\0')
-                                    p++;
-                                }
-                              else
-                                {
-                                  char expbuf[6 + 1];
-                                  const char *ep;
-                                  sprintf (expbuf, "%+d", exponent);
-                                  for (ep = expbuf; (*p = *ep) != '\0'; ep++)
-                                    p++;
-                                }
-#  endif
-                          }
-                      }
-# else
-                    abort ();
-# endif
-                  }
-
-                /* The generated string now extends from tmp to p, with the
-                   zero padding insertion point being at pad_ptr.  */
-                count = p - tmp;
-
-                if (count < width)
-                  {
-                    size_t pad = width - count;
-                    DCHAR_T *end = p + pad;
-
-                    if (flags & FLAG_LEFT)
-                      {
-                        /* Pad with spaces on the right.  */
-                        for (; pad > 0; pad--)
-                          *p++ = ' ';
-                      }
-                    else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
-                      {
-                        /* Pad with zeroes.  */
-                        DCHAR_T *q = end;
-
-                        while (p > pad_ptr)
-                          *--q = *--p;
-                        for (; pad > 0; pad--)
-                          *p++ = '0';
-                      }
-                    else
-                      {
-                        /* Pad with spaces on the left.  */
-                        DCHAR_T *q = end;
-
-                        while (p > tmp)
-                          *--q = *--p;
-                        for (; pad > 0; pad--)
-                          *p++ = ' ';
-                      }
-
-                    p = end;
-                  }
-
-                count = p - tmp;
-
-                if (count >= tmp_length)
-                  /* tmp_length was incorrectly calculated - fix the
-                     code above!  */
-                  abort ();
-
-                /* Make room for the result.  */
-                if (count >= allocated - length)
-                  {
-                    size_t n = xsum (length, count);
-
-                    ENSURE_ALLOCATION (n);
-                  }
-
-                /* Append the result.  */
-                memcpy (result + length, tmp, count * sizeof (DCHAR_T));
-                if (tmp != tmpbuf)
-                  free (tmp);
-                length += count;
-              }
-#endif
-#if NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || 
NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE
-            else if ((dp->conversion == 'f' || dp->conversion == 'F'
-                      || dp->conversion == 'e' || dp->conversion == 'E'
-                      || dp->conversion == 'g' || dp->conversion == 'G'
-                      || dp->conversion == 'a' || dp->conversion == 'A')
-                     && (0
-# if NEED_PRINTF_DOUBLE
-                         || a.arg[dp->arg_index].type == TYPE_DOUBLE
-# elif NEED_PRINTF_INFINITE_DOUBLE
-                         || (a.arg[dp->arg_index].type == TYPE_DOUBLE
-                             /* The systems (mingw) which produce wrong output
-                                for Inf, -Inf, and NaN also do so for -0.0.
-                                Therefore we treat this case here as well.  */
-                             && is_infinite_or_zero 
(a.arg[dp->arg_index].a.a_double))
-# endif
-# if NEED_PRINTF_LONG_DOUBLE
-                         || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
-# elif NEED_PRINTF_INFINITE_LONG_DOUBLE
-                         || (a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
-                             /* Some systems produce wrong output for Inf,
-                                -Inf, and NaN.  Some systems in this category
-                                (IRIX 5.3) also do so for -0.0.  Therefore we
-                                treat this case here as well.  */
-                             && is_infinite_or_zerol 
(a.arg[dp->arg_index].a.a_longdouble))
-# endif
-                        ))
-              {
-# if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && 
(NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE)
-                arg_type type = a.arg[dp->arg_index].type;
-# endif
-                int flags = dp->flags;
-                size_t width;
-                size_t count;
-                int has_precision;
-                size_t precision;
-                size_t tmp_length;
-                DCHAR_T tmpbuf[700];
-                DCHAR_T *tmp;
-                DCHAR_T *pad_ptr;
-                DCHAR_T *p;
-
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        width = arg;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = -width;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                  }
-
-                has_precision = 0;
-                precision = 0;
-                if (dp->precision_start != dp->precision_end)
-                  {
-                    if (dp->precision_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->precision_arg_index].a.a_int;
-                        /* "A negative precision is taken as if the precision
-                            were omitted."  */
-                        if (arg >= 0)
-                          {
-                            precision = arg;
-                            has_precision = 1;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->precision_start + 1;
-
-                        precision = 0;
-                        while (digitp != dp->precision_end)
-                          precision = xsum (xtimes (precision, 10), *digitp++ 
- '0');
-                        has_precision = 1;
-                      }
-                  }
-
-                /* POSIX specifies the default precision to be 6 for %f, %F,
-                   %e, %E, but not for %g, %G.  Implementations appear to use
-                   the same default precision also for %g, %G.  But for %a, %A,
-                   the default precision is 0.  */
-                if (!has_precision)
-                  if (!(dp->conversion == 'a' || dp->conversion == 'A'))
-                    precision = 6;
-
-                /* Allocate a temporary buffer of sufficient size.  */
-# if NEED_PRINTF_DOUBLE && NEED_PRINTF_LONG_DOUBLE
-                tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : DBL_DIG 
+ 1);
-# elif NEED_PRINTF_INFINITE_DOUBLE && NEED_PRINTF_LONG_DOUBLE
-                tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : 0);
-# elif NEED_PRINTF_LONG_DOUBLE
-                tmp_length = LDBL_DIG + 1;
-# elif NEED_PRINTF_DOUBLE
-                tmp_length = DBL_DIG + 1;
-# else
-                tmp_length = 0;
-# endif
-                if (tmp_length < precision)
-                  tmp_length = precision;
-# if NEED_PRINTF_LONG_DOUBLE
-#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
-                if (type == TYPE_LONGDOUBLE)
-#  endif
-                  if (dp->conversion == 'f' || dp->conversion == 'F')
-                    {
-                      long double arg = a.arg[dp->arg_index].a.a_longdouble;
-                      if (!(isnanl (arg) || arg + arg == arg))
-                        {
-                          /* arg is finite and nonzero.  */
-                          int exponent = floorlog10l (arg < 0 ? -arg : arg);
-                          if (exponent >= 0 && tmp_length < exponent + 
precision)
-                            tmp_length = exponent + precision;
-                        }
-                    }
-# endif
-# if NEED_PRINTF_DOUBLE
-#  if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE
-                if (type == TYPE_DOUBLE)
-#  endif
-                  if (dp->conversion == 'f' || dp->conversion == 'F')
-                    {
-                      double arg = a.arg[dp->arg_index].a.a_double;
-                      if (!(isnand (arg) || arg + arg == arg))
-                        {
-                          /* arg is finite and nonzero.  */
-                          int exponent = floorlog10 (arg < 0 ? -arg : arg);
-                          if (exponent >= 0 && tmp_length < exponent + 
precision)
-                            tmp_length = exponent + precision;
-                        }
-                    }
-# endif
-                /* Account for sign, decimal point etc. */
-                tmp_length = xsum (tmp_length, 12);
-
-                if (tmp_length < width)
-                  tmp_length = width;
-
-                tmp_length = xsum (tmp_length, 1); /* account for trailing NUL 
*/
-
-                if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
-                  tmp = tmpbuf;
-                else
-                  {
-                    size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
-
-                    if (size_overflow_p (tmp_memsize))
-                      /* Overflow, would lead to out of memory.  */
-                      goto out_of_memory;
-                    tmp = (DCHAR_T *) malloc (tmp_memsize);
-                    if (tmp == NULL)
-                      /* Out of memory.  */
-                      goto out_of_memory;
-                  }
-
-                pad_ptr = NULL;
-                p = tmp;
-
-# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE
-#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
-                if (type == TYPE_LONGDOUBLE)
-#  endif
-                  {
-                    long double arg = a.arg[dp->arg_index].a.a_longdouble;
-
-                    if (isnanl (arg))
-                      {
-                        if (dp->conversion >= 'A' && dp->conversion <= 'Z')
-                          {
-                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
-                          }
-                        else
-                          {
-                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
-                          }
-                      }
-                    else
-                      {
-                        int sign = 0;
-                        DECL_LONG_DOUBLE_ROUNDING
-
-                        BEGIN_LONG_DOUBLE_ROUNDING ();
-
-                        if (signbit (arg)) /* arg < 0.0L or negative zero */
-                          {
-                            sign = -1;
-                            arg = -arg;
-                          }
-
-                        if (sign < 0)
-                          *p++ = '-';
-                        else if (flags & FLAG_SHOWSIGN)
-                          *p++ = '+';
-                        else if (flags & FLAG_SPACE)
-                          *p++ = ' ';
-
-                        if (arg > 0.0L && arg + arg == arg)
-                          {
-                            if (dp->conversion >= 'A' && dp->conversion <= 'Z')
-                              {
-                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
-                              }
-                            else
-                              {
-                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
-                              }
-                          }
-                        else
-                          {
-#  if NEED_PRINTF_LONG_DOUBLE
-                            pad_ptr = p;
-
-                            if (dp->conversion == 'f' || dp->conversion == 'F')
-                              {
-                                char *digits;
-                                size_t ndigits;
-
-                                digits =
-                                  scale10_round_decimal_long_double (arg, 
precision);
-                                if (digits == NULL)
-                                  {
-                                    END_LONG_DOUBLE_ROUNDING ();
-                                    goto out_of_memory;
-                                  }
-                                ndigits = strlen (digits);
-
-                                if (ndigits > precision)
-                                  do
-                                    {
-                                      --ndigits;
-                                      *p++ = digits[ndigits];
-                                    }
-                                  while (ndigits > precision);
-                                else
-                                  *p++ = '0';
-                                /* Here ndigits <= precision.  */
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > ndigits; precision--)
-                                      *p++ = '0';
-                                    while (ndigits > 0)
-                                      {
-                                        --ndigits;
-                                        *p++ = digits[ndigits];
-                                      }
-                                  }
-
-                                free (digits);
-                              }
-                            else if (dp->conversion == 'e' || dp->conversion 
== 'E')
-                              {
-                                int exponent;
-
-                                if (arg == 0.0L)
-                                  {
-                                    exponent = 0;
-                                    *p++ = '0';
-                                    if ((flags & FLAG_ALT) || precision > 0)
-                                      {
-                                        *p++ = decimal_point_char ();
-                                        for (; precision > 0; precision--)
-                                          *p++ = '0';
-                                      }
-                                  }
-                                else
-                                  {
-                                    /* arg > 0.0L.  */
-                                    int adjusted;
-                                    char *digits;
-                                    size_t ndigits;
-
-                                    exponent = floorlog10l (arg);
-                                    adjusted = 0;
-                                    for (;;)
-                                      {
-                                        digits =
-                                          scale10_round_decimal_long_double 
(arg,
-                                                                             
(int)precision - exponent);
-                                        if (digits == NULL)
-                                          {
-                                            END_LONG_DOUBLE_ROUNDING ();
-                                            goto out_of_memory;
-                                          }
-                                        ndigits = strlen (digits);
-
-                                        if (ndigits == precision + 1)
-                                          break;
-                                        if (ndigits < precision
-                                            || ndigits > precision + 2)
-                                          /* The exponent was not guessed
-                                             precisely enough.  */
-                                          abort ();
-                                        if (adjusted)
-                                          /* None of two values of exponent is
-                                             the right one.  Prevent an endless
-                                             loop.  */
-                                          abort ();
-                                        free (digits);
-                                        if (ndigits == precision)
-                                          exponent -= 1;
-                                        else
-                                          exponent += 1;
-                                        adjusted = 1;
-                                      }
-                                    /* Here ndigits = precision+1.  */
-                                    if (is_borderline (digits, precision))
-                                      {
-                                        /* Maybe the exponent guess was too 
high
-                                           and a smaller exponent can be 
reached
-                                           by turning a 10...0 into 9...9x.  */
-                                        char *digits2 =
-                                          scale10_round_decimal_long_double 
(arg,
-                                                                             
(int)precision - exponent + 1);
-                                        if (digits2 == NULL)
-                                          {
-                                            free (digits);
-                                            END_LONG_DOUBLE_ROUNDING ();
-                                            goto out_of_memory;
-                                          }
-                                        if (strlen (digits2) == precision + 1)
-                                          {
-                                            free (digits);
-                                            digits = digits2;
-                                            exponent -= 1;
-                                          }
-                                        else
-                                          free (digits2);
-                                      }
-                                    /* Here ndigits = precision+1.  */
-
-                                    *p++ = digits[--ndigits];
-                                    if ((flags & FLAG_ALT) || precision > 0)
-                                      {
-                                        *p++ = decimal_point_char ();
-                                        while (ndigits > 0)
-                                          {
-                                            --ndigits;
-                                            *p++ = digits[ndigits];
-                                          }
-                                      }
-
-                                    free (digits);
-                                  }
-
-                                *p++ = dp->conversion; /* 'e' or 'E' */
-#   if WIDE_CHAR_VERSION && DCHAR_IS_TCHAR
-                                {
-                                  static const wchar_t decimal_format[] =
-                                    { '%', '+', '.', '2', 'd', '\0' };
-                                  SNPRINTF (p, 6 + 1, decimal_format, 
exponent);
-                                }
-                                while (*p != '\0')
-                                  p++;
-#   else
-                                if (sizeof (DCHAR_T) == 1)
-                                  {
-                                    sprintf ((char *) p, "%+.2d", exponent);
-                                    while (*p != '\0')
-                                      p++;
-                                  }
-                                else
-                                  {
-                                    char expbuf[6 + 1];
-                                    const char *ep;
-                                    sprintf (expbuf, "%+.2d", exponent);
-                                    for (ep = expbuf; (*p = *ep) != '\0'; ep++)
-                                      p++;
-                                  }
-#   endif
-                              }
-                            else if (dp->conversion == 'g' || dp->conversion 
== 'G')
-                              {
-                                if (precision == 0)
-                                  precision = 1;
-                                /* precision >= 1.  */
-
-                                if (arg == 0.0L)
-                                  /* The exponent is 0, >= -4, < precision.
-                                     Use fixed-point notation.  */
-                                  {
-                                    size_t ndigits = precision;
-                                    /* Number of trailing zeroes that have to 
be
-                                       dropped.  */
-                                    size_t nzeroes =
-                                      (flags & FLAG_ALT ? 0 : precision - 1);
-
-                                    --ndigits;
-                                    *p++ = '0';
-                                    if ((flags & FLAG_ALT) || ndigits > 
nzeroes)
-                                      {
-                                        *p++ = decimal_point_char ();
-                                        while (ndigits > nzeroes)
-                                          {
-                                            --ndigits;
-                                            *p++ = '0';
-                                          }
-                                      }
-                                  }
-                                else
-                                  {
-                                    /* arg > 0.0L.  */
-                                    int exponent;
-                                    int adjusted;
-                                    char *digits;
-                                    size_t ndigits;
-                                    size_t nzeroes;
-
-                                    exponent = floorlog10l (arg);
-                                    adjusted = 0;
-                                    for (;;)
-                                      {
-                                        digits =
-                                          scale10_round_decimal_long_double 
(arg,
-                                                                             
(int)(precision - 1) - exponent);
-                                        if (digits == NULL)
-                                          {
-                                            END_LONG_DOUBLE_ROUNDING ();
-                                            goto out_of_memory;
-                                          }
-                                        ndigits = strlen (digits);
-
-                                        if (ndigits == precision)
-                                          break;
-                                        if (ndigits < precision - 1
-                                            || ndigits > precision + 1)
-                                          /* The exponent was not guessed
-                                             precisely enough.  */
-                                          abort ();
-                                        if (adjusted)
-                                          /* None of two values of exponent is
-                                             the right one.  Prevent an endless
-                                             loop.  */
-                                          abort ();
-                                        free (digits);
-                                        if (ndigits < precision)
-                                          exponent -= 1;
-                                        else
-                                          exponent += 1;
-                                        adjusted = 1;
-                                      }
-                                    /* Here ndigits = precision.  */
-                                    if (is_borderline (digits, precision - 1))
-                                      {
-                                        /* Maybe the exponent guess was too 
high
-                                           and a smaller exponent can be 
reached
-                                           by turning a 10...0 into 9...9x.  */
-                                        char *digits2 =
-                                          scale10_round_decimal_long_double 
(arg,
-                                                                             
(int)(precision - 1) - exponent + 1);
-                                        if (digits2 == NULL)
-                                          {
-                                            free (digits);
-                                            END_LONG_DOUBLE_ROUNDING ();
-                                            goto out_of_memory;
-                                          }
-                                        if (strlen (digits2) == precision)
-                                          {
-                                            free (digits);
-                                            digits = digits2;
-                                            exponent -= 1;
-                                          }
-                                        else
-                                          free (digits2);
-                                      }
-                                    /* Here ndigits = precision.  */
-
-                                    /* Determine the number of trailing zeroes
-                                       that have to be dropped.  */
-                                    nzeroes = 0;
-                                    if ((flags & FLAG_ALT) == 0)
-                                      while (nzeroes < ndigits
-                                             && digits[nzeroes] == '0')
-                                        nzeroes++;
-
-                                    /* The exponent is now determined.  */
-                                    if (exponent >= -4
-                                        && exponent < (long)precision)
-                                      {
-                                        /* Fixed-point notation:
-                                           max(exponent,0)+1 digits, then the
-                                           decimal point, then the remaining
-                                           digits without trailing zeroes.  */
-                                        if (exponent >= 0)
-                                          {
-                                            size_t ecount = exponent + 1;
-                                            /* Note: count <= precision = 
ndigits.  */
-                                            for (; ecount > 0; ecount--)
-                                              *p++ = digits[--ndigits];
-                                            if ((flags & FLAG_ALT) || ndigits 
> nzeroes)
-                                              {
-                                                *p++ = decimal_point_char ();
-                                                while (ndigits > nzeroes)
-                                                  {
-                                                    --ndigits;
-                                                    *p++ = digits[ndigits];
-                                                  }
-                                              }
-                                          }
-                                        else
-                                          {
-                                            size_t ecount = -exponent - 1;
-                                            *p++ = '0';
-                                            *p++ = decimal_point_char ();
-                                            for (; ecount > 0; ecount--)
-                                              *p++ = '0';
-                                            while (ndigits > nzeroes)
-                                              {
-                                                --ndigits;
-                                                *p++ = digits[ndigits];
-                                              }
-                                          }
-                                      }
-                                    else
-                                      {
-                                        /* Exponential notation.  */
-                                        *p++ = digits[--ndigits];
-                                        if ((flags & FLAG_ALT) || ndigits > 
nzeroes)
-                                          {
-                                            *p++ = decimal_point_char ();
-                                            while (ndigits > nzeroes)
-                                              {
-                                                --ndigits;
-                                                *p++ = digits[ndigits];
-                                              }
-                                          }
-                                        *p++ = dp->conversion - 'G' + 'E'; /* 
'e' or 'E' */
-#   if WIDE_CHAR_VERSION && DCHAR_IS_TCHAR
-                                        {
-                                          static const wchar_t 
decimal_format[] =
-                                            { '%', '+', '.', '2', 'd', '\0' };
-                                          SNPRINTF (p, 6 + 1, decimal_format, 
exponent);
-                                        }
-                                        while (*p != '\0')
-                                          p++;
-#   else
-                                        if (sizeof (DCHAR_T) == 1)
-                                          {
-                                            sprintf ((char *) p, "%+.2d", 
exponent);
-                                            while (*p != '\0')
-                                              p++;
-                                          }
-                                        else
-                                          {
-                                            char expbuf[6 + 1];
-                                            const char *ep;
-                                            sprintf (expbuf, "%+.2d", 
exponent);
-                                            for (ep = expbuf; (*p = *ep) != 
'\0'; ep++)
-                                              p++;
-                                          }
-#   endif
-                                      }
-
-                                    free (digits);
-                                  }
-                              }
-                            else
-                              abort ();
-#  else
-                            /* arg is finite.  */
-                            if (!(arg == 0.0L))
-                              abort ();
-
-                            pad_ptr = p;
-
-                            if (dp->conversion == 'f' || dp->conversion == 'F')
-                              {
-                                *p++ = '0';
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > 0; precision--)
-                                      *p++ = '0';
-                                  }
-                              }
-                            else if (dp->conversion == 'e' || dp->conversion 
== 'E')
-                              {
-                                *p++ = '0';
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > 0; precision--)
-                                      *p++ = '0';
-                                  }
-                                *p++ = dp->conversion; /* 'e' or 'E' */
-                                *p++ = '+';
-                                *p++ = '0';
-                                *p++ = '0';
-                              }
-                            else if (dp->conversion == 'g' || dp->conversion 
== 'G')
-                              {
-                                *p++ = '0';
-                                if (flags & FLAG_ALT)
-                                  {
-                                    size_t ndigits =
-                                      (precision > 0 ? precision - 1 : 0);
-                                    *p++ = decimal_point_char ();
-                                    for (; ndigits > 0; --ndigits)
-                                      *p++ = '0';
-                                  }
-                              }
-                            else if (dp->conversion == 'a' || dp->conversion 
== 'A')
-                              {
-                                *p++ = '0';
-                                *p++ = dp->conversion - 'A' + 'X';
-                                pad_ptr = p;
-                                *p++ = '0';
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > 0; precision--)
-                                      *p++ = '0';
-                                  }
-                                *p++ = dp->conversion - 'A' + 'P';
-                                *p++ = '+';
-                                *p++ = '0';
-                              }
-                            else
-                              abort ();
-#  endif
-                          }
-
-                        END_LONG_DOUBLE_ROUNDING ();
-                      }
-                  }
-#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
-                else
-#  endif
-# endif
-# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
-                  {
-                    double arg = a.arg[dp->arg_index].a.a_double;
-
-                    if (isnand (arg))
-                      {
-                        if (dp->conversion >= 'A' && dp->conversion <= 'Z')
-                          {
-                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
-                          }
-                        else
-                          {
-                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
-                          }
-                      }
-                    else
-                      {
-                        int sign = 0;
-
-                        if (signbit (arg)) /* arg < 0.0 or negative zero */
-                          {
-                            sign = -1;
-                            arg = -arg;
-                          }
-
-                        if (sign < 0)
-                          *p++ = '-';
-                        else if (flags & FLAG_SHOWSIGN)
-                          *p++ = '+';
-                        else if (flags & FLAG_SPACE)
-                          *p++ = ' ';
-
-                        if (arg > 0.0 && arg + arg == arg)
-                          {
-                            if (dp->conversion >= 'A' && dp->conversion <= 'Z')
-                              {
-                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
-                              }
-                            else
-                              {
-                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
-                              }
-                          }
-                        else
-                          {
-#  if NEED_PRINTF_DOUBLE
-                            pad_ptr = p;
-
-                            if (dp->conversion == 'f' || dp->conversion == 'F')
-                              {
-                                char *digits;
-                                size_t ndigits;
-
-                                digits =
-                                  scale10_round_decimal_double (arg, 
precision);
-                                if (digits == NULL)
-                                  goto out_of_memory;
-                                ndigits = strlen (digits);
-
-                                if (ndigits > precision)
-                                  do
-                                    {
-                                      --ndigits;
-                                      *p++ = digits[ndigits];
-                                    }
-                                  while (ndigits > precision);
-                                else
-                                  *p++ = '0';
-                                /* Here ndigits <= precision.  */
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > ndigits; precision--)
-                                      *p++ = '0';
-                                    while (ndigits > 0)
-                                      {
-                                        --ndigits;
-                                        *p++ = digits[ndigits];
-                                      }
-                                  }
-
-                                free (digits);
-                              }
-                            else if (dp->conversion == 'e' || dp->conversion 
== 'E')
-                              {
-                                int exponent;
-
-                                if (arg == 0.0)
-                                  {
-                                    exponent = 0;
-                                    *p++ = '0';
-                                    if ((flags & FLAG_ALT) || precision > 0)
-                                      {
-                                        *p++ = decimal_point_char ();
-                                        for (; precision > 0; precision--)
-                                          *p++ = '0';
-                                      }
-                                  }
-                                else
-                                  {
-                                    /* arg > 0.0.  */
-                                    int adjusted;
-                                    char *digits;
-                                    size_t ndigits;
-
-                                    exponent = floorlog10 (arg);
-                                    adjusted = 0;
-                                    for (;;)
-                                      {
-                                        digits =
-                                          scale10_round_decimal_double (arg,
-                                                                        
(int)precision - exponent);
-                                        if (digits == NULL)
-                                          goto out_of_memory;
-                                        ndigits = strlen (digits);
-
-                                        if (ndigits == precision + 1)
-                                          break;
-                                        if (ndigits < precision
-                                            || ndigits > precision + 2)
-                                          /* The exponent was not guessed
-                                             precisely enough.  */
-                                          abort ();
-                                        if (adjusted)
-                                          /* None of two values of exponent is
-                                             the right one.  Prevent an endless
-                                             loop.  */
-                                          abort ();
-                                        free (digits);
-                                        if (ndigits == precision)
-                                          exponent -= 1;
-                                        else
-                                          exponent += 1;
-                                        adjusted = 1;
-                                      }
-                                    /* Here ndigits = precision+1.  */
-                                    if (is_borderline (digits, precision))
-                                      {
-                                        /* Maybe the exponent guess was too 
high
-                                           and a smaller exponent can be 
reached
-                                           by turning a 10...0 into 9...9x.  */
-                                        char *digits2 =
-                                          scale10_round_decimal_double (arg,
-                                                                        
(int)precision - exponent + 1);
-                                        if (digits2 == NULL)
-                                          {
-                                            free (digits);
-                                            goto out_of_memory;
-                                          }
-                                        if (strlen (digits2) == precision + 1)
-                                          {
-                                            free (digits);
-                                            digits = digits2;
-                                            exponent -= 1;
-                                          }
-                                        else
-                                          free (digits2);
-                                      }
-                                    /* Here ndigits = precision+1.  */
-
-                                    *p++ = digits[--ndigits];
-                                    if ((flags & FLAG_ALT) || precision > 0)
-                                      {
-                                        *p++ = decimal_point_char ();
-                                        while (ndigits > 0)
-                                          {
-                                            --ndigits;
-                                            *p++ = digits[ndigits];
-                                          }
-                                      }
-
-                                    free (digits);
-                                  }
-
-                                *p++ = dp->conversion; /* 'e' or 'E' */
-#   if WIDE_CHAR_VERSION && DCHAR_IS_TCHAR
-                                {
-                                  static const wchar_t decimal_format[] =
-                                    /* Produce the same number of exponent 
digits
-                                       as the native printf implementation.  */
-#    if defined _WIN32 && ! defined __CYGWIN__
-                                    { '%', '+', '.', '3', 'd', '\0' };
-#    else
-                                    { '%', '+', '.', '2', 'd', '\0' };
-#    endif
-                                  SNPRINTF (p, 6 + 1, decimal_format, 
exponent);
-                                }
-                                while (*p != '\0')
-                                  p++;
-#   else
-                                {
-                                  static const char decimal_format[] =
-                                    /* Produce the same number of exponent 
digits
-                                       as the native printf implementation.  */
-#    if defined _WIN32 && ! defined __CYGWIN__
-                                    "%+.3d";
-#    else
-                                    "%+.2d";
-#    endif
-                                  if (sizeof (DCHAR_T) == 1)
-                                    {
-                                      sprintf ((char *) p, decimal_format, 
exponent);
-                                      while (*p != '\0')
-                                        p++;
-                                    }
-                                  else
-                                    {
-                                      char expbuf[6 + 1];
-                                      const char *ep;
-                                      sprintf (expbuf, decimal_format, 
exponent);
-                                      for (ep = expbuf; (*p = *ep) != '\0'; 
ep++)
-                                        p++;
-                                    }
-                                }
-#   endif
-                              }
-                            else if (dp->conversion == 'g' || dp->conversion 
== 'G')
-                              {
-                                if (precision == 0)
-                                  precision = 1;
-                                /* precision >= 1.  */
-
-                                if (arg == 0.0)
-                                  /* The exponent is 0, >= -4, < precision.
-                                     Use fixed-point notation.  */
-                                  {
-                                    size_t ndigits = precision;
-                                    /* Number of trailing zeroes that have to 
be
-                                       dropped.  */
-                                    size_t nzeroes =
-                                      (flags & FLAG_ALT ? 0 : precision - 1);
-
-                                    --ndigits;
-                                    *p++ = '0';
-                                    if ((flags & FLAG_ALT) || ndigits > 
nzeroes)
-                                      {
-                                        *p++ = decimal_point_char ();
-                                        while (ndigits > nzeroes)
-                                          {
-                                            --ndigits;
-                                            *p++ = '0';
-                                          }
-                                      }
-                                  }
-                                else
-                                  {
-                                    /* arg > 0.0.  */
-                                    int exponent;
-                                    int adjusted;
-                                    char *digits;
-                                    size_t ndigits;
-                                    size_t nzeroes;
-
-                                    exponent = floorlog10 (arg);
-                                    adjusted = 0;
-                                    for (;;)
-                                      {
-                                        digits =
-                                          scale10_round_decimal_double (arg,
-                                                                        
(int)(precision - 1) - exponent);
-                                        if (digits == NULL)
-                                          goto out_of_memory;
-                                        ndigits = strlen (digits);
-
-                                        if (ndigits == precision)
-                                          break;
-                                        if (ndigits < precision - 1
-                                            || ndigits > precision + 1)
-                                          /* The exponent was not guessed
-                                             precisely enough.  */
-                                          abort ();
-                                        if (adjusted)
-                                          /* None of two values of exponent is
-                                             the right one.  Prevent an endless
-                                             loop.  */
-                                          abort ();
-                                        free (digits);
-                                        if (ndigits < precision)
-                                          exponent -= 1;
-                                        else
-                                          exponent += 1;
-                                        adjusted = 1;
-                                      }
-                                    /* Here ndigits = precision.  */
-                                    if (is_borderline (digits, precision - 1))
-                                      {
-                                        /* Maybe the exponent guess was too 
high
-                                           and a smaller exponent can be 
reached
-                                           by turning a 10...0 into 9...9x.  */
-                                        char *digits2 =
-                                          scale10_round_decimal_double (arg,
-                                                                        
(int)(precision - 1) - exponent + 1);
-                                        if (digits2 == NULL)
-                                          {
-                                            free (digits);
-                                            goto out_of_memory;
-                                          }
-                                        if (strlen (digits2) == precision)
-                                          {
-                                            free (digits);
-                                            digits = digits2;
-                                            exponent -= 1;
-                                          }
-                                        else
-                                          free (digits2);
-                                      }
-                                    /* Here ndigits = precision.  */
-
-                                    /* Determine the number of trailing zeroes
-                                       that have to be dropped.  */
-                                    nzeroes = 0;
-                                    if ((flags & FLAG_ALT) == 0)
-                                      while (nzeroes < ndigits
-                                             && digits[nzeroes] == '0')
-                                        nzeroes++;
-
-                                    /* The exponent is now determined.  */
-                                    if (exponent >= -4
-                                        && exponent < (long)precision)
-                                      {
-                                        /* Fixed-point notation:
-                                           max(exponent,0)+1 digits, then the
-                                           decimal point, then the remaining
-                                           digits without trailing zeroes.  */
-                                        if (exponent >= 0)
-                                          {
-                                            size_t ecount = exponent + 1;
-                                            /* Note: ecount <= precision = 
ndigits.  */
-                                            for (; ecount > 0; ecount--)
-                                              *p++ = digits[--ndigits];
-                                            if ((flags & FLAG_ALT) || ndigits 
> nzeroes)
-                                              {
-                                                *p++ = decimal_point_char ();
-                                                while (ndigits > nzeroes)
-                                                  {
-                                                    --ndigits;
-                                                    *p++ = digits[ndigits];
-                                                  }
-                                              }
-                                          }
-                                        else
-                                          {
-                                            size_t ecount = -exponent - 1;
-                                            *p++ = '0';
-                                            *p++ = decimal_point_char ();
-                                            for (; ecount > 0; ecount--)
-                                              *p++ = '0';
-                                            while (ndigits > nzeroes)
-                                              {
-                                                --ndigits;
-                                                *p++ = digits[ndigits];
-                                              }
-                                          }
-                                      }
-                                    else
-                                      {
-                                        /* Exponential notation.  */
-                                        *p++ = digits[--ndigits];
-                                        if ((flags & FLAG_ALT) || ndigits > 
nzeroes)
-                                          {
-                                            *p++ = decimal_point_char ();
-                                            while (ndigits > nzeroes)
-                                              {
-                                                --ndigits;
-                                                *p++ = digits[ndigits];
-                                              }
-                                          }
-                                        *p++ = dp->conversion - 'G' + 'E'; /* 
'e' or 'E' */
-#   if WIDE_CHAR_VERSION && DCHAR_IS_TCHAR
-                                        {
-                                          static const wchar_t 
decimal_format[] =
-                                            /* Produce the same number of 
exponent digits
-                                               as the native printf 
implementation.  */
-#    if defined _WIN32 && ! defined __CYGWIN__
-                                            { '%', '+', '.', '3', 'd', '\0' };
-#    else
-                                            { '%', '+', '.', '2', 'd', '\0' };
-#    endif
-                                          SNPRINTF (p, 6 + 1, decimal_format, 
exponent);
-                                        }
-                                        while (*p != '\0')
-                                          p++;
-#   else
-                                        {
-                                          static const char decimal_format[] =
-                                            /* Produce the same number of 
exponent digits
-                                               as the native printf 
implementation.  */
-#    if defined _WIN32 && ! defined __CYGWIN__
-                                            "%+.3d";
-#    else
-                                            "%+.2d";
-#    endif
-                                          if (sizeof (DCHAR_T) == 1)
-                                            {
-                                              sprintf ((char *) p, 
decimal_format, exponent);
-                                              while (*p != '\0')
-                                                p++;
-                                            }
-                                          else
-                                            {
-                                              char expbuf[6 + 1];
-                                              const char *ep;
-                                              sprintf (expbuf, decimal_format, 
exponent);
-                                              for (ep = expbuf; (*p = *ep) != 
'\0'; ep++)
-                                                p++;
-                                            }
-                                        }
-#   endif
-                                      }
-
-                                    free (digits);
-                                  }
-                              }
-                            else
-                              abort ();
-#  else
-                            /* arg is finite.  */
-                            if (!(arg == 0.0))
-                              abort ();
-
-                            pad_ptr = p;
-
-                            if (dp->conversion == 'f' || dp->conversion == 'F')
-                              {
-                                *p++ = '0';
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > 0; precision--)
-                                      *p++ = '0';
-                                  }
-                              }
-                            else if (dp->conversion == 'e' || dp->conversion 
== 'E')
-                              {
-                                *p++ = '0';
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > 0; precision--)
-                                      *p++ = '0';
-                                  }
-                                *p++ = dp->conversion; /* 'e' or 'E' */
-                                *p++ = '+';
-                                /* Produce the same number of exponent digits 
as
-                                   the native printf implementation.  */
-#   if defined _WIN32 && ! defined __CYGWIN__
-                                *p++ = '0';
-#   endif
-                                *p++ = '0';
-                                *p++ = '0';
-                              }
-                            else if (dp->conversion == 'g' || dp->conversion 
== 'G')
-                              {
-                                *p++ = '0';
-                                if (flags & FLAG_ALT)
-                                  {
-                                    size_t ndigits =
-                                      (precision > 0 ? precision - 1 : 0);
-                                    *p++ = decimal_point_char ();
-                                    for (; ndigits > 0; --ndigits)
-                                      *p++ = '0';
-                                  }
-                              }
-                            else
-                              abort ();
-#  endif
-                          }
-                      }
-                  }
-# endif
-
-                /* The generated string now extends from tmp to p, with the
-                   zero padding insertion point being at pad_ptr.  */
-                count = p - tmp;
-
-                if (count < width)
-                  {
-                    size_t pad = width - count;
-                    DCHAR_T *end = p + pad;
-
-                    if (flags & FLAG_LEFT)
-                      {
-                        /* Pad with spaces on the right.  */
-                        for (; pad > 0; pad--)
-                          *p++ = ' ';
-                      }
-                    else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
-                      {
-                        /* Pad with zeroes.  */
-                        DCHAR_T *q = end;
-
-                        while (p > pad_ptr)
-                          *--q = *--p;
-                        for (; pad > 0; pad--)
-                          *p++ = '0';
-                      }
-                    else
-                      {
-                        /* Pad with spaces on the left.  */
-                        DCHAR_T *q = end;
-
-                        while (p > tmp)
-                          *--q = *--p;
-                        for (; pad > 0; pad--)
-                          *p++ = ' ';
-                      }
-
-                    p = end;
-                  }
-
-                count = p - tmp;
-
-                if (count >= tmp_length)
-                  /* tmp_length was incorrectly calculated - fix the
-                     code above!  */
-                  abort ();
-
-                /* Make room for the result.  */
-                if (count >= allocated - length)
-                  {
-                    size_t n = xsum (length, count);
-
-                    ENSURE_ALLOCATION (n);
-                  }
-
-                /* Append the result.  */
-                memcpy (result + length, tmp, count * sizeof (DCHAR_T));
-                if (tmp != tmpbuf)
-                  free (tmp);
-                length += count;
-              }
-#endif
-            else
-              {
-                arg_type type = a.arg[dp->arg_index].type;
-                int flags = dp->flags;
-#if (WIDE_CHAR_VERSION && MUSL_LIBC) || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || 
NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || 
NEED_PRINTF_UNBOUNDED_PRECISION
-                int has_width;
-#endif
-#if !USE_SNPRINTF || WIDE_CHAR_VERSION || !HAVE_SNPRINTF_RETVAL_C99 || 
USE_MSVC__SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || 
NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || 
NEED_PRINTF_UNBOUNDED_PRECISION
-                size_t width;
-#endif
-#if !USE_SNPRINTF || (WIDE_CHAR_VERSION && DCHAR_IS_TCHAR) || 
!HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || (WIDE_CHAR_VERSION && 
MUSL_LIBC) || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST 
|| NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
-                int has_precision;
-                size_t precision;
-#endif
-#if NEED_PRINTF_UNBOUNDED_PRECISION
-                int prec_ourselves;
-#else
-#               define prec_ourselves 0
-#endif
-#if (WIDE_CHAR_VERSION && MUSL_LIBC) || NEED_PRINTF_FLAG_LEFTADJUST
-#               define pad_ourselves 1
-#elif !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || 
NEED_PRINTF_UNBOUNDED_PRECISION
-                int pad_ourselves;
-#else
-#               define pad_ourselves 0
-#endif
-                TCHAR_T *fbp;
-                unsigned int prefix_count;
-                int prefixes[2] IF_LINT (= { 0 });
-                int orig_errno;
-#if !USE_SNPRINTF
-                size_t tmp_length;
-                TCHAR_T tmpbuf[700];
-                TCHAR_T *tmp;
-#endif
-
-#if (WIDE_CHAR_VERSION && MUSL_LIBC) || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || 
NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || 
NEED_PRINTF_UNBOUNDED_PRECISION
-                has_width = 0;
-#endif
-#if !USE_SNPRINTF || WIDE_CHAR_VERSION || !HAVE_SNPRINTF_RETVAL_C99 || 
USE_MSVC__SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || 
NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || 
NEED_PRINTF_UNBOUNDED_PRECISION
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        width = arg;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = -width;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-# if (WIDE_CHAR_VERSION && MUSL_LIBC) || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || 
NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || 
NEED_PRINTF_UNBOUNDED_PRECISION
-                    has_width = 1;
-# endif
-                  }
-#endif
-
-#if !USE_SNPRINTF || (WIDE_CHAR_VERSION && DCHAR_IS_TCHAR) || 
!HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || (WIDE_CHAR_VERSION && 
MUSL_LIBC) || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST 
|| NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
-                has_precision = 0;
-                precision = 6;
-                if (dp->precision_start != dp->precision_end)
-                  {
-                    if (dp->precision_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->precision_arg_index].a.a_int;
-                        /* "A negative precision is taken as if the precision
-                            were omitted."  */
-                        if (arg >= 0)
-                          {
-                            precision = arg;
-                            has_precision = 1;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->precision_start + 1;
-
-                        precision = 0;
-                        while (digitp != dp->precision_end)
-                          precision = xsum (xtimes (precision, 10), *digitp++ 
- '0');
-                        has_precision = 1;
-                      }
-                  }
-#endif
-
-                /* Decide whether to handle the precision ourselves.  */
-#if NEED_PRINTF_UNBOUNDED_PRECISION
-                switch (dp->conversion)
-                  {
-                  case 'd': case 'i': case 'u':
-                  case 'b':
-                  #if SUPPORT_GNU_PRINTF_DIRECTIVES \
-                      || (__GLIBC__ + (__GLIBC_MINOR__ >= 35) > 2)
-                  case 'B':
-                  #endif
-                  case 'o':
-                  case 'x': case 'X': case 'p':
-                    prec_ourselves = has_precision && (precision > 0);
-                    break;
-                  default:
-                    prec_ourselves = 0;
-                    break;
-                  }
-#endif
-
-                /* Decide whether to perform the padding ourselves.  */
-#if !((WIDE_CHAR_VERSION && MUSL_LIBC) || NEED_PRINTF_FLAG_LEFTADJUST) && 
(!DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || 
NEED_PRINTF_UNBOUNDED_PRECISION)
-                switch (dp->conversion)
-                  {
-# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
-                  /* If we need conversion from TCHAR_T[] to DCHAR_T[], we need
-                     to perform the padding after this conversion.  Functions
-                     with unistdio extensions perform the padding based on
-                     character count rather than element count.  */
-                  case 'c': case 's':
-# endif
-# if NEED_PRINTF_FLAG_ZERO
-                  case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
-                  case 'a': case 'A':
-# endif
-                    pad_ourselves = 1;
-                    break;
-                  default:
-                    pad_ourselves = prec_ourselves;
-                    break;
-                  }
-#endif
-
-#if !USE_SNPRINTF
-                /* Allocate a temporary buffer of sufficient size for calling
-                   sprintf.  */
-                tmp_length =
-                  MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type,
-                                   flags, width, has_precision, precision,
-                                   pad_ourselves);
-
-                if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T))
-                  tmp = tmpbuf;
-                else
-                  {
-                    size_t tmp_memsize = xtimes (tmp_length, sizeof (TCHAR_T));
-
-                    if (size_overflow_p (tmp_memsize))
-                      /* Overflow, would lead to out of memory.  */
-                      goto out_of_memory;
-                    tmp = (TCHAR_T *) malloc (tmp_memsize);
-                    if (tmp == NULL)
-                      /* Out of memory.  */
-                      goto out_of_memory;
-                  }
-#endif
-
-                /* Construct the format string for calling snprintf or
-                   sprintf.  */
-                fbp = buf;
-                *fbp++ = '%';
-#if NEED_PRINTF_FLAG_GROUPING
-                /* The underlying implementation doesn't support the ' flag.
-                   Produce no grouping characters in this case; this is
-                   acceptable because the grouping is locale dependent.  */
-#else
-                if (flags & FLAG_GROUP)
-                  *fbp++ = '\'';
-#endif
-                if (flags & FLAG_LEFT)
-                  *fbp++ = '-';
-                if (flags & FLAG_SHOWSIGN)
-                  *fbp++ = '+';
-                if (flags & FLAG_SPACE)
-                  *fbp++ = ' ';
-                if (flags & FLAG_ALT)
-                  *fbp++ = '#';
-#if __GLIBC__ >= 2 && !defined __UCLIBC__
-                if (flags & FLAG_LOCALIZED)
-                  *fbp++ = 'I';
-#endif
-                if (!pad_ourselves)
-                  {
-                    if (flags & FLAG_ZERO)
-                      *fbp++ = '0';
-                    if (dp->width_start != dp->width_end)
-                      {
-                        size_t n = dp->width_end - dp->width_start;
-                        /* The width specification is known to consist only
-                           of standard ASCII characters.  */
-                        if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
-                          {
-                            memcpy (fbp, dp->width_start, n * sizeof 
(TCHAR_T));
-                            fbp += n;
-                          }
-                        else
-                          {
-                            const FCHAR_T *mp = dp->width_start;
-                            do
-                              *fbp++ = *mp++;
-                            while (--n > 0);
-                          }
-                      }
-                  }
-                if (!prec_ourselves)
-                  {
-                    if (dp->precision_start != dp->precision_end)
-                      {
-                        size_t n = dp->precision_end - dp->precision_start;
-                        /* The precision specification is known to consist only
-                           of standard ASCII characters.  */
-                        if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
-                          {
-                            memcpy (fbp, dp->precision_start, n * sizeof 
(TCHAR_T));
-                            fbp += n;
-                          }
-                        else
-                          {
-                            const FCHAR_T *mp = dp->precision_start;
-                            do
-                              *fbp++ = *mp++;
-                            while (--n > 0);
-                          }
-                      }
-                  }
-
-                switch (type)
-                  {
-                  case TYPE_LONGLONGINT:
-                  case TYPE_ULONGLONGINT:
-                  #if INT8_WIDTH > LONG_WIDTH
-                  case TYPE_INT8_T:
-                  #endif
-                  #if UINT8_WIDTH > LONG_WIDTH
-                  case TYPE_UINT8_T:
-                  #endif
-                  #if INT16_WIDTH > LONG_WIDTH
-                  case TYPE_INT16_T:
-                  #endif
-                  #if UINT16_WIDTH > LONG_WIDTH
-                  case TYPE_UINT16_T:
-                  #endif
-                  #if INT32_WIDTH > LONG_WIDTH
-                  case TYPE_INT32_T:
-                  #endif
-                  #if UINT32_WIDTH > LONG_WIDTH
-                  case TYPE_UINT32_T:
-                  #endif
-                  #if INT64_WIDTH > LONG_WIDTH
-                  case TYPE_INT64_T:
-                  #endif
-                  #if UINT64_WIDTH > LONG_WIDTH
-                  case TYPE_UINT64_T:
-                  #endif
-                  #if INT_FAST8_WIDTH > LONG_WIDTH
-                  case TYPE_INT_FAST8_T:
-                  #endif
-                  #if UINT_FAST8_WIDTH > LONG_WIDTH
-                  case TYPE_UINT_FAST8_T:
-                  #endif
-                  #if INT_FAST16_WIDTH > LONG_WIDTH
-                  case TYPE_INT_FAST16_T:
-                  #endif
-                  #if UINT_FAST16_WIDTH > LONG_WIDTH
-                  case TYPE_UINT_FAST16_T:
-                  #endif
-                  #if INT_FAST32_WIDTH > LONG_WIDTH
-                  case TYPE_INT3_FAST2_T:
-                  #endif
-                  #if UINT_FAST32_WIDTH > LONG_WIDTH
-                  case TYPE_UINT_FAST32_T:
-                  #endif
-                  #if INT_FAST64_WIDTH > LONG_WIDTH
-                  case TYPE_INT_FAST64_T:
-                  #endif
-                  #if UINT_FAST64_WIDTH > LONG_WIDTH
-                  case TYPE_UINT_FAST64_T:
-                  #endif
-#if defined _WIN32 && ! defined __CYGWIN__
-                    *fbp++ = 'I';
-                    *fbp++ = '6';
-                    *fbp++ = '4';
-                    break;
-#else
-                    *fbp++ = 'l';
-#endif
-                    FALLTHROUGH;
-                  case TYPE_LONGINT:
-                  case TYPE_ULONGINT:
-                  #if INT8_WIDTH > INT_WIDTH && INT8_WIDTH <= LONG_WIDTH
-                  case TYPE_INT8_T:
-                  #endif
-                  #if UINT8_WIDTH > INT_WIDTH && UINT8_WIDTH <= LONG_WIDTH
-                  case TYPE_UINT8_T:
-                  #endif
-                  #if INT16_WIDTH > INT_WIDTH && INT16_WIDTH <= LONG_WIDTH
-                  case TYPE_INT16_T:
-                  #endif
-                  #if UINT16_WIDTH > INT_WIDTH && UINT16_WIDTH <= LONG_WIDTH
-                  case TYPE_UINT16_T:
-                  #endif
-                  #if INT32_WIDTH > INT_WIDTH && INT32_WIDTH <= LONG_WIDTH
-                  case TYPE_INT32_T:
-                  #endif
-                  #if UINT32_WIDTH > INT_WIDTH && UINT32_WIDTH <= LONG_WIDTH
-                  case TYPE_UINT32_T:
-                  #endif
-                  #if INT64_WIDTH > INT_WIDTH && INT64_WIDTH <= LONG_WIDTH
-                  case TYPE_INT64_T:
-                  #endif
-                  #if UINT64_WIDTH > INT_WIDTH && UINT64_WIDTH <= LONG_WIDTH
-                  case TYPE_UINT64_T:
-                  #endif
-                  #if INT_FAST8_WIDTH > INT_WIDTH && INT_FAST8_WIDTH <= 
LONG_WIDTH
-                  case TYPE_INT_FAST8_T:
-                  #endif
-                  #if UINT_FAST8_WIDTH > INT_WIDTH && UINT_FAST8_WIDTH <= 
LONG_WIDTH
-                  case TYPE_UINT_FAST8_T:
-                  #endif
-                  #if INT_FAST16_WIDTH > INT_WIDTH && INT_FAST16_WIDTH <= 
LONG_WIDTH
-                  case TYPE_INT_FAST16_T:
-                  #endif
-                  #if UINT_FAST16_WIDTH > INT_WIDTH && UINT_FAST16_WIDTH <= 
LONG_WIDTH
-                  case TYPE_UINT_FAST16_T:
-                  #endif
-                  #if INT_FAST32_WIDTH > INT_WIDTH && INT_FAST32_WIDTH <= 
LONG_WIDTH
-                  case TYPE_INT_FAST32_T:
-                  #endif
-                  #if UINT_FAST32_WIDTH > INT_WIDTH && UINT_FAST32_WIDTH <= 
LONG_WIDTH
-                  case TYPE_UINT_FAST32_T:
-                  #endif
-                  #if INT_FAST64_WIDTH > INT_WIDTH && INT_FAST64_WIDTH <= 
LONG_WIDTH
-                  case TYPE_INT_FAST64_T:
-                  #endif
-                  #if UINT_FAST64_WIDTH > INT_WIDTH && UINT_FAST64_WIDTH <= 
LONG_WIDTH
-                  case TYPE_UINT_FAST64_T:
-                  #endif
-                  #if HAVE_WINT_T
-                  case TYPE_WIDE_CHAR:
-                  #endif
-                  #if HAVE_WCHAR_T
-                  case TYPE_WIDE_STRING:
-                  #endif
-                    *fbp++ = 'l';
-                    break;
-                  case TYPE_LONGDOUBLE:
-                    *fbp++ = 'L';
-                    break;
-                  default:
-                    break;
-                  }
-#if NEED_PRINTF_DIRECTIVE_F
-                if (dp->conversion == 'F')
-                  *fbp = 'f';
-                else
-#endif
-                  *fbp = dp->conversion;
-#if USE_SNPRINTF
-                /* Decide whether to pass %n in the format string
-                   to SNPRINTF.  */
-# if (((!WIDE_CHAR_VERSION || !DCHAR_IS_TCHAR)                              \
-       && (HAVE_SNPRINTF_RETVAL_C99 && HAVE_SNPRINTF_TRUNCATION_C99))       \
-      || ((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3))       \
-          && !defined __UCLIBC__)                                           \
-      || (defined __APPLE__ && defined __MACH__)                            \
-      || defined __OpenBSD__                                                \
-      || defined __ANDROID__                                                \
-      || (defined _WIN32 && ! defined __CYGWIN__))                          \
-      || (WIDE_CHAR_VERSION && MUSL_LIBC)
-                /* We can avoid passing %n and instead rely on SNPRINTF's
-                   return value if
-                     - !WIDE_CHAR_VERSION || !DCHAR_IS_TCHAR, because 
otherwise,
-                       when WIDE_CHAR_VERSION && DCHAR_IS_TCHAR,
-                       snwprintf()/_snwprintf() (Windows) and swprintf() (Unix)
-                       don't return the needed buffer size,
-                     and
-                     - we're compiling for a system where we know
-                       - that snprintf's return value conforms to ISO C 99
-                         (HAVE_SNPRINTF_RETVAL_C99) and
-                       - that snprintf always produces NUL-terminated strings
-                         (HAVE_SNPRINTF_TRUNCATION_C99).
-                   And it is desirable to do so, because more and more 
platforms
-                   no longer support %n, for "security reasons".  */
-                /* On specific platforms, listed below, we *must* avoid %n.
-                   In the case
-                     !WIDE_CHAR_VERSION && HAVE_SNPRINTF_RETVAL_C99 && 
!USE_MSVC__SNPRINTF
-                   we can rely on the return value of snprintf instead.  
Whereas
-                   in the opposite case
-                     WIDE_CHAR_VERSION || !HAVE_SNPRINTF_RETVAL_C99 || 
USE_MSVC__SNPRINTF
-                   we need to make room based on an estimation, computed by
-                   MAX_ROOM_NEEDED.  */
-                /* The following platforms forbid %n:
-                     - On glibc2 systems from 2004-10-18 or newer, the use of
-                       %n in format strings in writable memory may crash the
-                       program (if compiled with _FORTIFY_SOURCE=2).
-                     - On macOS 10.13 or newer, the use of %n in format
-                       strings in writable memory by default crashes the
-                       program.
-                     - On OpenBSD, since 2021-08-30, the use of %n in format
-                       strings produces an abort (see
-                       
<https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/vfprintf.c.diff?r1=1.79&r2=1.80&f=h>,
-                       
<https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/vfwprintf.c.diff?r1=1.20&r2=1.21&f=h>).
-                     - On Android, starting on 2018-03-07, the use of %n in
-                       format strings produces a fatal error (see
-                       
<https://android.googlesource.com/platform/bionic/+/41398d03b7e8e0dfb951660ae713e682e9fc0336>).
-                     - On native Windows systems (such as mingw) where the OS 
is
-                       Windows Vista, the use of %n in format strings by 
default
-                       crashes the program. See
-                         <https://gcc.gnu.org/ml/gcc/2007-06/msg00122.html> and
-                         
<https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/set-printf-count-output>
-                   On the first four of these platforms, if !WIDE_CHAR_VERSION,
-                   it is not a big deal to avoid %n, because on these 
platforms,
-                   HAVE_SNPRINTF_RETVAL_C99 and HAVE_SNPRINTF_TRUNCATION_C99 
are
-                   1.
-                   On native Windows, if !WIDE_CHAR_VERSION, it's not a big 
deal
-                   either because:
-                     - Although the gl_SNPRINTF_TRUNCATION_C99 test fails,
-                       snprintf does not write more than the specified number
-                       of bytes. (snprintf (buf, 3, "%d %d", 4567, 89) writes
-                       '4', '5', '6' into buf, not '4', '5', '\0'.)
-                     - Although the gl_SNPRINTF_RETVAL_C99 test fails, snprintf
-                       allows us to recognize the case of an insufficient
-                       buffer size: it returns -1 in this case.  */
-                /* Additionally, in the WIDE_CHAR_VERSION case, we cannot use 
%n
-                   on musl libc because we would run into an swprintf() bug.
-                   See <https://www.openwall.com/lists/musl/2023/03/19/1>.  */
-                fbp[1] = '\0';
-# else           /* AIX <= 5.1, HP-UX, IRIX, OSF/1, Solaris <= 9, BeOS */
-                fbp[1] = '%';
-                fbp[2] = 'n';
-                fbp[3] = '\0';
-# endif
-#else
-                fbp[1] = '\0';
-#endif
-
-                /* Construct the arguments for calling snprintf or sprintf.  */
-                prefix_count = 0;
-                if (!pad_ourselves && dp->width_arg_index != ARG_NONE)
-                  {
-                    if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                      abort ();
-                    prefixes[prefix_count++] = 
a.arg[dp->width_arg_index].a.a_int;
-                  }
-                if (!prec_ourselves && dp->precision_arg_index != ARG_NONE)
-                  {
-                    if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                      abort ();
-                    prefixes[prefix_count++] = 
a.arg[dp->precision_arg_index].a.a_int;
-                  }
-
-#if USE_SNPRINTF
-                /* The SNPRINTF result is appended after result[0..length].
-                   The latter is an array of DCHAR_T; SNPRINTF appends an
-                   array of TCHAR_T to it.  This is possible because
-                   sizeof (TCHAR_T) divides sizeof (DCHAR_T) and
-                   alignof (TCHAR_T) <= alignof (DCHAR_T).  */
-# define TCHARS_PER_DCHAR (sizeof (DCHAR_T) / sizeof (TCHAR_T))
-                /* Ensure that maxlen below will be >= 2.  Needed on BeOS,
-                   where an snprintf() with maxlen==1 acts like sprintf().  */
-                ENSURE_ALLOCATION (xsum (length,
-                                         (2 + TCHARS_PER_DCHAR - 1)
-                                         / TCHARS_PER_DCHAR));
-                /* Prepare checking whether snprintf returns the count
-                   via %n.  */
-                *(TCHAR_T *) (result + length) = '\0';
-#endif
-
-                orig_errno = errno;
-
-                for (;;)
-                  {
-                    int count = -1;
-
-#if USE_SNPRINTF
-                    int retcount = 0;
-                    size_t maxlen = allocated - length;
-                    /* SNPRINTF can fail if its second argument is
-                       > INT_MAX.  */
-                    if (maxlen > INT_MAX / TCHARS_PER_DCHAR)
-                      maxlen = INT_MAX / TCHARS_PER_DCHAR;
-                    maxlen = maxlen * TCHARS_PER_DCHAR;
-# define SNPRINTF_BUF(arg) \
-                    switch (prefix_count)                                   \
-                      {                                                     \
-                      case 0:                                               \
-                        retcount = SNPRINTF ((TCHAR_T *) (result + length), \
-                                             maxlen, buf,                   \
-                                             arg, &count);                  \
-                        break;                                              \
-                      case 1:                                               \
-                        retcount = SNPRINTF ((TCHAR_T *) (result + length), \
-                                             maxlen, buf,                   \
-                                             prefixes[0], arg, &count);     \
-                        break;                                              \
-                      case 2:                                               \
-                        retcount = SNPRINTF ((TCHAR_T *) (result + length), \
-                                             maxlen, buf,                   \
-                                             prefixes[0], prefixes[1], arg, \
-                                             &count);                       \
-                        break;                                              \
-                      default:                                              \
-                        abort ();                                           \
-                      }
-#else
-# define SNPRINTF_BUF(arg) \
-                    switch (prefix_count)                                   \
-                      {                                                     \
-                      case 0:                                               \
-                        count = sprintf (tmp, buf, arg);                    \
-                        break;                                              \
-                      case 1:                                               \
-                        count = sprintf (tmp, buf, prefixes[0], arg);       \
-                        break;                                              \
-                      case 2:                                               \
-                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
-                                         arg);                              \
-                        break;                                              \
-                      default:                                              \
-                        abort ();                                           \
-                      }
-#endif
-
-                    errno = 0;
-                    switch (type)
-                      {
-                      case TYPE_SCHAR:
-                        {
-                          int arg = a.arg[dp->arg_index].a.a_schar;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_UCHAR:
-                        {
-                          unsigned int arg = a.arg[dp->arg_index].a.a_uchar;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_SHORT:
-                        {
-                          int arg = a.arg[dp->arg_index].a.a_short;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_USHORT:
-                        {
-                          unsigned int arg = a.arg[dp->arg_index].a.a_ushort;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_INT:
-                        {
-                          int arg = a.arg[dp->arg_index].a.a_int;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_UINT:
-                        {
-                          unsigned int arg = a.arg[dp->arg_index].a.a_uint;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_LONGINT:
-                        {
-                          long int arg = a.arg[dp->arg_index].a.a_longint;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_ULONGINT:
-                        {
-                          unsigned long int arg = 
a.arg[dp->arg_index].a.a_ulongint;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_LONGLONGINT:
-                        {
-                          long long int arg = 
a.arg[dp->arg_index].a.a_longlongint;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_ULONGLONGINT:
-                        {
-                          unsigned long long int arg = 
a.arg[dp->arg_index].a.a_ulonglongint;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_INT8_T:
-                        {
-                          int8_t arg = a.arg[dp->arg_index].a.a_int8_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_UINT8_T:
-                        {
-                          uint8_t arg = a.arg[dp->arg_index].a.a_uint8_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_INT16_T:
-                        {
-                          int16_t arg = a.arg[dp->arg_index].a.a_int16_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_UINT16_T:
-                        {
-                          uint16_t arg = a.arg[dp->arg_index].a.a_uint16_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_INT32_T:
-                        {
-                          int32_t arg = a.arg[dp->arg_index].a.a_int32_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_UINT32_T:
-                        {
-                          uint32_t arg = a.arg[dp->arg_index].a.a_uint32_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_INT64_T:
-                        {
-                          int64_t arg = a.arg[dp->arg_index].a.a_int64_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_UINT64_T:
-                        {
-                          uint64_t arg = a.arg[dp->arg_index].a.a_uint64_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_INT_FAST8_T:
-                        {
-                          int_fast8_t arg = 
a.arg[dp->arg_index].a.a_int_fast8_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_UINT_FAST8_T:
-                        {
-                          uint_fast8_t arg = 
a.arg[dp->arg_index].a.a_uint_fast8_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_INT_FAST16_T:
-                        {
-                          int_fast16_t arg = 
a.arg[dp->arg_index].a.a_int_fast16_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_UINT_FAST16_T:
-                        {
-                          uint_fast16_t arg = 
a.arg[dp->arg_index].a.a_uint_fast16_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_INT_FAST32_T:
-                        {
-                          int_fast32_t arg = 
a.arg[dp->arg_index].a.a_int_fast32_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_UINT_FAST32_T:
-                        {
-                          uint_fast32_t arg = 
a.arg[dp->arg_index].a.a_uint_fast32_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_INT_FAST64_T:
-                        {
-                          int_fast64_t arg = 
a.arg[dp->arg_index].a.a_int_fast64_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_UINT_FAST64_T:
-                        {
-                          uint_fast64_t arg = 
a.arg[dp->arg_index].a.a_uint_fast64_t;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_DOUBLE:
-                        {
-                          double arg = a.arg[dp->arg_index].a.a_double;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_LONGDOUBLE:
-                        {
-                          long double arg = 
a.arg[dp->arg_index].a.a_longdouble;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_CHAR:
-                        {
-                          int arg = a.arg[dp->arg_index].a.a_char;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-#if HAVE_WINT_T
-                      case TYPE_WIDE_CHAR:
-                        {
-                          wint_t arg = a.arg[dp->arg_index].a.a_wide_char;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-#endif
-                      case TYPE_STRING:
-                        {
-                          const char *arg = a.arg[dp->arg_index].a.a_string;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-#if HAVE_WCHAR_T
-                      case TYPE_WIDE_STRING:
-                        {
-                          const wchar_t *arg = 
a.arg[dp->arg_index].a.a_wide_string;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-#endif
-                      case TYPE_POINTER:
-                        {
-                          void *arg = a.arg[dp->arg_index].a.a_pointer;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      default:
-                        abort ();
-                      }
-
-#if USE_SNPRINTF
-                    /* Portability: Not all implementations of snprintf()
-                       are ISO C 99 compliant.  Determine the number of
-                       bytes that snprintf() has produced or would have
-                       produced.  */
-                    if (count >= 0)
-                      {
-                        /* Verify that snprintf() has NUL-terminated its
-                           result.  */
-                        if ((unsigned int) count < maxlen
-                            && ((TCHAR_T *) (result + length)) [count] != '\0')
-                          abort ();
-                        /* Portability hack.  */
-                        if (retcount > count)
-                          count = retcount;
-                      }
-                    else
-                      {
-                        /* snprintf() doesn't understand the '%n'
-                           directive.  */
-                        if (fbp[1] != '\0')
-                          {
-                            /* Don't use the '%n' directive; instead, look
-                               at the snprintf() return value.  */
-                            fbp[1] = '\0';
-                            continue;
-                          }
-                        else
-                          {
-                            /* Look at the snprintf() return value.  */
-                            if (retcount < 0)
-                              {
-# if (WIDE_CHAR_VERSION && DCHAR_IS_TCHAR) || !HAVE_SNPRINTF_RETVAL_C99 || 
USE_MSVC__SNPRINTF
-                                /* HP-UX 10.20 snprintf() is doubly deficient:
-                                   It doesn't understand the '%n' directive,
-                                   *and* it returns -1 (rather than the length
-                                   that would have been required) when the
-                                   buffer is too small.
-                                   Likewise, in case of
-                                   WIDE_CHAR_VERSION && DCHAR_IS_TCHAR, the
-                                   functions snwprintf()/_snwprintf() (Windows)
-                                   or swprintf() (Unix).
-                                   But a failure at this point can also come
-                                   from other reasons than a too small buffer,
-                                   such as an invalid wide string argument to
-                                   the %ls directive, or possibly an invalid
-                                   floating-point argument.  */
-                                size_t tmp_length =
-                                  MAX_ROOM_NEEDED (&a, dp->arg_index,
-                                                   dp->conversion, type, flags,
-                                                   width,
-                                                   has_precision,
-                                                   precision, pad_ourselves);
-
-                                if (maxlen < tmp_length)
-                                  {
-                                    /* Make more room.  But try to do through
-                                       this reallocation only once.  */
-                                    size_t bigger_need =
-                                      xsum (length,
-                                            xsum (tmp_length,
-                                                  TCHARS_PER_DCHAR - 1)
-                                            / TCHARS_PER_DCHAR);
-                                    /* And always grow proportionally.
-                                       (There may be several arguments, each
-                                       needing a little more room than the
-                                       previous one.)  */
-                                    size_t bigger_need2 =
-                                      xsum (xtimes (allocated, 2), 12);
-                                    if (bigger_need < bigger_need2)
-                                      bigger_need = bigger_need2;
-                                    ENSURE_ALLOCATION (bigger_need);
-                                    continue;
-                                  }
-# endif
-                              }
-                            else
-                              {
-                                count = retcount;
-# if WIDE_CHAR_VERSION && defined __MINGW32__
-                                if (count == 0 && dp->conversion == 'c')
-                                  /* snwprintf returned 0 instead of 1.  But it
-                                     wrote a null wide character.  */
-                                  count = 1;
-# endif
-                              }
-                          }
-                      }
-#endif
-
-                    /* Attempt to handle failure.  */
-                    if (count < 0)
-                      {
-                        /* SNPRINTF or sprintf failed.  Use the errno that it
-                           has set, if any.  */
-                        if (errno == 0)
-                          {
-                            if (dp->conversion == 'c' || dp->conversion == 's')
-                              errno = EILSEQ;
-                            else
-                              errno = EINVAL;
-                          }
-
-                        goto fail_with_errno;
-                      }
-
-#if USE_SNPRINTF
-                    /* Handle overflow of the allocated buffer.
-                       If such an overflow occurs, a C99 compliant snprintf()
-                       returns a count >= maxlen.  However, a non-compliant
-                       snprintf() function returns only count = maxlen - 1.  To
-                       cover both cases, test whether count >= maxlen - 1.  */
-                    if ((unsigned int) count + 1 >= maxlen)
-                      {
-                        /* If maxlen already has attained its allowed maximum,
-                           allocating more memory will not increase maxlen.
-                           Instead of looping, bail out.  */
-                        if (maxlen == INT_MAX / TCHARS_PER_DCHAR)
-                          goto overflow;
-                        else
-                          {
-                            /* Need at least (count + 1) * sizeof (TCHAR_T)
-                               bytes.  (The +1 is for the trailing NUL.)
-                               But ask for (count + 2) * sizeof (TCHAR_T)
-                               bytes, so that in the next round, we likely get
-                                 maxlen > (unsigned int) count + 1
-                               and so we don't get here again.
-                               And allocate proportionally, to avoid looping
-                               eternally if snprintf() reports a too small
-                               count.  */
-                            size_t n =
-                              xmax (xsum (length,
-                                          ((unsigned int) count + 2
-                                           + TCHARS_PER_DCHAR - 1)
-                                          / TCHARS_PER_DCHAR),
-                                    xtimes (allocated, 2));
-
-                            ENSURE_ALLOCATION (n);
-                            continue;
-                          }
-                      }
-#endif
-
-#if NEED_PRINTF_UNBOUNDED_PRECISION
-                    if (prec_ourselves)
-                      {
-                        /* Handle the precision.  */
-                        TCHAR_T *prec_ptr =
-# if USE_SNPRINTF
-                          (TCHAR_T *) (result + length);
-# else
-                          tmp;
-# endif
-                        size_t prefix_count;
-                        size_t move;
-
-                        prefix_count = 0;
-                        /* Put the additional zeroes after the sign.  */
-                        if (count >= 1
-                            && (*prec_ptr == '-' || *prec_ptr == '+'
-                                || *prec_ptr == ' '))
-                          prefix_count = 1;
-                        /* Put the additional zeroes after the 0x prefix if
-                           (flags & FLAG_ALT) || (dp->conversion == 'p').  */
-                        else if (count >= 2
-                                 && prec_ptr[0] == '0'
-                                 && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X'))
-                          prefix_count = 2;
-
-                        move = count - prefix_count;
-                        if (precision > move)
-                          {
-                            /* Insert zeroes.  */
-                            size_t insert = precision - move;
-                            TCHAR_T *prec_end;
-
-# if USE_SNPRINTF
-                            size_t n =
-                              xsum (length,
-                                    (count + insert + TCHARS_PER_DCHAR - 1)
-                                    / TCHARS_PER_DCHAR);
-                            length += (count + TCHARS_PER_DCHAR - 1) / 
TCHARS_PER_DCHAR;
-                            ENSURE_ALLOCATION (n);
-                            length -= (count + TCHARS_PER_DCHAR - 1) / 
TCHARS_PER_DCHAR;
-                            prec_ptr = (TCHAR_T *) (result + length);
-# endif
-
-                            prec_end = prec_ptr + count;
-                            prec_ptr += prefix_count;
-
-                            while (prec_end > prec_ptr)
-                              {
-                                prec_end--;
-                                prec_end[insert] = prec_end[0];
-                              }
-
-                            prec_end += insert;
-                            do
-                              *--prec_end = '0';
-                            while (prec_end > prec_ptr);
-
-                            count += insert;
-                          }
-                      }
-#endif
-
-#if !USE_SNPRINTF
-                    if (count >= tmp_length)
-                      /* tmp_length was incorrectly calculated - fix the
-                         code above!  */
-                      abort ();
-#endif
-
-#if !DCHAR_IS_TCHAR
-                    /* Convert from TCHAR_T[] to DCHAR_T[].  */
-                    if (dp->conversion == 'c' || dp->conversion == 's'
-# if __GLIBC__ >= 2 && !defined __UCLIBC__
-                        || (flags & FLAG_LOCALIZED)
-# endif
-                       )
-                      {
-                        /* The result string is not guaranteed to be ASCII.  */
-                        const TCHAR_T *tmpsrc;
-                        DCHAR_T *tmpdst;
-                        size_t tmpdst_len;
-                        /* This code assumes that TCHAR_T is 'char'.  */
-                        static_assert (sizeof (TCHAR_T) == 1);
-# if USE_SNPRINTF
-                        tmpsrc = (TCHAR_T *) (result + length);
-# else
-                        tmpsrc = tmp;
-# endif
-# if WIDE_CHAR_VERSION
-                        /* Convert tmpsrc[0..count-1] to a freshly allocated
-                           wide character array.  */
-                        mbstate_t state;
-
-                        memset (&state, '\0', sizeof (mbstate_t));
-                        tmpdst_len = 0;
-                        {
-                          const TCHAR_T *src = tmpsrc;
-                          size_t srclen = count;
-
-                          for (; srclen > 0; tmpdst_len++)
-                            {
-                              /* Parse the next multibyte character.  */
-                              size_t ret = mbrtowc (NULL, src, srclen, &state);
-                              if (ret == (size_t)(-2) || ret == (size_t)(-1))
-                                goto fail_with_EILSEQ;
-                              if (ret == 0)
-                                ret = 1;
-                              src += ret;
-                              srclen -= ret;
-                            }
-                        }
-
-                        tmpdst =
-                          (wchar_t *) malloc ((tmpdst_len + 1) * sizeof 
(wchar_t));
-                        if (tmpdst == NULL)
-                          goto out_of_memory;
-
-                        memset (&state, '\0', sizeof (mbstate_t));
-                        {
-                          DCHAR_T *destptr = tmpdst;
-                          const TCHAR_T *src = tmpsrc;
-                          size_t srclen = count;
-
-                          for (; srclen > 0; destptr++)
-                            {
-                              /* Parse the next multibyte character.  */
-                              size_t ret = mbrtowc (destptr, src, srclen, 
&state);
-                              if (ret == (size_t)(-2) || ret == (size_t)(-1))
-                                /* Should already have been caught in the first
-                                   loop, above.  */
-                                abort ();
-                              if (ret == 0)
-                                ret = 1;
-                              src += ret;
-                              srclen -= ret;
-                            }
-                        }
-# else
-                        tmpdst =
-                          DCHAR_CONV_FROM_ENCODING (locale_charset (),
-                                                    iconveh_question_mark,
-                                                    tmpsrc, count,
-                                                    NULL,
-                                                    NULL, &tmpdst_len);
-                        if (tmpdst == NULL)
-                          goto fail_with_errno;
-# endif
-                        ENSURE_ALLOCATION_ELSE (xsum (length, tmpdst_len),
-                                                { free (tmpdst); goto 
out_of_memory; });
-                        DCHAR_CPY (result + length, tmpdst, tmpdst_len);
-                        free (tmpdst);
-                        count = tmpdst_len;
-                      }
-                    else
-                      {
-                        /* The result string is ASCII.
-                           Simple 1:1 conversion.  */
-# if USE_SNPRINTF
-                        /* If sizeof (DCHAR_T) == sizeof (TCHAR_T), it's a
-                           no-op conversion, in-place on the array starting
-                           at (result + length).  */
-                        if (sizeof (DCHAR_T) != sizeof (TCHAR_T))
-# endif
-                          {
-                            const TCHAR_T *tmpsrc;
-                            DCHAR_T *tmpdst;
-                            size_t n;
-
-# if USE_SNPRINTF
-                            if (result == resultbuf)
-                              {
-                                tmpsrc = (TCHAR_T *) (result + length);
-                                /* ENSURE_ALLOCATION will not move tmpsrc
-                                   (because it's part of resultbuf).  */
-                                ENSURE_ALLOCATION (xsum (length, count));
-                              }
-                            else
-                              {
-                                /* ENSURE_ALLOCATION will move the array
-                                   (because it uses realloc().  */
-                                ENSURE_ALLOCATION (xsum (length, count));
-                                tmpsrc = (TCHAR_T *) (result + length);
-                              }
-# else
-                            tmpsrc = tmp;
-                            ENSURE_ALLOCATION (xsum (length, count));
-# endif
-                            tmpdst = result + length;
-                            /* Copy backwards, because of overlapping.  */
-                            tmpsrc += count;
-                            tmpdst += count;
-                            for (n = count; n > 0; n--)
-                              *--tmpdst = *--tmpsrc;
-                          }
-                      }
-#endif
-
-#if DCHAR_IS_TCHAR && !USE_SNPRINTF
-                    /* Make room for the result.  */
-                    if (count > allocated - length)
-                      {
-                        /* Need at least count elements.  But allocate
-                           proportionally.  */
-                        size_t n =
-                          xmax (xsum (length, count), xtimes (allocated, 2));
-
-                        ENSURE_ALLOCATION (n);
-                      }
-#endif
-
-                    /* Here count <= allocated - length.  */
-
-                    /* Perform padding.  */
-#if (WIDE_CHAR_VERSION && MUSL_LIBC) || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || 
NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || 
NEED_PRINTF_UNBOUNDED_PRECISION
-                    if (pad_ourselves && has_width)
-                      {
-                        size_t w;
-# if ENABLE_UNISTDIO
-                        /* Outside POSIX, it's preferable to compare the width
-                           against the number of _characters_ of the converted
-                           value.  */
-                        w = DCHAR_MBSNLEN (result + length, count);
-# else
-                        /* The width is compared against the number of _bytes_
-                           of the converted value, says POSIX.  */
-                        w = count;
-# endif
-                        if (w < width)
-                          {
-                            size_t pad = width - w;
-
-                            /* Make room for the result.  */
-                            if (xsum (count, pad) > allocated - length)
-                              {
-                                /* Need at least count + pad elements.  But
-                                   allocate proportionally.  */
-                                size_t n =
-                                  xmax (xsum3 (length, count, pad),
-                                        xtimes (allocated, 2));
-
-# if USE_SNPRINTF
-                                length += count;
-                                ENSURE_ALLOCATION (n);
-                                length -= count;
-# else
-                                ENSURE_ALLOCATION (n);
-# endif
-                              }
-                            /* Here count + pad <= allocated - length.  */
-
-                            {
-# if !DCHAR_IS_TCHAR || USE_SNPRINTF
-                              DCHAR_T * const rp = result + length;
-# else
-                              DCHAR_T * const rp = tmp;
-# endif
-                              DCHAR_T *p = rp + count;
-                              DCHAR_T *end = p + pad;
-                              DCHAR_T *pad_ptr;
-# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
-                              if (dp->conversion == 'c'
-                                  || dp->conversion == 's')
-                                /* No zero-padding for string directives.  */
-                                pad_ptr = NULL;
-                              else
-# endif
-                                {
-                                  pad_ptr = (*rp == '-' ? rp + 1 : rp);
-                                  /* No zero-padding of "inf" and "nan".  */
-                                  if ((*pad_ptr >= 'A' && *pad_ptr <= 'Z')
-                                      || (*pad_ptr >= 'a' && *pad_ptr <= 'z'))
-                                    pad_ptr = NULL;
-                                  else
-                                    /* Do the zero-padding after the "0x" or
-                                       "0b" prefix, not before.  */
-                                    if (p - rp >= 2
-                                        && *rp == '0'
-                                        && (((dp->conversion == 'a'
-                                              || dp->conversion == 'x')
-                                             && rp[1] == 'x')
-                                            || ((dp->conversion == 'A'
-                                                 || dp->conversion == 'X')
-                                                && rp[1] == 'X')
-                                            || (dp->conversion == 'b'
-                                                && rp[1] == 'b')
-                                            || (dp->conversion == 'B'
-                                                && rp[1] == 'B')))
-                                      pad_ptr += 2;
-                                }
-                              /* The generated string now extends from rp to p,
-                                 with the zero padding insertion point being at
-                                 pad_ptr.  */
-
-                              count = count + pad; /* = end - rp */
-
-                              if (flags & FLAG_LEFT)
-                                {
-                                  /* Pad with spaces on the right.  */
-                                  for (; pad > 0; pad--)
-                                    *p++ = ' ';
-                                }
-                              else if ((flags & FLAG_ZERO) && pad_ptr != NULL
-                                       /* ISO C says: "For d, i, o, u, x, and X
-                                          conversions, if a precision is
-                                          specified, the 0 flag is ignored.  */
-                                       && !(has_precision
-                                            && (dp->conversion == 'd'
-                                                || dp->conversion == 'i'
-                                                || dp->conversion == 'o'
-                                                || dp->conversion == 'u'
-                                                || dp->conversion == 'x'
-                                                || dp->conversion == 'X'
-                                                /* Although ISO C does not
-                                                   require it, treat 'b' and 
'B'
-                                                   like 'x' and 'X'.  */
-                                                || dp->conversion == 'b'
-                                                || dp->conversion == 'B')))
-                                {
-                                  /* Pad with zeroes.  */
-                                  DCHAR_T *q = end;
-
-                                  while (p > pad_ptr)
-                                    *--q = *--p;
-                                  for (; pad > 0; pad--)
-                                    *p++ = '0';
-                                }
-                              else
-                                {
-                                  /* Pad with spaces on the left.  */
-                                  DCHAR_T *q = end;
-
-                                  while (p > rp)
-                                    *--q = *--p;
-                                  for (; pad > 0; pad--)
-                                    *p++ = ' ';
-                                }
-                            }
-                          }
-                      }
-#endif
-
-                    /* Here still count <= allocated - length.  */
-
-#if !DCHAR_IS_TCHAR || USE_SNPRINTF
-                    /* The snprintf() result did fit.  */
-#else
-                    /* Append the sprintf() result.  */
-                    memcpy (result + length, tmp, count * sizeof (DCHAR_T));
-#endif
-#if !USE_SNPRINTF
-                    if (tmp != tmpbuf)
-                      free (tmp);
-#endif
-
-#if NEED_PRINTF_DIRECTIVE_F
-                    if (dp->conversion == 'F')
-                      {
-                        /* Convert the %f result to upper case for %F.  */
-                        DCHAR_T *rp = result + length;
-                        size_t rc;
-                        for (rc = count; rc > 0; rc--, rp++)
-                          if (*rp >= 'a' && *rp <= 'z')
-                            *rp = *rp - 'a' + 'A';
-                      }
-#endif
-
-                    length += count;
-                    break;
-                  }
-                errno = orig_errno;
-#undef pad_ourselves
-#undef prec_ourselves
-              }
-          }
-      }
-
-    /* Add the final NUL.  */
-    ENSURE_ALLOCATION (xsum (length, 1));
-    result[length] = '\0';
-
-    if (result != resultbuf && length + 1 < allocated)
-      {
-        /* Shrink the allocated memory if possible.  */
-        DCHAR_T *memory;
-
-        memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T));
-        if (memory != NULL)
-          result = memory;
-      }
-
-    if (buf_malloced != NULL)
-      free (buf_malloced);
-    CLEANUP ();
-    *lengthp = length;
-    /* Note that we can produce a big string of a length > INT_MAX.  POSIX
-       says that snprintf() fails with errno = EOVERFLOW in this case, but
-       that's only because snprintf() returns an 'int'.  This function does
-       not have this limitation.  */
-    return result;
-
-#if USE_SNPRINTF
-  overflow:
-    errno = EOVERFLOW;
-    goto fail_with_errno;
-#endif
-
-  out_of_memory:
-    errno = ENOMEM;
-    goto fail_with_errno;
-
-#if ENABLE_UNISTDIO || ((!USE_SNPRINTF || WIDE_CHAR_VERSION || 
!HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || NEED_PRINTF_DIRECTIVE_LS || 
ENABLE_WCHAR_FALLBACK) && HAVE_WCHAR_T) || ((NEED_PRINTF_DIRECTIVE_LC || 
ENABLE_WCHAR_FALLBACK) && HAVE_WINT_T && !WIDE_CHAR_VERSION) || 
(NEED_WPRINTF_DIRECTIVE_C && WIDE_CHAR_VERSION)
-  fail_with_EILSEQ:
-    errno = EILSEQ;
-    goto fail_with_errno;
-#endif
-
-  fail_with_errno:
-    if (result != resultbuf)
-      free (result);
-    if (buf_malloced != NULL)
-      free (buf_malloced);
-    CLEANUP ();
-    return NULL;
-  }
-
- out_of_memory_1:
-  errno = ENOMEM;
-  goto fail_1_with_errno;
-
- fail_1_with_EINVAL:
-  errno = EINVAL;
-  goto fail_1_with_errno;
-
- fail_1_with_errno:
-  CLEANUP ();
-  return NULL;
-}
-
-#undef MAX_ROOM_NEEDED
-#undef TCHARS_PER_DCHAR
-#undef SNPRINTF
-#undef USE_SNPRINTF
-#undef DCHAR_SET
-#undef DCHAR_CPY
-#undef PRINTF_PARSE
-#undef DIRECTIVES
-#undef DIRECTIVE
-#undef DCHAR_IS_TCHAR
-#undef TCHAR_T
-#undef DCHAR_T
-#undef FCHAR_T
-#undef VASNPRINTF
diff --git a/lib/vasnprintf.h b/lib/vasnprintf.h
deleted file mode 100644
index 2d134070796..00000000000
--- a/lib/vasnprintf.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* vsprintf with automatic memory allocation.
-   Copyright (C) 2002-2004, 2007-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#ifndef _VASNPRINTF_H
-#define _VASNPRINTF_H
-
-/* This file uses _GL_ATTRIBUTE_FORMAT.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-/* Get va_list.  */
-#include <stdarg.h>
-
-/* Get size_t.  */
-#include <stddef.h>
-
-/* Get _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD.  */
-#include <stdio.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Write formatted output to a string dynamically allocated with malloc().
-   You can pass a preallocated buffer for the result in RESULTBUF and its
-   size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
-   If successful, return the address of the string (this may be = RESULTBUF
-   if no dynamic memory allocation was necessary) and set *LENGTHP to the
-   number of resulting bytes, excluding the trailing NUL.  Upon error, set
-   errno and return NULL.
-
-   When dynamic memory allocation occurs, the preallocated buffer is left
-   alone (with possibly modified contents).  This makes it possible to use
-   a statically allocated or stack-allocated buffer, like this:
-
-          char buf[100];
-          size_t len = sizeof (buf);
-          char *output = vasnprintf (buf, &len, format, args);
-          if (output == NULL)
-            ... error handling ...;
-          else
-            {
-              ... use the output string ...;
-              if (output != buf)
-                free (output);
-            }
-  */
-#if REPLACE_VASNPRINTF
-# define asnprintf rpl_asnprintf
-# define vasnprintf rpl_vasnprintf
-#endif
-extern char * asnprintf (char *restrict resultbuf, size_t *lengthp,
-                         const char *format, ...)
-       _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, 3, 4));
-extern char * vasnprintf (char *restrict resultbuf, size_t *lengthp,
-                          const char *format, va_list args)
-       _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, 3, 0));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _VASNPRINTF_H */
diff --git a/lib/vasprintf.c b/lib/vasprintf.c
deleted file mode 100644
index d2878cd91d8..00000000000
--- a/lib/vasprintf.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Formatted output to strings.
-   Copyright (C) 1999, 2002, 2006-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#ifdef IN_LIBASPRINTF
-# include "vasprintf.h"
-#else
-# include <stdio.h>
-#endif
-
-#include <errno.h>
-#include <limits.h>
-#include <stdlib.h>
-
-#include "vasnprintf.h"
-
-int
-vasprintf (char **resultp, const char *format, va_list args)
-{
-  size_t length;
-  char *result = vasnprintf (NULL, &length, format, args);
-  if (result == NULL)
-    return -1;
-
-  if (length > INT_MAX)
-    {
-      free (result);
-      errno = EOVERFLOW;
-      return -1;
-    }
-
-  *resultp = result;
-  /* Return the number of resulting bytes, excluding the trailing NUL.  */
-  return length;
-}
diff --git a/lib/vfprintf.c b/lib/vfprintf.c
deleted file mode 100644
index 01d79a2beca..00000000000
--- a/lib/vfprintf.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Formatted output to a stream.
-   Copyright (C) 2004, 2006-2023 Free Software Foundation, Inc.
-
-   This file 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 3 of the
-   License, or (at your option) any later version.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* Specification.  */
-#include <stdio.h>
-
-#include <errno.h>
-#include <limits.h>
-#include <stdarg.h>
-#include <stdlib.h>
-
-#include "fseterr.h"
-#include "vasnprintf.h"
-
-/* Print formatted output to the stream FP.
-   Return string length of formatted string.  On error, return a negative
-   value.  */
-int
-vfprintf (FILE *fp, const char *format, va_list args)
-{
-  char buf[2000];
-  char *output;
-  size_t len;
-  size_t lenbuf = sizeof (buf);
-
-  output = vasnprintf (buf, &lenbuf, format, args);
-  len = lenbuf;
-
-  if (!output)
-    {
-      fseterr (fp);
-      return -1;
-    }
-
-  if (fwrite (output, 1, len, fp) < len)
-    {
-      if (output != buf)
-        free (output);
-      return -1;
-    }
-
-  if (output != buf)
-    free (output);
-
-  if (len > INT_MAX)
-    {
-      errno = EOVERFLOW;
-      fseterr (fp);
-      return -1;
-    }
-
-  return len;
-}
diff --git a/lib/xsize.c b/lib/xsize.c
deleted file mode 100644
index 279ae824f87..00000000000
--- a/lib/xsize.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Checked size_t computations.
-
-   Copyright (C) 2012-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-#define XSIZE_INLINE _GL_EXTERN_INLINE
-#include "xsize.h"
diff --git a/lib/xsize.h b/lib/xsize.h
deleted file mode 100644
index 5b08d61f2f7..00000000000
--- a/lib/xsize.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* xsize.h -- Checked size_t computations.
-
-   Copyright (C) 2003, 2008-2023 Free Software Foundation, Inc.
-
-   This file 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.
-
-   This file 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 this program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#ifndef _XSIZE_H
-#define _XSIZE_H
-
-/* This file uses _GL_INLINE_HEADER_BEGIN, _GL_INLINE, HAVE_STDINT_H.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-/* Get size_t.  */
-#include <stddef.h>
-
-/* Get SIZE_MAX.  */
-#include <limits.h>
-#if HAVE_STDINT_H
-# include <stdint.h>
-#endif
-
-/* Get ATTRIBUTE_PURE.  */
-#include "attribute.h"
-
-_GL_INLINE_HEADER_BEGIN
-#ifndef XSIZE_INLINE
-# define XSIZE_INLINE _GL_INLINE
-#endif
-
-/* The size of memory objects is often computed through expressions of
-   type size_t. Example:
-      void* p = malloc (header_size + n * element_size).
-   These computations can lead to overflow.  When this happens, malloc()
-   returns a piece of memory that is way too small, and the program then
-   crashes while attempting to fill the memory.
-   To avoid this, the functions and macros in this file check for overflow.
-   The convention is that SIZE_MAX represents overflow.
-   malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc
-   implementation that uses mmap --, it's recommended to use size_overflow_p()
-   or size_in_bounds_p() before invoking malloc().
-   The example thus becomes:
-      size_t size = xsum (header_size, xtimes (n, element_size));
-      void *p = (size_in_bounds_p (size) ? malloc (size) : NULL);
-*/
-
-/* Convert an arbitrary value >= 0 to type size_t.  */
-#define xcast_size_t(N) \
-  ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
-
-/* Sum of two sizes, with overflow check.  */
-XSIZE_INLINE size_t ATTRIBUTE_PURE
-xsum (size_t size1, size_t size2)
-{
-  size_t sum = size1 + size2;
-  return (sum >= size1 ? sum : SIZE_MAX);
-}
-
-/* Sum of three sizes, with overflow check.  */
-XSIZE_INLINE size_t ATTRIBUTE_PURE
-xsum3 (size_t size1, size_t size2, size_t size3)
-{
-  return xsum (xsum (size1, size2), size3);
-}
-
-/* Sum of four sizes, with overflow check.  */
-XSIZE_INLINE size_t ATTRIBUTE_PURE
-xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
-{
-  return xsum (xsum (xsum (size1, size2), size3), size4);
-}
-
-/* Maximum of two sizes, with overflow check.  */
-XSIZE_INLINE size_t ATTRIBUTE_PURE
-xmax (size_t size1, size_t size2)
-{
-  /* No explicit check is needed here, because for any n:
-     max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX.  */
-  return (size1 >= size2 ? size1 : size2);
-}
-
-/* Multiplication of a count with an element size, with overflow check.
-   The count must be >= 0 and the element size must be > 0.
-   This is a macro, not a function, so that it works correctly even
-   when N is of a wider type and N > SIZE_MAX.  */
-#define xtimes(N, ELSIZE) \
-  ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX)
-
-/* Check for overflow.  */
-#define size_overflow_p(SIZE) \
-  ((SIZE) == SIZE_MAX)
-/* Check against overflow.  */
-#define size_in_bounds_p(SIZE) \
-  ((SIZE) != SIZE_MAX)
-
-_GL_INLINE_HEADER_END
-
-#endif /* _XSIZE_H */
diff --git a/m4/asm-underscore.m4 b/m4/asm-underscore.m4
deleted file mode 100644
index 65ae55a75fd..00000000000
--- a/m4/asm-underscore.m4
+++ /dev/null
@@ -1,83 +0,0 @@
-# asm-underscore.m4 serial 5
-dnl Copyright (C) 2010-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible. Based on as-underscore.m4 in GNU clisp.
-
-# gl_ASM_SYMBOL_PREFIX
-# Tests for the prefix of C symbols at the assembly language level and the
-# linker level. This prefix is either an underscore or empty. Defines the
-# C macro USER_LABEL_PREFIX to this prefix, and sets ASM_SYMBOL_PREFIX to
-# a stringified variant of this prefix.
-
-AC_DEFUN([gl_ASM_SYMBOL_PREFIX],
-[
-  AC_REQUIRE([AC_PROG_EGREP])
-  dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because
-  dnl 1. It works only for GCC.
-  dnl 2. It is incorrectly defined on some platforms, in some GCC versions.
-  AC_REQUIRE([gl_C_ASM])
-  AC_CACHE_CHECK(
-    [whether C symbols are prefixed with underscore at the linker level],
-    [gl_cv_prog_as_underscore],
-    [cat > conftest.c <<EOF
-#ifdef __cplusplus
-extern "C" int foo (void);
-#endif
-int foo(void) { return 0; }
-EOF
-     # Look for the assembly language name in the .s file.
-     AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) 
>/dev/null 2>&1
-     if LC_ALL=C $EGREP '(^|[[^a-zA-Z0-9_]])_foo([[^a-zA-Z0-9_]]|$)' 
conftest.$gl_asmext >/dev/null; then
-       gl_cv_prog_as_underscore=yes
-     else
-       gl_cv_prog_as_underscore=no
-     fi
-     rm -f conftest*
-    ])
-  if test $gl_cv_prog_as_underscore = yes; then
-    USER_LABEL_PREFIX=_
-  else
-    USER_LABEL_PREFIX=
-  fi
-  AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX],
-    [Define to the prefix of C symbols at the assembler and linker level,
-     either an underscore or empty.])
-  ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"'
-  AC_SUBST([ASM_SYMBOL_PREFIX])
-])
-
-# gl_C_ASM
-# Determines how to produce an assembly language file from C source code.
-# Sets the variables:
-#   gl_asmext - the extension of assembly language output,
-#   gl_c_asm_opt - the C compiler option that produces assembly language 
output.
-
-AC_DEFUN([gl_C_ASM],
-[
-  AC_EGREP_CPP([MicrosoftCompiler],
-    [
-#ifdef _MSC_VER
-MicrosoftCompiler
-#endif
-    ],
-    [dnl Microsoft's 'cl' and 'clang-cl' produce an .asm file, whereas 'clang'
-     dnl produces a .s file. Need to distinguish 'clang' and 'clang-cl'.
-     rm -f conftest*
-     echo 'int dummy;' > conftest.c
-     AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c) >/dev/null 2>&1
-     if test -f conftest.o; then
-       gl_asmext='s'
-       gl_c_asm_opt='-S'
-     else
-       gl_asmext='asm'
-       gl_c_asm_opt='-c -Fa'
-     fi
-     rm -f conftest*
-    ],
-    [gl_asmext='s'
-     gl_c_asm_opt='-S'
-    ])
-])
diff --git a/m4/exponentd.m4 b/m4/exponentd.m4
deleted file mode 100644
index 163114b89ec..00000000000
--- a/m4/exponentd.m4
+++ /dev/null
@@ -1,116 +0,0 @@
-# exponentd.m4 serial 4
-dnl Copyright (C) 2007-2008, 2010-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-AC_DEFUN_ONCE([gl_DOUBLE_EXPONENT_LOCATION],
-[
-  AC_CACHE_CHECK([where to find the exponent in a 'double'],
-    [gl_cv_cc_double_expbit0],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <float.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#define NWORDS \
-  ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-typedef union { double value; unsigned int word[NWORDS]; } memory_double;
-static unsigned int ored_words[NWORDS];
-static unsigned int anded_words[NWORDS];
-static void add_to_ored_words (double x)
-{
-  memory_double m;
-  size_t i;
-  /* Clear it first, in case sizeof (double) < sizeof (memory_double).  */
-  memset (&m, 0, sizeof (memory_double));
-  m.value = x;
-  for (i = 0; i < NWORDS; i++)
-    {
-      ored_words[i] |= m.word[i];
-      anded_words[i] &= m.word[i];
-    }
-}
-int main ()
-{
-  size_t j;
-  FILE *fp = fopen ("conftest.out", "w");
-  if (fp == NULL)
-    return 1;
-  for (j = 0; j < NWORDS; j++)
-    anded_words[j] = ~ (unsigned int) 0;
-  add_to_ored_words (0.25);
-  add_to_ored_words (0.5);
-  add_to_ored_words (1.0);
-  add_to_ored_words (2.0);
-  add_to_ored_words (4.0);
-  /* Remove bits that are common (e.g. if representation of the first mantissa
-     bit is explicit).  */
-  for (j = 0; j < NWORDS; j++)
-    ored_words[j] &= ~anded_words[j];
-  /* Now find the nonzero word.  */
-  for (j = 0; j < NWORDS; j++)
-    if (ored_words[j] != 0)
-      break;
-  if (j < NWORDS)
-    {
-      size_t i;
-      for (i = j + 1; i < NWORDS; i++)
-        if (ored_words[i] != 0)
-          {
-            fprintf (fp, "unknown");
-            return (fclose (fp) != 0);
-          }
-      for (i = 0; ; i++)
-        if ((ored_words[j] >> i) & 1)
-          {
-            fprintf (fp, "word %d bit %d", (int) j, (int) i);
-            return (fclose (fp) != 0);
-          }
-    }
-  fprintf (fp, "unknown");
-  return (fclose (fp) != 0);
-}
-        ]])],
-        [gl_cv_cc_double_expbit0=`cat conftest.out`],
-        [gl_cv_cc_double_expbit0="unknown"],
-        [
-          dnl On ARM, there are two 'double' floating-point formats, used by
-          dnl different sets of instructions: The older FPA instructions assume
-          dnl that they are stored in big-endian word order, while the words
-          dnl (like integer types) are stored in little-endian byte order.
-          dnl The newer VFP instructions assume little-endian order
-          dnl consistently.
-          AC_EGREP_CPP([mixed_endianness], [
-#if defined arm || defined __arm || defined __arm__
-  mixed_endianness
-#endif
-            ],
-            [gl_cv_cc_double_expbit0="unknown"],
-            [
-              pushdef([AC_MSG_CHECKING],[:])dnl
-              pushdef([AC_MSG_RESULT],[:])dnl
-              pushdef([AC_MSG_RESULT_UNQUOTED],[:])dnl
-              AC_C_BIGENDIAN(
-                [gl_cv_cc_double_expbit0="word 0 bit 20"],
-                [gl_cv_cc_double_expbit0="word 1 bit 20"],
-                [gl_cv_cc_double_expbit0="unknown"])
-              popdef([AC_MSG_RESULT_UNQUOTED])dnl
-              popdef([AC_MSG_RESULT])dnl
-              popdef([AC_MSG_CHECKING])dnl
-            ])
-        ])
-      rm -f conftest.out
-    ])
-  case "$gl_cv_cc_double_expbit0" in
-    word*bit*)
-      word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ 
bit.*//'`
-      bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'`
-      AC_DEFINE_UNQUOTED([DBL_EXPBIT0_WORD], [$word],
-        [Define as the word index where to find the exponent of 'double'.])
-      AC_DEFINE_UNQUOTED([DBL_EXPBIT0_BIT], [$bit],
-        [Define as the bit index in the word where to find bit 0 of the 
exponent of 'double'.])
-      ;;
-  esac
-])
diff --git a/m4/exponentf.m4 b/m4/exponentf.m4
deleted file mode 100644
index e761883939b..00000000000
--- a/m4/exponentf.m4
+++ /dev/null
@@ -1,92 +0,0 @@
-# exponentf.m4 serial 3
-dnl Copyright (C) 2007-2008, 2010-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-AC_DEFUN_ONCE([gl_FLOAT_EXPONENT_LOCATION],
-[
-  AC_CACHE_CHECK([where to find the exponent in a 'float'],
-    [gl_cv_cc_float_expbit0],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <float.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#define NWORDS \
-  ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-typedef union { float value; unsigned int word[NWORDS]; } memory_float;
-static unsigned int ored_words[NWORDS];
-static unsigned int anded_words[NWORDS];
-static void add_to_ored_words (float x)
-{
-  memory_float m;
-  size_t i;
-  /* Clear it first, in case
-     sizeof (float) < sizeof (memory_float).  */
-  memset (&m, 0, sizeof (memory_float));
-  m.value = x;
-  for (i = 0; i < NWORDS; i++)
-    {
-      ored_words[i] |= m.word[i];
-      anded_words[i] &= m.word[i];
-    }
-}
-int main ()
-{
-  size_t j;
-  FILE *fp = fopen ("conftest.out", "w");
-  if (fp == NULL)
-    return 1;
-  for (j = 0; j < NWORDS; j++)
-    anded_words[j] = ~ (unsigned int) 0;
-  add_to_ored_words (0.25f);
-  add_to_ored_words (0.5f);
-  add_to_ored_words (1.0f);
-  add_to_ored_words (2.0f);
-  add_to_ored_words (4.0f);
-  /* Remove bits that are common (e.g. if representation of the first mantissa
-     bit is explicit).  */
-  for (j = 0; j < NWORDS; j++)
-    ored_words[j] &= ~anded_words[j];
-  /* Now find the nonzero word.  */
-  for (j = 0; j < NWORDS; j++)
-    if (ored_words[j] != 0)
-      break;
-  if (j < NWORDS)
-    {
-      size_t i;
-      for (i = j + 1; i < NWORDS; i++)
-        if (ored_words[i] != 0)
-          {
-            fprintf (fp, "unknown");
-            return (fclose (fp) != 0);
-          }
-      for (i = 0; ; i++)
-        if ((ored_words[j] >> i) & 1)
-          {
-            fprintf (fp, "word %d bit %d", (int) j, (int) i);
-            return (fclose (fp) != 0);
-          }
-    }
-  fprintf (fp, "unknown");
-  return (fclose (fp) != 0);
-}
-        ]])],
-        [gl_cv_cc_float_expbit0=`cat conftest.out`],
-        [gl_cv_cc_float_expbit0="unknown"],
-        [gl_cv_cc_float_expbit0="word 0 bit 23"])
-      rm -f conftest.out
-    ])
-  case "$gl_cv_cc_float_expbit0" in
-    word*bit*)
-      word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ 
bit.*//'`
-      bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'`
-      AC_DEFINE_UNQUOTED([FLT_EXPBIT0_WORD], [$word],
-        [Define as the word index where to find the exponent of 'float'.])
-      AC_DEFINE_UNQUOTED([FLT_EXPBIT0_BIT], [$bit],
-        [Define as the bit index in the word where to find bit 0 of the 
exponent of 'float'.])
-      ;;
-  esac
-])
diff --git a/m4/exponentl.m4 b/m4/exponentl.m4
deleted file mode 100644
index bc5638737e5..00000000000
--- a/m4/exponentl.m4
+++ /dev/null
@@ -1,112 +0,0 @@
-# exponentl.m4 serial 6
-dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-AC_DEFUN_ONCE([gl_LONG_DOUBLE_EXPONENT_LOCATION],
-[
-  AC_REQUIRE([gl_BIGENDIAN])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([where to find the exponent in a 'long double'],
-    [gl_cv_cc_long_double_expbit0],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <float.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#define NWORDS \
-  ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-typedef union { long double value; unsigned int word[NWORDS]; }
-        memory_long_double;
-static unsigned int ored_words[NWORDS];
-static unsigned int anded_words[NWORDS];
-static void add_to_ored_words (long double *x)
-{
-  memory_long_double m;
-  size_t i;
-  /* Clear it first, in case
-     sizeof (long double) < sizeof (memory_long_double).  */
-  memset (&m, 0, sizeof (memory_long_double));
-  m.value = *x;
-  for (i = 0; i < NWORDS; i++)
-    {
-      ored_words[i] |= m.word[i];
-      anded_words[i] &= m.word[i];
-    }
-}
-int main ()
-{
-  static long double samples[5] = { 0.25L, 0.5L, 1.0L, 2.0L, 4.0L };
-  size_t j;
-  FILE *fp = fopen ("conftest.out", "w");
-  if (fp == NULL)
-    return 1;
-  for (j = 0; j < NWORDS; j++)
-    anded_words[j] = ~ (unsigned int) 0;
-  for (j = 0; j < 5; j++)
-    add_to_ored_words (&samples[j]);
-  /* Remove bits that are common (e.g. if representation of the first mantissa
-     bit is explicit).  */
-  for (j = 0; j < NWORDS; j++)
-    ored_words[j] &= ~anded_words[j];
-  /* Now find the nonzero word.  */
-  for (j = 0; j < NWORDS; j++)
-    if (ored_words[j] != 0)
-      break;
-  if (j < NWORDS)
-    {
-      size_t i;
-      for (i = j + 1; i < NWORDS; i++)
-        if (ored_words[i] != 0)
-          {
-            fprintf (fp, "unknown");
-            return (fclose (fp) != 0);
-          }
-      for (i = 0; ; i++)
-        if ((ored_words[j] >> i) & 1)
-          {
-            fprintf (fp, "word %d bit %d", (int) j, (int) i);
-            return (fclose (fp) != 0);
-          }
-    }
-  fprintf (fp, "unknown");
-  return (fclose (fp) != 0);
-}
-        ]])],
-        [gl_cv_cc_long_double_expbit0=`cat conftest.out`],
-        [gl_cv_cc_long_double_expbit0="unknown"],
-        [
-          dnl When cross-compiling, in general we don't know. It depends on the
-          dnl ABI and compiler version. There are too many cases.
-          gl_cv_cc_long_double_expbit0="unknown"
-          case "$host_os" in
-            mingw*) # On native Windows (little-endian), we know the result
-                    # in two cases: mingw, MSVC.
-              AC_EGREP_CPP([Known], [
-#ifdef __MINGW32__
- Known
-#endif
-                ], [gl_cv_cc_long_double_expbit0="word 2 bit 0"])
-              AC_EGREP_CPP([Known], [
-#ifdef _MSC_VER
- Known
-#endif
-                ], [gl_cv_cc_long_double_expbit0="word 1 bit 20"])
-              ;;
-          esac
-        ])
-      rm -f conftest.out
-    ])
-  case "$gl_cv_cc_long_double_expbit0" in
-    word*bit*)
-      word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ 
bit.*//'`
-      bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'`
-      AC_DEFINE_UNQUOTED([LDBL_EXPBIT0_WORD], [$word],
-        [Define as the word index where to find the exponent of 'long 
double'.])
-      AC_DEFINE_UNQUOTED([LDBL_EXPBIT0_BIT], [$bit],
-        [Define as the bit index in the word where to find bit 0 of the 
exponent of 'long double'.])
-      ;;
-  esac
-])
diff --git a/m4/float_h.m4 b/m4/float_h.m4
deleted file mode 100644
index 2f0c9c4ee9c..00000000000
--- a/m4/float_h.m4
+++ /dev/null
@@ -1,106 +0,0 @@
-# float_h.m4 serial 13
-dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FLOAT_H],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  GL_GENERATE_FLOAT_H=false
-  REPLACE_FLOAT_LDBL=0
-  case "$host_os" in
-    aix* | beos* | openbsd* | mirbsd* | irix*)
-      GL_GENERATE_FLOAT_H=true
-      ;;
-    freebsd* | dragonfly*)
-      case "$host_cpu" in
-changequote(,)dnl
-        i[34567]86 )
-changequote([,])dnl
-          GL_GENERATE_FLOAT_H=true
-          ;;
-        x86_64 )
-          # On x86_64 systems, the C compiler may still be generating
-          # 32-bit code.
-          AC_COMPILE_IFELSE(
-            [AC_LANG_SOURCE(
-               [[#if defined __LP64__ || defined __x86_64__ || defined 
__amd64__
-                  int ok;
-                 #else
-                  error fail
-                 #endif
-               ]])],
-            [],
-            [GL_GENERATE_FLOAT_H=true])
-          ;;
-      esac
-      ;;
-    linux*)
-      case "$host_cpu" in
-        powerpc*)
-          GL_GENERATE_FLOAT_H=true
-          ;;
-      esac
-      ;;
-  esac
-  case "$host_os" in
-    aix* | freebsd* | dragonfly* | linux*)
-      if $GL_GENERATE_FLOAT_H; then
-        REPLACE_FLOAT_LDBL=1
-      fi
-      ;;
-  esac
-
-  dnl Test against glibc-2.7 Linux/SPARC64 bug.
-  REPLACE_ITOLD=0
-  AC_CACHE_CHECK([whether conversion from 'int' to 'long double' works],
-    [gl_cv_func_itold_works],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-int i = -1;
-volatile long double ld;
-int main ()
-{
-  ld += i * 1.0L;
-  if (ld > 0)
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_itold_works=yes],
-        [gl_cv_func_itold_works=no],
-        [case "$host" in
-           sparc*-*-linux*)
-             AC_COMPILE_IFELSE(
-               [AC_LANG_SOURCE(
-                 [[#if defined __LP64__ || defined __arch64__
-                    int ok;
-                   #else
-                    error fail
-                   #endif
-                 ]])],
-               [gl_cv_func_itold_works="guessing no"],
-               [gl_cv_func_itold_works="guessing yes"])
-             ;;
-                   # Guess yes on native Windows.
-           mingw*) gl_cv_func_itold_works="guessing yes" ;;
-           *)      gl_cv_func_itold_works="guessing yes" ;;
-         esac
-        ])
-    ])
-  case "$gl_cv_func_itold_works" in
-    *no)
-      REPLACE_ITOLD=1
-      dnl We add the workaround to <float.h> but also to <math.h>,
-      dnl to increase the chances that the fix function gets pulled in.
-      GL_GENERATE_FLOAT_H=true
-      ;;
-  esac
-
-  if $GL_GENERATE_FLOAT_H; then
-    gl_NEXT_HEADERS([float.h])
-  fi
-  AC_SUBST([REPLACE_ITOLD])
-])
diff --git a/m4/frexp.m4 b/m4/frexp.m4
deleted file mode 100644
index 0480d98f304..00000000000
--- a/m4/frexp.m4
+++ /dev/null
@@ -1,181 +0,0 @@
-# frexp.m4 serial 16
-dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_FREXP],
-[
-  AC_REQUIRE([gl_MATH_H_DEFAULTS])
-  AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM])
-  FREXP_LIBM=
-  if test $gl_cv_func_frexp_no_libm = no; then
-    AC_CACHE_CHECK([whether frexp() can be used with libm],
-      [gl_cv_func_frexp_in_libm],
-      [
-        save_LIBS="$LIBS"
-        LIBS="$LIBS -lm"
-        AC_LINK_IFELSE(
-          [AC_LANG_PROGRAM(
-             [[#include <math.h>
-               double x;]],
-             [[int e; return frexp (x, &e) > 0;]])],
-          [gl_cv_func_frexp_in_libm=yes],
-          [gl_cv_func_frexp_in_libm=no])
-        LIBS="$save_LIBS"
-      ])
-    if test $gl_cv_func_frexp_in_libm = yes; then
-      FREXP_LIBM=-lm
-    fi
-  fi
-  if test $gl_cv_func_frexp_no_libm = yes \
-     || test $gl_cv_func_frexp_in_libm = yes; then
-    save_LIBS="$LIBS"
-    LIBS="$LIBS $FREXP_LIBM"
-    gl_FUNC_FREXP_WORKS
-    LIBS="$save_LIBS"
-    case "$gl_cv_func_frexp_works" in
-      *yes) gl_func_frexp=yes ;;
-      *)    gl_func_frexp=no; REPLACE_FREXP=1; FREXP_LIBM= ;;
-    esac
-  else
-    gl_func_frexp=no
-  fi
-  if test $gl_func_frexp = yes; then
-    AC_DEFINE([HAVE_FREXP], [1],
-      [Define if the frexp() function is available and works.])
-  fi
-  AC_SUBST([FREXP_LIBM])
-])
-
-AC_DEFUN([gl_FUNC_FREXP_NO_LIBM],
-[
-  AC_REQUIRE([gl_MATH_H_DEFAULTS])
-  AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM])
-  if test $gl_cv_func_frexp_no_libm = yes; then
-    gl_FUNC_FREXP_WORKS
-    case "$gl_cv_func_frexp_works" in
-      *yes) gl_func_frexp_no_libm=yes ;;
-      *)    gl_func_frexp_no_libm=no; REPLACE_FREXP=1 ;;
-    esac
-  else
-    gl_func_frexp_no_libm=no
-    dnl Set REPLACE_FREXP here because the system may have frexp in libm.
-    REPLACE_FREXP=1
-  fi
-  if test $gl_func_frexp_no_libm = yes; then
-    AC_DEFINE([HAVE_FREXP_IN_LIBC], [1],
-      [Define if the frexp() function is available in libc.])
-  fi
-])
-
-dnl Test whether frexp() can be used without linking with libm.
-dnl Set gl_cv_func_frexp_no_libm to 'yes' or 'no' accordingly.
-AC_DEFUN([gl_CHECK_FREXP_NO_LIBM],
-[
-  AC_CACHE_CHECK([whether frexp() can be used without linking with libm],
-    [gl_cv_func_frexp_no_libm],
-    [
-      AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[#include <math.h>
-             double x;]],
-           [[int e; return frexp (x, &e) > 0;]])],
-        [gl_cv_func_frexp_no_libm=yes],
-        [gl_cv_func_frexp_no_libm=no])
-    ])
-])
-
-dnl Test whether frexp() works also on denormalized numbers (this fails e.g. on
-dnl NetBSD 3.0), on infinite numbers (this fails e.g. on IRIX 6.5 and mingw),
-dnl and on negative zero (this fails e.g. on NetBSD 4.99 and mingw).
-AC_DEFUN([gl_FUNC_FREXP_WORKS],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CHECK_DECLS_ONCE([alarm])
-  AC_CACHE_CHECK([whether frexp works], [gl_cv_func_frexp_works],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <float.h>
-#include <math.h>
-#include <string.h>
-#if HAVE_DECL_ALARM
-# include <signal.h>
-# include <unistd.h>
-#endif
-/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
-   ICC 10.0 has a bug when optimizing the expression -zero.
-   The expression -DBL_MIN * DBL_MIN does not work when cross-compiling
-   to PowerPC on Mac OS X 10.5.  */
-#if defined __hpux || defined __sgi || defined __ICC
-static double
-compute_minus_zero (void)
-{
-  return -DBL_MIN * DBL_MIN;
-}
-# define minus_zero compute_minus_zero ()
-#else
-double minus_zero = -0.0;
-#endif
-int main()
-{
-  int result = 0;
-  int i;
-  volatile double x;
-  double zero = 0.0;
-#if HAVE_DECL_ALARM
-  /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite
-     number.  Let the test fail in this case.  */
-  signal (SIGALRM, SIG_DFL);
-  alarm (5);
-#endif
-  /* Test on denormalized numbers.  */
-  for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5)
-    ;
-  if (x > 0.0)
-    {
-      int exp;
-      double y = frexp (x, &exp);
-      /* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022.
-         On NetBSD: y = 0.75. Correct: y = 0.5.  */
-      if (y != 0.5)
-        result |= 1;
-    }
-  /* Test on infinite numbers.  */
-  x = 1.0 / zero;
-  {
-    int exp;
-    double y = frexp (x, &exp);
-    if (y != x)
-      result |= 2;
-  }
-  /* Test on negative zero.  */
-  x = minus_zero;
-  {
-    int exp;
-    double y = frexp (x, &exp);
-    if (memcmp (&y, &x, sizeof x))
-      result |= 4;
-  }
-  return result;
-}]])],
-        [gl_cv_func_frexp_works=yes],
-        [gl_cv_func_frexp_works=no],
-        [case "$host_os" in
-           netbsd* | irix*) gl_cv_func_frexp_works="guessing no" ;;
-           mingw*) # Guess yes with MSVC, no with mingw.
-             AC_EGREP_CPP([Good], [
-#ifdef _MSC_VER
- Good
-#endif
-               ],
-               [gl_cv_func_frexp_works="guessing yes"],
-               [gl_cv_func_frexp_works="guessing no"])
-             ;;
-           *) gl_cv_func_frexp_works="guessing yes" ;;
-         esac
-        ])
-    ])
-])
diff --git a/m4/frexpl.m4 b/m4/frexpl.m4
deleted file mode 100644
index b4cf0ca9ea1..00000000000
--- a/m4/frexpl.m4
+++ /dev/null
@@ -1,233 +0,0 @@
-# frexpl.m4 serial 22
-dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_FREXPL],
-[
-  AC_REQUIRE([gl_MATH_H_DEFAULTS])
-  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
-
-  dnl Persuade glibc <math.h> to declare frexpl().
-  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-
-  dnl Check whether it's declared.
-  dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
-  AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]])
-
-  FREXPL_LIBM=
-  if test $HAVE_DECL_FREXPL = 1; then
-    gl_CHECK_FREXPL_NO_LIBM
-    if test $gl_cv_func_frexpl_no_libm = no; then
-      AC_CACHE_CHECK([whether frexpl() can be used with libm],
-        [gl_cv_func_frexpl_in_libm],
-        [
-          save_LIBS="$LIBS"
-          LIBS="$LIBS -lm"
-          AC_LINK_IFELSE(
-            [AC_LANG_PROGRAM(
-               [[#include <math.h>
-                 long double x;]],
-               [[int e; return frexpl (x, &e) > 0;]])],
-            [gl_cv_func_frexpl_in_libm=yes],
-            [gl_cv_func_frexpl_in_libm=no])
-          LIBS="$save_LIBS"
-        ])
-      if test $gl_cv_func_frexpl_in_libm = yes; then
-        FREXPL_LIBM=-lm
-      fi
-    fi
-    if test $gl_cv_func_frexpl_no_libm = yes \
-       || test $gl_cv_func_frexpl_in_libm = yes; then
-      save_LIBS="$LIBS"
-      LIBS="$LIBS $FREXPL_LIBM"
-      gl_FUNC_FREXPL_WORKS
-      LIBS="$save_LIBS"
-      case "$gl_cv_func_frexpl_works" in
-        *yes) gl_func_frexpl=yes ;;
-        *)    gl_func_frexpl=no; REPLACE_FREXPL=1 ;;
-      esac
-    else
-      gl_func_frexpl=no
-    fi
-    if test $gl_func_frexpl = yes; then
-      AC_DEFINE([HAVE_FREXPL], [1],
-        [Define if the frexpl() function is available.])
-    fi
-  fi
-  if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl = no; then
-    dnl Find libraries needed to link lib/frexpl.c.
-    if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
-      AC_REQUIRE([gl_FUNC_FREXP])
-      FREXPL_LIBM="$FREXP_LIBM"
-    else
-      FREXPL_LIBM=
-    fi
-  fi
-  AC_SUBST([FREXPL_LIBM])
-])
-
-AC_DEFUN([gl_FUNC_FREXPL_NO_LIBM],
-[
-  AC_REQUIRE([gl_MATH_H_DEFAULTS])
-  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
-  dnl Check whether it's declared.
-  dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
-  AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]])
-  if test $HAVE_DECL_FREXPL = 1; then
-    gl_CHECK_FREXPL_NO_LIBM
-    if test $gl_cv_func_frexpl_no_libm = yes; then
-      gl_FUNC_FREXPL_WORKS
-      case "$gl_cv_func_frexpl_works" in
-        *yes) gl_func_frexpl_no_libm=yes ;;
-        *)    gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;;
-      esac
-    else
-      gl_func_frexpl_no_libm=no
-      dnl Set REPLACE_FREXPL here because the system may have frexpl in libm.
-      REPLACE_FREXPL=1
-    fi
-    if test $gl_func_frexpl_no_libm = yes; then
-      AC_DEFINE([HAVE_FREXPL_IN_LIBC], [1],
-        [Define if the frexpl() function is available in libc.])
-    fi
-  fi
-])
-
-dnl Test whether frexpl() can be used without linking with libm.
-dnl Set gl_cv_func_frexpl_no_libm to 'yes' or 'no' accordingly.
-AC_DEFUN([gl_CHECK_FREXPL_NO_LIBM],
-[
-  AC_CACHE_CHECK([whether frexpl() can be used without linking with libm],
-    [gl_cv_func_frexpl_no_libm],
-    [
-      AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[#include <math.h>
-             long double x;]],
-           [[int e; return frexpl (x, &e) > 0;]])],
-        [gl_cv_func_frexpl_no_libm=yes],
-        [gl_cv_func_frexpl_no_libm=no])
-    ])
-])
-
-dnl Test whether frexpl() works on finite numbers (this fails on
-dnl Mac OS X 10.4/PowerPC, on AIX 5.1, and on BeOS), on denormalized numbers
-dnl (this fails on Mac OS X 10.5/i386), and also on infinite numbers (this
-dnl fails e.g. on IRIX 6.5 and mingw).
-AC_DEFUN([gl_FUNC_FREXPL_WORKS],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether frexpl works], [gl_cv_func_frexpl_works],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <float.h>
-#include <math.h>
-/* Override the values of <float.h>, like done in float.in.h.  */
-#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
-# undef LDBL_MIN_EXP
-# define LDBL_MIN_EXP    (-16381)
-#endif
-#if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__)
-# undef LDBL_MIN_EXP
-# define LDBL_MIN_EXP    (-16381)
-#endif
-#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 
106) && defined __GNUC__
-# undef LDBL_MIN_EXP
-# define LDBL_MIN_EXP DBL_MIN_EXP
-#endif
-#if defined __sgi && (LDBL_MANT_DIG >= 106)
-# if defined __GNUC__
-#  undef LDBL_MIN_EXP
-#  define LDBL_MIN_EXP DBL_MIN_EXP
-# endif
-#endif
-extern
-#ifdef __cplusplus
-"C"
-#endif
-long double frexpl (long double, int *);
-long double zero = 0.0L;
-int main()
-{
-  int result = 0;
-  volatile long double x;
-  /* Test on finite numbers that fails on AIX 5.1.  */
-  x = 16.0L;
-  {
-    int exp = -9999;
-    frexpl (x, &exp);
-    if (exp != 5)
-      result |= 1;
-  }
-  /* Test on finite numbers that fails on Mac OS X 10.4, because its frexpl
-     function returns an invalid (incorrectly normalized) value: it returns
-               y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 }
-     but the correct result is
-          0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 }  */
-  x = 1.01L;
-  {
-    int exp = -9999;
-    long double y = frexpl (x, &exp);
-    if (!(exp == 1 && y == 0.505L))
-      result |= 2;
-  }
-  /* Test on large finite numbers.  This fails on BeOS at i = 16322, while
-     LDBL_MAX_EXP = 16384.
-     In the loop end test, we test x against Infinity, rather than comparing
-     i with LDBL_MAX_EXP, because BeOS <float.h> has a wrong LDBL_MAX_EXP.  */
-  {
-    int i;
-    for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L)
-      {
-        int exp = -9999;
-        frexpl (x, &exp);
-        if (exp != i)
-          {
-            result |= 4;
-            break;
-          }
-      }
-  }
-  /* Test on denormalized numbers.  */
-  {
-    int i;
-    for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L)
-      ;
-    if (x > 0.0L)
-      {
-        int exp;
-        long double y = frexpl (x, &exp);
-        /* On machines with IEEE854 arithmetic: x = 1.68105e-4932,
-           exp = -16382, y = 0.5.  On Mac OS X 10.5: exp = -16384, y = 0.5.  */
-        if (exp != LDBL_MIN_EXP - 1)
-          result |= 8;
-      }
-  }
-  /* Test on infinite numbers.  */
-  /* The Microsoft MSVC 14 compiler chokes on the expression 1.0 / 0.0.  */
-  x = 1.0L / zero;
-  {
-    int exp;
-    long double y = frexpl (x, &exp);
-    if (y != x)
-      result |= 16;
-  }
-  return result;
-}]])],
-        [gl_cv_func_frexpl_works=yes],
-        [gl_cv_func_frexpl_works=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-           aix | aix[3-6]* | beos* | darwin* | irix* | mingw* | pw*)
-              gl_cv_func_frexpl_works="guessing no";;
-           *) gl_cv_func_frexpl_works="guessing yes";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
diff --git a/m4/fseterr.m4 b/m4/fseterr.m4
deleted file mode 100644
index 61ac03d49d1..00000000000
--- a/m4/fseterr.m4
+++ /dev/null
@@ -1,13 +0,0 @@
-# fseterr.m4 serial 2
-dnl Copyright (C) 2012-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_FSETERR],
-[
-  gl_CHECK_FUNCS_ANDROID([__fseterr],
-    [[#include <stdio.h>
-      #include <stdio_ext.h>
-    ]])
-])
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index 4c1e41daf51..72adcf90d5e 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -95,15 +95,10 @@ AC_DEFUN([gl_EARLY],
   # Code from module filename:
   # Code from module filevercmp:
   # Code from module flexmember:
-  # Code from module float:
   # Code from module fpending:
   # Code from module fpieee:
   AC_REQUIRE([gl_FP_IEEE])
-  # Code from module fpucw:
   # Code from module free-posix:
-  # Code from module frexp-nolibm:
-  # Code from module frexpl-nolibm:
-  # Code from module fseterr:
   # Code from module fstatat:
   # Code from module fsusage:
   # Code from module fsync:
@@ -130,9 +125,6 @@ AC_DEFUN([gl_EARLY],
   # Code from module include_next:
   # Code from module intprops:
   # Code from module inttypes-incomplete:
-  # Code from module isnand-nolibm:
-  # Code from module isnanf-nolibm:
-  # Code from module isnanl-nolibm:
   # Code from module largefile:
   AC_REQUIRE([AC_SYS_LARGEFILE])
   # Code from module lchmod:
@@ -143,7 +135,6 @@ AC_DEFUN([gl_EARLY],
   # Code from module malloc-gnu:
   # Code from module malloc-posix:
   # Code from module manywarnings:
-  # Code from module math:
   # Code from module memmem-simple:
   # Code from module mempcpy:
   # Code from module memrchr:
@@ -161,10 +152,6 @@ AC_DEFUN([gl_EARLY],
   # Code from module openat-h:
   # Code from module pathmax:
   # Code from module pipe2:
-  # Code from module printf-frexp:
-  # Code from module printf-frexpl:
-  # Code from module printf-posix:
-  # Code from module printf-safe:
   # Code from module pselect:
   # Code from module pthread_sigmask:
   # Code from module qcopy-acl:
@@ -178,8 +165,6 @@ AC_DEFUN([gl_EARLY],
   # Code from module sig2str:
   # Code from module sigdescr_np:
   # Code from module signal-h:
-  # Code from module signbit:
-  # Code from module size_max:
   # Code from module snippet/_Noreturn:
   # Code from module snippet/arg-nonnull:
   # Code from module snippet/c++defs:
@@ -224,15 +209,10 @@ AC_DEFUN([gl_EARLY],
   # Code from module utimens:
   # Code from module utimensat:
   # Code from module vararrays:
-  # Code from module vasnprintf:
-  # Code from module vasprintf:
-  # Code from module vasprintf-posix:
   # Code from module verify:
-  # Code from module vfprintf-posix:
   # Code from module vla:
   # Code from module warnings:
   # Code from module xalloc-oversized:
-  # Code from module xsize:
   # Code from module year2038:
   AC_REQUIRE([AC_SYS_YEAR2038])
 ])
@@ -342,11 +322,6 @@ AC_DEFUN([gl_INIT],
   gl_FILE_HAS_ACL
   gl_FILEMODE
   AC_C_FLEXIBLE_ARRAY_MEMBER
-  gl_FLOAT_H
-  gl_CONDITIONAL_HEADER([float.h])
-  AC_PROG_MKDIR_P
-  gl_CONDITIONAL([GL_COND_OBJ_FLOAT], [test $REPLACE_FLOAT_LDBL = 1])
-  gl_CONDITIONAL([GL_COND_OBJ_ITOLD], [test $REPLACE_ITOLD = 1])
   gl_FUNC_FPENDING
   gl_CONDITIONAL([GL_COND_OBJ_FPENDING], [test $gl_cv_func___fpending = no])
   gl_FUNC_FREE
@@ -355,16 +330,6 @@ AC_DEFUN([gl_INIT],
     gl_PREREQ_FREE
   ])
   gl_STDLIB_MODULE_INDICATOR([free-posix])
-  gl_FUNC_FREXP_NO_LIBM
-  if test $gl_func_frexp_no_libm != yes; then
-    AC_LIBOBJ([frexp])
-  fi
-  gl_MATH_MODULE_INDICATOR([frexp])
-  gl_FUNC_FREXPL_NO_LIBM
-  if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; then
-    AC_LIBOBJ([frexpl])
-  fi
-  gl_MATH_MODULE_INDICATOR([frexpl])
   gl_FUNC_FSTATAT
   gl_CONDITIONAL([GL_COND_OBJ_FSTATAT],
                  [test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1])
@@ -432,16 +397,6 @@ AC_DEFUN([gl_INIT],
   gl_INTTYPES_INCOMPLETE
   gl_INTTYPES_H_REQUIRE_DEFAULTS
   AC_PROG_MKDIR_P
-  gl_FUNC_ISNAND_NO_LIBM
-  if test $gl_func_isnand_no_libm != yes; then
-    AC_LIBOBJ([isnand])
-    gl_PREREQ_ISNAND
-  fi
-  gl_FUNC_ISNANL_NO_LIBM
-  if test $gl_func_isnanl_no_libm != yes; then
-    AC_LIBOBJ([isnanl])
-    gl_PREREQ_ISNANL
-  fi
   AC_REQUIRE([gl_LARGEFILE])
   gl___INLINE
   gl_LIBGMP
@@ -457,9 +412,6 @@ AC_DEFUN([gl_INIT],
     gl_PREREQ_LSTAT
   ])
   gl_SYS_STAT_MODULE_INDICATOR([lstat])
-  gl_MATH_H
-  gl_MATH_H_REQUIRE_DEFAULTS
-  AC_PROG_MKDIR_P
   gl_FUNC_MEMMEM_SIMPLE
   if test $HAVE_MEMMEM = 0 || test $REPLACE_MEMMEM = 1; then
     AC_LIBOBJ([memmem])
@@ -509,11 +461,6 @@ AC_DEFUN([gl_INIT],
   gl_PATHMAX
   gl_FUNC_PIPE2
   gl_UNISTD_MODULE_INDICATOR([pipe2])
-  gl_FUNC_PRINTF_FREXP
-  gl_FUNC_PRINTF_FREXPL
-  gl_FUNC_PRINTF_POSIX
-  gl_STDIO_MODULE_INDICATOR([printf-posix])
-  m4_divert_text([INIT_PREPARE], [gl_printf_safe=yes])
   gl_FUNC_PSELECT
   gl_CONDITIONAL([GL_COND_OBJ_PSELECT],
                  [test $HAVE_PSELECT = 0 || test $REPLACE_PSELECT = 1])
@@ -560,9 +507,6 @@ AC_DEFUN([gl_INIT],
   gl_SIGNAL_H
   gl_SIGNAL_H_REQUIRE_DEFAULTS
   AC_PROG_MKDIR_P
-  gl_SIGNBIT
-  gl_CONDITIONAL([GL_COND_OBJ_SIGNBIT3], [test $REPLACE_SIGNBIT = 1])
-  gl_MATH_MODULE_INDICATOR([signbit])
   gl_TYPE_SOCKLEN_T
   gt_TYPE_SSIZE_T
   gl_STAT_TIME
@@ -709,18 +653,11 @@ AC_DEFUN([gl_INIT],
                  [test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1])
   gl_SYS_STAT_MODULE_INDICATOR([utimensat])
   AC_C_VARARRAYS
-  gl_FUNC_VASPRINTF
-  gl_STDIO_MODULE_INDICATOR([vasprintf])
-  m4_ifdef([AM_XGETTEXT_OPTION],
-    [AM_][XGETTEXT_OPTION([--flag=asprintf:2:c-format])
-     AM_][XGETTEXT_OPTION([--flag=vasprintf:2:c-format])])
-  gl_FUNC_VASPRINTF_POSIX
   gl_gnulib_enabled_260941c0e5dc67ec9e87d1fb321c300b=false
   gl_gnulib_enabled_cloexec=false
   gl_gnulib_enabled_dirfd=false
   gl_gnulib_enabled_925677f0343de64b89a9f0c790b4104c=false
   gl_gnulib_enabled_euidaccess=false
-  gl_gnulib_enabled_fseterr=false
   gl_gnulib_enabled_getdelim=false
   gl_gnulib_enabled_getdtablesize=false
   gl_gnulib_enabled_getgroups=false
@@ -728,7 +665,6 @@ AC_DEFUN([gl_INIT],
   gl_gnulib_enabled_fd38c7e463b54744b77b98aeafb4fa7c=false
   gl_gnulib_enabled_8444034ea779b88768865bb60b4fb8c9=false
   gl_gnulib_enabled_a9786850e999ae65a836a6041e8e5ed1=false
-  gl_gnulib_enabled_3f0e593033d1fc2c127581960f641b66=false
   gl_gnulib_enabled_lchmod=false
   gl_gnulib_enabled_e80bf6f757095d2e5fc94dafb8f8fc8b=false
   gl_gnulib_enabled_ef455225c00f5049c808c2eda3e76866=false
@@ -739,13 +675,9 @@ AC_DEFUN([gl_INIT],
   gl_gnulib_enabled_d3b2383720ee0e541357aa2aac598e2b=false
   gl_gnulib_enabled_61bcaca76b3e6f9ae55d57a1c3193bc4=false
   gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=false
-  gl_gnulib_enabled_size_max=false
   gl_gnulib_enabled_strtoll=false
   gl_gnulib_enabled_utimens=false
-  gl_gnulib_enabled_vasnprintf=false
-  gl_gnulib_enabled_ed5616be3593d355b981ffab56b9f37b=false
   gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec=false
-  gl_gnulib_enabled_xsize=false
   func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b ()
   {
     if $gl_gnulib_enabled_260941c0e5dc67ec9e87d1fb321c300b; then :; else
@@ -798,14 +730,6 @@ AC_DEFUN([gl_INIT],
       func_gl_gnulib_m4code_6099e9737f757db36c47fa9d9f02e88c
     fi
   }
-  func_gl_gnulib_m4code_fseterr ()
-  {
-    if $gl_gnulib_enabled_fseterr; then :; else
-      gl_FUNC_FSETERR
-      gl_CONDITIONAL([GL_COND_OBJ_FSETERR], [test $ac_cv_func___fseterr = no])
-      gl_gnulib_enabled_fseterr=true
-    fi
-  }
   func_gl_gnulib_m4code_getdelim ()
   {
     if $gl_gnulib_enabled_getdelim; then :; else
@@ -887,17 +811,6 @@ AC_DEFUN([gl_INIT],
       fi
     fi
   }
-  func_gl_gnulib_m4code_3f0e593033d1fc2c127581960f641b66 ()
-  {
-    if $gl_gnulib_enabled_3f0e593033d1fc2c127581960f641b66; then :; else
-      gl_FUNC_ISNANF_NO_LIBM
-      if test $gl_func_isnanf_no_libm != yes; then
-        AC_LIBOBJ([isnanf])
-        gl_PREREQ_ISNANF
-      fi
-      gl_gnulib_enabled_3f0e593033d1fc2c127581960f641b66=true
-    fi
-  }
   func_gl_gnulib_m4code_lchmod ()
   {
     if $gl_gnulib_enabled_lchmod; then :; else
@@ -1024,13 +937,6 @@ AC_DEFUN([gl_INIT],
       gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=true
     fi
   }
-  func_gl_gnulib_m4code_size_max ()
-  {
-    if $gl_gnulib_enabled_size_max; then :; else
-      gl_SIZE_MAX
-      gl_gnulib_enabled_size_max=true
-    fi
-  }
   func_gl_gnulib_m4code_strtoll ()
   {
     if $gl_gnulib_enabled_strtoll; then :; else
@@ -1051,44 +957,12 @@ AC_DEFUN([gl_INIT],
       gl_gnulib_enabled_utimens=true
     fi
   }
-  func_gl_gnulib_m4code_vasnprintf ()
-  {
-    if $gl_gnulib_enabled_vasnprintf; then :; else
-      AC_REQUIRE([AC_C_RESTRICT])
-      gl_FUNC_VASNPRINTF
-      gl_gnulib_enabled_vasnprintf=true
-      func_gl_gnulib_m4code_xsize
-    fi
-  }
-  func_gl_gnulib_m4code_ed5616be3593d355b981ffab56b9f37b ()
-  {
-    if $gl_gnulib_enabled_ed5616be3593d355b981ffab56b9f37b; then :; else
-      gl_FUNC_VFPRINTF_POSIX
-      gl_STDIO_MODULE_INDICATOR([vfprintf-posix])
-      gl_MODULE_INDICATOR([vfprintf-posix])
-      gl_gnulib_enabled_ed5616be3593d355b981ffab56b9f37b=true
-      if test $REPLACE_VFPRINTF = 1; then
-        func_gl_gnulib_m4code_fseterr
-      fi
-      if test $REPLACE_VFPRINTF = 1; then
-        func_gl_gnulib_m4code_vasnprintf
-      fi
-    fi
-  }
   func_gl_gnulib_m4code_682e609604ccaac6be382e4ee3a4eaec ()
   {
     if $gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec; then :; else
       gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec=true
     fi
   }
-  func_gl_gnulib_m4code_xsize ()
-  {
-    if $gl_gnulib_enabled_xsize; then :; else
-      gl_XSIZE
-      gl_gnulib_enabled_xsize=true
-      func_gl_gnulib_m4code_size_max
-    fi
-  }
   if test $HAVE_CANONICALIZE_FILE_NAME = 0 || test 
$REPLACE_CANONICALIZE_FILE_NAME = 1; then
     func_gl_gnulib_m4code_925677f0343de64b89a9f0c790b4104c
   fi
@@ -1146,9 +1020,6 @@ AC_DEFUN([gl_INIT],
   if case $host_os in mingw*) false;; *) test $HAVE_GETRANDOM = 0 || test 
$REPLACE_GETRANDOM = 1;; esac; then
     func_gl_gnulib_m4code_open
   fi
-  if test $REPLACE_PRINTF = 1; then
-    func_gl_gnulib_m4code_ed5616be3593d355b981ffab56b9f37b
-  fi
   if test $HAVE_READLINKAT = 0 || test $REPLACE_READLINKAT = 1; then
     func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b
   fi
@@ -1158,9 +1029,6 @@ AC_DEFUN([gl_INIT],
   if test $ac_use_included_regex = yes; then
     func_gl_gnulib_m4code_fd38c7e463b54744b77b98aeafb4fa7c
   fi
-  if test $REPLACE_SIGNBIT = 1; then
-    func_gl_gnulib_m4code_3f0e593033d1fc2c127581960f641b66
-  fi
   if { test $HAVE_DECL_STRTOIMAX = 0 || test $REPLACE_STRTOIMAX = 1; } && test 
$ac_cv_type_long_long_int = yes; then
     func_gl_gnulib_m4code_strtoll
   fi
@@ -1176,19 +1044,12 @@ AC_DEFUN([gl_INIT],
   if test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1; then
     func_gl_gnulib_m4code_utimens
   fi
-  if test $HAVE_VASPRINTF = 0 || test $REPLACE_VASPRINTF = 1; then
-    func_gl_gnulib_m4code_vasnprintf
-  fi
-  if test $HAVE_VASPRINTF = 0 || test $REPLACE_VASPRINTF = 1; then
-    func_gl_gnulib_m4code_vasnprintf
-  fi
   m4_pattern_allow([^gl_GNULIB_ENABLED_])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_260941c0e5dc67ec9e87d1fb321c300b], 
[$gl_gnulib_enabled_260941c0e5dc67ec9e87d1fb321c300b])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_cloexec], [$gl_gnulib_enabled_cloexec])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_dirfd], [$gl_gnulib_enabled_dirfd])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_925677f0343de64b89a9f0c790b4104c], 
[$gl_gnulib_enabled_925677f0343de64b89a9f0c790b4104c])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_euidaccess], 
[$gl_gnulib_enabled_euidaccess])
-  AM_CONDITIONAL([gl_GNULIB_ENABLED_fseterr], [$gl_gnulib_enabled_fseterr])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_getdelim], [$gl_gnulib_enabled_getdelim])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_getdtablesize], 
[$gl_gnulib_enabled_getdtablesize])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_getgroups], [$gl_gnulib_enabled_getgroups])
@@ -1196,7 +1057,6 @@ AC_DEFUN([gl_INIT],
   AM_CONDITIONAL([gl_GNULIB_ENABLED_fd38c7e463b54744b77b98aeafb4fa7c], 
[$gl_gnulib_enabled_fd38c7e463b54744b77b98aeafb4fa7c])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_8444034ea779b88768865bb60b4fb8c9], 
[$gl_gnulib_enabled_8444034ea779b88768865bb60b4fb8c9])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_a9786850e999ae65a836a6041e8e5ed1], 
[$gl_gnulib_enabled_a9786850e999ae65a836a6041e8e5ed1])
-  AM_CONDITIONAL([gl_GNULIB_ENABLED_3f0e593033d1fc2c127581960f641b66], 
[$gl_gnulib_enabled_3f0e593033d1fc2c127581960f641b66])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_lchmod], [$gl_gnulib_enabled_lchmod])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_e80bf6f757095d2e5fc94dafb8f8fc8b], 
[$gl_gnulib_enabled_e80bf6f757095d2e5fc94dafb8f8fc8b])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_ef455225c00f5049c808c2eda3e76866], 
[$gl_gnulib_enabled_ef455225c00f5049c808c2eda3e76866])
@@ -1207,13 +1067,9 @@ AC_DEFUN([gl_INIT],
   AM_CONDITIONAL([gl_GNULIB_ENABLED_d3b2383720ee0e541357aa2aac598e2b], 
[$gl_gnulib_enabled_d3b2383720ee0e541357aa2aac598e2b])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_61bcaca76b3e6f9ae55d57a1c3193bc4], 
[$gl_gnulib_enabled_61bcaca76b3e6f9ae55d57a1c3193bc4])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c], 
[$gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c])
-  AM_CONDITIONAL([gl_GNULIB_ENABLED_size_max], [$gl_gnulib_enabled_size_max])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoll], [$gl_gnulib_enabled_strtoll])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_utimens], [$gl_gnulib_enabled_utimens])
-  AM_CONDITIONAL([gl_GNULIB_ENABLED_vasnprintf], 
[$gl_gnulib_enabled_vasnprintf])
-  AM_CONDITIONAL([gl_GNULIB_ENABLED_ed5616be3593d355b981ffab56b9f37b], 
[$gl_gnulib_enabled_ed5616be3593d355b981ffab56b9f37b])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec], 
[$gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec])
-  AM_CONDITIONAL([gl_GNULIB_ENABLED_xsize], [$gl_gnulib_enabled_xsize])
   # End of code from modules
   m4_ifval(gl_LIBSOURCES_LIST, [
     m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
@@ -1399,8 +1255,6 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/allocator.c
   lib/allocator.h
   lib/arg-nonnull.h
-  lib/asnprintf.c
-  lib/asprintf.c
   lib/assert.in.h
   lib/at-func.c
   lib/attribute.h
@@ -1453,17 +1307,9 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/filevercmp.c
   lib/filevercmp.h
   lib/flexmember.h
-  lib/float+.h
-  lib/float.c
-  lib/float.in.h
   lib/fpending.c
   lib/fpending.h
-  lib/fpucw.h
   lib/free.c
-  lib/frexp.c
-  lib/frexpl.c
-  lib/fseterr.c
-  lib/fseterr.h
   lib/fstatat.c
   lib/fsusage.c
   lib/fsusage.h
@@ -1498,14 +1344,6 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/intprops-internal.h
   lib/intprops.h
   lib/inttypes.in.h
-  lib/isnan.c
-  lib/isnand-nolibm.h
-  lib/isnand.c
-  lib/isnanf-nolibm.h
-  lib/isnanf.c
-  lib/isnanl-nolibm.h
-  lib/isnanl.c
-  lib/itold.c
   lib/lchmod.c
   lib/libc-config.h
   lib/limits.in.h
@@ -1522,8 +1360,6 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/malloc/scratch_buffer_grow.c
   lib/malloc/scratch_buffer_grow_preserve.c
   lib/malloc/scratch_buffer_set_array_size.c
-  lib/math.c
-  lib/math.in.h
   lib/md5-stream.c
   lib/md5.c
   lib/md5.h
@@ -1548,15 +1384,6 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/openat.h
   lib/pathmax.h
   lib/pipe2.c
-  lib/printf-args.c
-  lib/printf-args.h
-  lib/printf-frexp.c
-  lib/printf-frexp.h
-  lib/printf-frexpl.c
-  lib/printf-frexpl.h
-  lib/printf-parse.c
-  lib/printf-parse.h
-  lib/printf.c
   lib/pselect.c
   lib/pthread_sigmask.c
   lib/qcopy-acl.c
@@ -1584,10 +1411,6 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/sig2str.h
   lib/sigdescr_np.c
   lib/signal.in.h
-  lib/signbitd.c
-  lib/signbitf.c
-  lib/signbitl.c
-  lib/size_max.h
   lib/stat-time.c
   lib/stat-time.h
   lib/stdckdint.in.h
@@ -1632,22 +1455,15 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/utimens.c
   lib/utimens.h
   lib/utimensat.c
-  lib/vasnprintf.c
-  lib/vasnprintf.h
-  lib/vasprintf.c
   lib/verify.h
-  lib/vfprintf.c
   lib/vla.h
   lib/warn-on-use.h
   lib/xalloc-oversized.h
-  lib/xsize.c
-  lib/xsize.h
   m4/00gnulib.m4
   m4/__inline.m4
   m4/absolute-header.m4
   m4/acl.m4
   m4/alloca.m4
-  m4/asm-underscore.m4
   m4/assert_h.m4
   m4/builtin-expect.m4
   m4/byteswap.m4
@@ -1666,9 +1482,6 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/errno_h.m4
   m4/euidaccess.m4
   m4/execinfo.m4
-  m4/exponentd.m4
-  m4/exponentf.m4
-  m4/exponentl.m4
   m4/extensions.m4
   m4/extern-inline.m4
   m4/faccessat.m4
@@ -1679,13 +1492,9 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/fdopendir.m4
   m4/filemode.m4
   m4/flexmember.m4
-  m4/float_h.m4
   m4/fpending.m4
   m4/fpieee.m4
   m4/free.m4
-  m4/frexp.m4
-  m4/frexpl.m4
-  m4/fseterr.m4
   m4/fstatat.m4
   m4/fsusage.m4
   m4/fsync.m4
@@ -1704,15 +1513,9 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/group-member.m4
   m4/ieee754-h.m4
   m4/include_next.m4
-  m4/intmax_t.m4
   m4/inttypes.m4
-  m4/inttypes_h.m4
-  m4/isnand.m4
-  m4/isnanf.m4
-  m4/isnanl.m4
   m4/largefile.m4
   m4/lchmod.m4
-  m4/ldexpl.m4
   m4/libgmp.m4
   m4/limits-h.m4
   m4/locale-fr.m4
@@ -1720,7 +1523,6 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/malloc.m4
   m4/manywarnings-c++.m4
   m4/manywarnings.m4
-  m4/math_h.m4
   m4/mbstate_t.m4
   m4/md5.m4
   m4/memmem.m4
@@ -1744,10 +1546,6 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/pathmax.m4
   m4/pid_t.m4
   m4/pipe2.m4
-  m4/printf-frexp.m4
-  m4/printf-frexpl.m4
-  m4/printf-posix.m4
-  m4/printf.m4
   m4/pselect.m4
   m4/pthread_sigmask.m4
   m4/rawmemchr.m4
@@ -1761,8 +1559,6 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/sig2str.m4
   m4/sigdescr_np.m4
   m4/signal_h.m4
-  m4/signbit.m4
-  m4/size_max.m4
   m4/socklen.m4
   m4/ssize_t.m4
   m4/stat-time.m4
@@ -1770,7 +1566,6 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/stdalign.m4
   m4/stddef_h.m4
   m4/stdint.m4
-  m4/stdint_h.m4
   m4/stdio_h.m4
   m4/stdlib_h.m4
   m4/stpcpy.m4
@@ -1800,15 +1595,10 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/utimensat.m4
   m4/utimes.m4
   m4/vararrays.m4
-  m4/vasnprintf.m4
-  m4/vasprintf-posix.m4
-  m4/vasprintf.m4
-  m4/vfprintf-posix.m4
   m4/warn-on-use.m4
   m4/warnings.m4
   m4/wchar_t.m4
   m4/wint_t.m4
   m4/xattr.m4
-  m4/xsize.m4
   m4/zzgnulib.m4
 ])
diff --git a/m4/intmax_t.m4 b/m4/intmax_t.m4
deleted file mode 100644
index ef32e1b9ca9..00000000000
--- a/m4/intmax_t.m4
+++ /dev/null
@@ -1,59 +0,0 @@
-# intmax_t.m4 serial 9
-dnl Copyright (C) 1997-2004, 2006-2007, 2009-2023 Free Software Foundation,
-dnl Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Paul Eggert.
-
-AC_PREREQ([2.53])
-
-# Define intmax_t to 'long' or 'long long'
-# if it is not already defined in <stdint.h> or <inttypes.h>.
-
-AC_DEFUN([gl_AC_TYPE_INTMAX_T],
-[
-  dnl For simplicity, we assume that a header file defines 'intmax_t' if and
-  dnl only if it defines 'uintmax_t'.
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; 
then
-    AC_DEFINE_UNQUOTED([intmax_t], [long long],
-     [Define to long or long long if <inttypes.h> and <stdint.h> don't 
define.])
-  else
-    AC_DEFINE([HAVE_INTMAX_T], [1],
-      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
-  fi
-])
-
-dnl An alternative would be to explicitly test for 'intmax_t'.
-
-AC_DEFUN([gt_AC_TYPE_INTMAX_T],
-[
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[
-#include <stddef.h>
-#include <stdlib.h>
-#if HAVE_STDINT_H_WITH_UINTMAX
-#include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-#include <inttypes.h>
-#endif
-          ]],
-          [[intmax_t x = -1; return !x;]])],
-       [gt_cv_c_intmax_t=yes],
-       [gt_cv_c_intmax_t=no])])
-  if test $gt_cv_c_intmax_t = yes; then
-    AC_DEFINE([HAVE_INTMAX_T], [1],
-      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
-  else
-    AC_DEFINE_UNQUOTED([intmax_t], [long long],
-     [Define to long or long long if <stdint.h> and <inttypes.h> don't 
define.])
-  fi
-])
diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4
deleted file mode 100644
index 68c60e9dbb6..00000000000
--- a/m4/inttypes_h.m4
+++ /dev/null
@@ -1,29 +0,0 @@
-# inttypes_h.m4 serial 10
-dnl Copyright (C) 1997-2004, 2006, 2008-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Paul Eggert.
-
-# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
-# doesn't clash with <sys/types.h>, and declares uintmax_t.
-
-AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
-[
-  AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[
-#include <sys/types.h>
-#include <inttypes.h>
-          ]],
-          [[uintmax_t i = (uintmax_t) -1; return !i;]])],
-       [gl_cv_header_inttypes_h=yes],
-       [gl_cv_header_inttypes_h=no])])
-  if test $gl_cv_header_inttypes_h = yes; then
-    AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
-      [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
-       and declares uintmax_t. ])
-  fi
-])
diff --git a/m4/isnand.m4 b/m4/isnand.m4
deleted file mode 100644
index 95346f420b7..00000000000
--- a/m4/isnand.m4
+++ /dev/null
@@ -1,96 +0,0 @@
-# isnand.m4 serial 12
-dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl Check how to get or define isnand().
-
-AC_DEFUN([gl_FUNC_ISNAND],
-[
-  AC_REQUIRE([gl_MATH_H_DEFAULTS])
-  ISNAND_LIBM=
-  gl_HAVE_ISNAND_NO_LIBM
-  if test $gl_cv_func_isnand_no_libm = no; then
-    gl_HAVE_ISNAND_IN_LIBM
-    if test $gl_cv_func_isnand_in_libm = yes; then
-      ISNAND_LIBM=-lm
-    fi
-  fi
-  dnl The variable gl_func_isnand set here is used by isnan.m4.
-  if test $gl_cv_func_isnand_no_libm = yes \
-     || test $gl_cv_func_isnand_in_libm = yes; then
-    gl_func_isnand=yes
-  else
-    gl_func_isnand=no
-    HAVE_ISNAND=0
-  fi
-  AC_SUBST([ISNAND_LIBM])
-])
-
-dnl Check how to get or define isnand() without linking with libm.
-
-AC_DEFUN([gl_FUNC_ISNAND_NO_LIBM],
-[
-  gl_HAVE_ISNAND_NO_LIBM
-  gl_func_isnand_no_libm=$gl_cv_func_isnand_no_libm
-  if test $gl_cv_func_isnand_no_libm = yes; then
-    AC_DEFINE([HAVE_ISNAND_IN_LIBC], [1],
-      [Define if the isnan(double) function is available in libc.])
-  fi
-])
-
-dnl Prerequisites of replacement isnand definition. It does not need -lm.
-AC_DEFUN([gl_PREREQ_ISNAND],
-[
-  AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
-])
-
-dnl Test whether isnand() can be used with libm.
-
-AC_DEFUN([gl_HAVE_ISNAND_IN_LIBM],
-[
-  AC_CACHE_CHECK([whether isnan(double) can be used with libm],
-    [gl_cv_func_isnand_in_libm],
-    [
-      save_LIBS="$LIBS"
-      LIBS="$LIBS -lm"
-      AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[#include <math.h>
-             #if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-             # undef isnand
-             # define isnand(x) __builtin_isnan ((double)(x))
-             #elif defined isnan
-             # undef isnand
-             # define isnand(x) isnan ((double)(x))
-             #endif
-             double x;]],
-           [[return isnand (x);]])],
-        [gl_cv_func_isnand_in_libm=yes],
-        [gl_cv_func_isnand_in_libm=no])
-      LIBS="$save_LIBS"
-    ])
-])
-
-AC_DEFUN([gl_HAVE_ISNAND_NO_LIBM],
-[
-  AC_CACHE_CHECK([whether isnan(double) can be used without linking with libm],
-    [gl_cv_func_isnand_no_libm],
-    [
-      AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[#include <math.h>
-             #if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-             # undef isnand
-             # define isnand(x) __builtin_isnan ((double)(x))
-             #else
-             # undef isnand
-             # define isnand(x) isnan ((double)(x))
-             #endif
-             double x;]],
-           [[return isnand (x);]])],
-        [gl_cv_func_isnand_no_libm=yes],
-        [gl_cv_func_isnand_no_libm=no])
-    ])
-])
diff --git a/m4/isnanf.m4 b/m4/isnanf.m4
deleted file mode 100644
index 01f7bbd20d8..00000000000
--- a/m4/isnanf.m4
+++ /dev/null
@@ -1,197 +0,0 @@
-# isnanf.m4 serial 18
-dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl Check how to get or define isnanf().
-
-AC_DEFUN([gl_FUNC_ISNANF],
-[
-  AC_REQUIRE([gl_MATH_H_DEFAULTS])
-  ISNANF_LIBM=
-  gl_HAVE_ISNANF_NO_LIBM
-  if test $gl_cv_func_isnanf_no_libm = no; then
-    gl_HAVE_ISNANF_IN_LIBM
-    if test $gl_cv_func_isnanf_in_libm = yes; then
-      ISNANF_LIBM=-lm
-    fi
-  fi
-  dnl The variable gl_func_isnanf set here is used by isnan.m4.
-  if test $gl_cv_func_isnanf_no_libm = yes \
-     || test $gl_cv_func_isnanf_in_libm = yes; then
-    save_LIBS="$LIBS"
-    LIBS="$LIBS $ISNANF_LIBM"
-    gl_ISNANF_WORKS
-    LIBS="$save_LIBS"
-    case "$gl_cv_func_isnanf_works" in
-      *yes) gl_func_isnanf=yes ;;
-      *)    gl_func_isnanf=no; ISNANF_LIBM= ;;
-    esac
-  else
-    gl_func_isnanf=no
-  fi
-  if test $gl_func_isnanf != yes; then
-    HAVE_ISNANF=0
-  fi
-  AC_SUBST([ISNANF_LIBM])
-])
-
-dnl Check how to get or define isnanf() without linking with libm.
-
-AC_DEFUN([gl_FUNC_ISNANF_NO_LIBM],
-[
-  gl_HAVE_ISNANF_NO_LIBM
-  if test $gl_cv_func_isnanf_no_libm = yes; then
-    gl_ISNANF_WORKS
-  fi
-  if test $gl_cv_func_isnanf_no_libm = yes \
-     && { case "$gl_cv_func_isnanf_works" in
-            *yes) true;;
-            *) false;;
-          esac
-        }; then
-    gl_func_isnanf_no_libm=yes
-    AC_DEFINE([HAVE_ISNANF_IN_LIBC], [1],
-      [Define if the isnan(float) function is available in libc.])
-  else
-    gl_func_isnanf_no_libm=no
-  fi
-])
-
-dnl Prerequisites of replacement isnanf definition. It does not need -lm.
-AC_DEFUN([gl_PREREQ_ISNANF],
-[
-  gl_FLOAT_EXPONENT_LOCATION
-])
-
-dnl Test whether isnanf() can be used without libm.
-AC_DEFUN([gl_HAVE_ISNANF_NO_LIBM],
-[
-  AC_CACHE_CHECK([whether isnan(float) can be used without linking with libm],
-    [gl_cv_func_isnanf_no_libm],
-    [
-      AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[#include <math.h>
-             #if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-             # undef isnanf
-             # define isnanf(x) __builtin_isnan ((float)(x))
-             #elif defined isnan
-             # undef isnanf
-             # define isnanf(x) isnan ((float)(x))
-             #endif
-             float x;]],
-           [[return isnanf (x);]])],
-        [gl_cv_func_isnanf_no_libm=yes],
-        [gl_cv_func_isnanf_no_libm=no])
-    ])
-])
-
-dnl Test whether isnanf() can be used with libm.
-AC_DEFUN([gl_HAVE_ISNANF_IN_LIBM],
-[
-  AC_CACHE_CHECK([whether isnan(float) can be used with libm],
-    [gl_cv_func_isnanf_in_libm],
-    [
-      save_LIBS="$LIBS"
-      LIBS="$LIBS -lm"
-      AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[#include <math.h>
-             #if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-             # undef isnanf
-             # define isnanf(x) __builtin_isnan ((float)(x))
-             #elif defined isnan
-             # undef isnanf
-             # define isnanf(x) isnan ((float)(x))
-             #endif
-             float x;]],
-           [[return isnanf (x);]])],
-        [gl_cv_func_isnanf_in_libm=yes],
-        [gl_cv_func_isnanf_in_libm=no])
-      LIBS="$save_LIBS"
-    ])
-])
-
-dnl Test whether isnanf() rejects Infinity (this fails on Solaris 2.5.1),
-dnl recognizes a NaN (this fails on IRIX 6.5 with cc), and recognizes a NaN
-dnl with in-memory representation 0x7fbfffff (this fails on IRIX 6.5).
-AC_DEFUN([gl_ISNANF_WORKS],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_REQUIRE([gl_FLOAT_EXPONENT_LOCATION])
-  AC_CACHE_CHECK([whether isnan(float) works], [gl_cv_func_isnanf_works],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <math.h>
-#if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-# undef isnanf
-# define isnanf(x) __builtin_isnan ((float)(x))
-#elif defined isnan
-# undef isnanf
-# define isnanf(x) isnan ((float)(x))
-#endif
-/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0.  */
-#ifdef __DECC
-static float
-NaN ()
-{
-  static float zero = 0.0f;
-  return zero / zero;
-}
-#else
-# define NaN() (0.0f / 0.0f)
-#endif
-#define NWORDS \
-  ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-typedef union { unsigned int word[NWORDS]; float value; } memory_float;
-int main()
-{
-  int result = 0;
-
-  if (isnanf (1.0f / 0.0f))
-    result |= 1;
-
-  if (!isnanf (NaN ()))
-    result |= 2;
-
-#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
-  /* The isnanf function should be immune against changes in the sign bit and
-     in the mantissa bits.  The xor operation twiddles a bit that can only be
-     a sign bit or a mantissa bit.  */
-  if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0)
-    {
-      memory_float m;
-
-      m.value = NaN ();
-      /* Set the bits below the exponent to 01111...111.  */
-      m.word[0] &= -1U << FLT_EXPBIT0_BIT;
-      m.word[0] |= (1U << (FLT_EXPBIT0_BIT - 1)) - 1;
-      if (!isnanf (m.value))
-        result |= 4;
-    }
-#endif
-
-  return result;
-}]])],
-        [gl_cv_func_isnanf_works=yes],
-        [gl_cv_func_isnanf_works=no],
-        [case "$host_os" in
-           irix* | solaris*) gl_cv_func_isnanf_works="guessing no" ;;
-           mingw*) # Guess yes on mingw, no on MSVC.
-             AC_EGREP_CPP([Known], [
-#ifdef __MINGW32__
- Known
-#endif
-               ],
-               [gl_cv_func_isnanf_works="guessing yes"],
-               [gl_cv_func_isnanf_works="guessing no"])
-             ;;
-           *) gl_cv_func_isnanf_works="guessing yes" ;;
-         esac
-        ])
-    ])
-])
diff --git a/m4/isnanl.m4 b/m4/isnanl.m4
deleted file mode 100644
index bb39d02558f..00000000000
--- a/m4/isnanl.m4
+++ /dev/null
@@ -1,248 +0,0 @@
-# isnanl.m4 serial 22
-dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_ISNANL],
-[
-  AC_REQUIRE([gl_MATH_H_DEFAULTS])
-  ISNANL_LIBM=
-  gl_HAVE_ISNANL_NO_LIBM
-  if test $gl_cv_func_isnanl_no_libm = no; then
-    gl_HAVE_ISNANL_IN_LIBM
-    if test $gl_cv_func_isnanl_in_libm = yes; then
-      ISNANL_LIBM=-lm
-    fi
-  fi
-  dnl The variable gl_func_isnanl set here is used by isnan.m4.
-  if test $gl_cv_func_isnanl_no_libm = yes \
-     || test $gl_cv_func_isnanl_in_libm = yes; then
-    save_LIBS="$LIBS"
-    LIBS="$LIBS $ISNANL_LIBM"
-    gl_FUNC_ISNANL_WORKS
-    LIBS="$save_LIBS"
-    case "$gl_cv_func_isnanl_works" in
-      *yes) gl_func_isnanl=yes ;;
-      *)    gl_func_isnanl=no; ISNANL_LIBM= ;;
-    esac
-  else
-    gl_func_isnanl=no
-  fi
-  if test $gl_func_isnanl != yes; then
-    HAVE_ISNANL=0
-  fi
-  AC_SUBST([ISNANL_LIBM])
-])
-
-AC_DEFUN([gl_FUNC_ISNANL_NO_LIBM],
-[
-  gl_HAVE_ISNANL_NO_LIBM
-  gl_func_isnanl_no_libm=$gl_cv_func_isnanl_no_libm
-  if test $gl_func_isnanl_no_libm = yes; then
-    gl_FUNC_ISNANL_WORKS
-    case "$gl_cv_func_isnanl_works" in
-      *yes) ;;
-      *)    gl_func_isnanl_no_libm=no ;;
-    esac
-  fi
-  if test $gl_func_isnanl_no_libm = yes; then
-    AC_DEFINE([HAVE_ISNANL_IN_LIBC], [1],
-      [Define if the isnan(long double) function is available in libc.])
-  fi
-])
-
-dnl Prerequisites of replacement isnanl definition. It does not need -lm.
-AC_DEFUN([gl_PREREQ_ISNANL],
-[
-  gl_LONG_DOUBLE_EXPONENT_LOCATION
-  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
-])
-
-dnl Test whether isnanl() can be used without libm.
-AC_DEFUN([gl_HAVE_ISNANL_NO_LIBM],
-[
-  AC_CACHE_CHECK([whether isnan(long double) can be used without linking with 
libm],
-    [gl_cv_func_isnanl_no_libm],
-    [
-      AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[#include <math.h>
-             #if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-             # undef isnanl
-             # define isnanl(x) __builtin_isnan ((long double)(x))
-             #elif defined isnan
-             # undef isnanl
-             # define isnanl(x) isnan ((long double)(x))
-             #endif
-             long double x;]],
-           [[return isnanl (x);]])],
-        [gl_cv_func_isnanl_no_libm=yes],
-        [gl_cv_func_isnanl_no_libm=no])
-    ])
-])
-
-dnl Test whether isnanl() can be used with libm.
-AC_DEFUN([gl_HAVE_ISNANL_IN_LIBM],
-[
-  AC_CACHE_CHECK([whether isnan(long double) can be used with libm],
-    [gl_cv_func_isnanl_in_libm],
-    [
-      save_LIBS="$LIBS"
-      LIBS="$LIBS -lm"
-      AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[#include <math.h>
-             #if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-             # undef isnanl
-             # define isnanl(x) __builtin_isnan ((long double)(x))
-             #elif defined isnan
-             # undef isnanl
-             # define isnanl(x) isnan ((long double)(x))
-             #endif
-             long double x;]],
-           [[return isnanl (x);]])],
-        [gl_cv_func_isnanl_in_libm=yes],
-        [gl_cv_func_isnanl_in_libm=no])
-      LIBS="$save_LIBS"
-    ])
-])
-
-dnl Test whether isnanl() recognizes all canonical numbers which are neither
-dnl finite nor infinite.
-AC_DEFUN([gl_FUNC_ISNANL_WORKS],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gl_BIGENDIAN])
-  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether isnanl works], [gl_cv_func_isnanl_works],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <float.h>
-#include <limits.h>
-#include <math.h>
-#if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-# undef isnanl
-# define isnanl(x) __builtin_isnan ((long double)(x))
-#elif defined isnan
-# undef isnanl
-# define isnanl(x) isnan ((long double)(x))
-#endif
-#define NWORDS \
-  ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-typedef union { unsigned int word[NWORDS]; long double value; }
-        memory_long_double;
-/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the
-   runtime type conversion.  */
-#ifdef __sgi
-static long double NaNl ()
-{
-  double zero = 0.0;
-  return zero / zero;
-}
-#else
-# define NaNl() (0.0L / 0.0L)
-#endif
-int main ()
-{
-  int result = 0;
-
-  if (!isnanl (NaNl ()))
-    result |= 1;
-
-  {
-    memory_long_double m;
-    unsigned int i;
-
-    /* The isnanl function should be immune against changes in the sign bit and
-       in the mantissa bits.  The xor operation twiddles a bit that can only be
-       a sign bit or a mantissa bit (since the exponent never extends to
-       bit 31).  */
-    m.value = NaNl ();
-    m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * 
CHAR_BIT - 1);
-    for (i = 0; i < NWORDS; i++)
-      m.word[i] |= 1;
-    if (!isnanl (m.value))
-      result |= 1;
-  }
-
-#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined 
__amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined 
_M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
-/* Representation of an 80-bit 'long double' as an initializer for a sequence
-   of 'unsigned int' words.  */
-# ifdef WORDS_BIGENDIAN
-#  define LDBL80_WORDS(exponent,manthi,mantlo) \
-     { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
-       ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16),   \
-       (unsigned int) (mantlo) << 16                                        \
-     }
-# else
-#  define LDBL80_WORDS(exponent,manthi,mantlo) \
-     { mantlo, manthi, exponent }
-# endif
-  { /* Quiet NaN.  */
-    static memory_long_double x =
-      { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
-    if (!isnanl (x.value))
-      result |= 2;
-  }
-  {
-    /* Signalling NaN.  */
-    static memory_long_double x =
-      { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
-    if (!isnanl (x.value))
-      result |= 2;
-  }
-  /* isnanl should return something even for noncanonical values.  */
-  { /* Pseudo-NaN.  */
-    static memory_long_double x =
-      { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
-    if (isnanl (x.value) && !isnanl (x.value))
-      result |= 4;
-  }
-  { /* Pseudo-Infinity.  */
-    static memory_long_double x =
-      { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
-    if (isnanl (x.value) && !isnanl (x.value))
-      result |= 8;
-  }
-  { /* Pseudo-Zero.  */
-    static memory_long_double x =
-      { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
-    if (isnanl (x.value) && !isnanl (x.value))
-      result |= 16;
-  }
-  { /* Unnormalized number.  */
-    static memory_long_double x =
-      { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
-    if (isnanl (x.value) && !isnanl (x.value))
-      result |= 32;
-  }
-  { /* Pseudo-Denormal.  */
-    static memory_long_double x =
-      { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
-    if (isnanl (x.value) && !isnanl (x.value))
-      result |= 64;
-  }
-#endif
-
-  return result;
-}]])],
-        [gl_cv_func_isnanl_works=yes],
-        [gl_cv_func_isnanl_works=no],
-        [case "$host_os" in
-           mingw*) # Guess yes on mingw, no on MSVC.
-             AC_EGREP_CPP([Known], [
-#ifdef __MINGW32__
- Known
-#endif
-               ],
-               [gl_cv_func_isnanl_works="guessing yes"],
-               [gl_cv_func_isnanl_works="guessing no"])
-             ;;
-           *) gl_cv_func_isnanl_works="guessing yes" ;;
-         esac
-        ])
-    ])
-])
diff --git a/m4/ldexpl.m4 b/m4/ldexpl.m4
deleted file mode 100644
index f2785d67c5b..00000000000
--- a/m4/ldexpl.m4
+++ /dev/null
@@ -1,135 +0,0 @@
-# ldexpl.m4 serial 17
-dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_LDEXPL],
-[
-  AC_REQUIRE([gl_MATH_H_DEFAULTS])
-  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
-  AC_REQUIRE([gl_FUNC_ISNANL]) dnl for ISNANL_LIBM
-
-  dnl Persuade glibc <math.h> to declare ldexpl().
-  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-
-  dnl Check whether it's declared.
-  dnl Mac OS X 10.3 has ldexpl() in libc but doesn't declare it in <math.h>.
-  AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [[#include <math.h>]])
-
-  LDEXPL_LIBM=
-  if test $HAVE_DECL_LDEXPL = 1; then
-    gl_CHECK_LDEXPL_NO_LIBM
-    if test $gl_cv_func_ldexpl_no_libm = no; then
-      AC_CACHE_CHECK([whether ldexpl() can be used with libm],
-        [gl_cv_func_ldexpl_in_libm],
-        [
-          save_LIBS="$LIBS"
-          LIBS="$LIBS -lm"
-          AC_LINK_IFELSE(
-            [AC_LANG_PROGRAM(
-               [[#include <math.h>
-                 long double x;]],
-               [[return ldexpl (x, -1) > 0;]])],
-            [gl_cv_func_ldexpl_in_libm=yes],
-            [gl_cv_func_ldexpl_in_libm=no])
-          LIBS="$save_LIBS"
-        ])
-      if test $gl_cv_func_ldexpl_in_libm = yes; then
-        LDEXPL_LIBM=-lm
-      fi
-    fi
-    if test $gl_cv_func_ldexpl_no_libm = yes \
-       || test $gl_cv_func_ldexpl_in_libm = yes; then
-      save_LIBS="$LIBS"
-      LIBS="$LIBS $LDEXPL_LIBM"
-      gl_FUNC_LDEXPL_WORKS
-      LIBS="$save_LIBS"
-      case "$gl_cv_func_ldexpl_works" in
-        *yes) gl_func_ldexpl=yes ;;
-        *)    gl_func_ldexpl=no; REPLACE_LDEXPL=1 ;;
-      esac
-    else
-      gl_func_ldexpl=no
-    fi
-    if test $gl_func_ldexpl = yes; then
-      AC_DEFINE([HAVE_LDEXPL], [1],
-        [Define if the ldexpl() function is available.])
-    fi
-  fi
-  if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then
-    dnl Find libraries needed to link lib/ldexpl.c.
-    if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
-      AC_REQUIRE([gl_FUNC_LDEXP])
-      LDEXPL_LIBM="$LDEXP_LIBM"
-    else
-      LDEXPL_LIBM="$ISNANL_LIBM"
-    fi
-  fi
-  AC_SUBST([LDEXPL_LIBM])
-])
-
-dnl Test whether ldexpl() can be used without linking with libm.
-dnl Set gl_cv_func_ldexpl_no_libm to 'yes' or 'no' accordingly.
-AC_DEFUN([gl_CHECK_LDEXPL_NO_LIBM],
-[
-  AC_CACHE_CHECK([whether ldexpl() can be used without linking with libm],
-    [gl_cv_func_ldexpl_no_libm],
-    [
-      AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[#include <math.h>
-             long double x;]],
-           [[return ldexpl (x, -1) > 0;]])],
-        [gl_cv_func_ldexpl_no_libm=yes],
-        [gl_cv_func_ldexpl_no_libm=no])
-    ])
-])
-
-dnl Test whether ldexpl() works on finite numbers (this fails on AIX 5.1
-dnl and Mac OS X 10.4/PowerPC).
-AC_DEFUN([gl_FUNC_LDEXPL_WORKS],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether ldexpl works], [gl_cv_func_ldexpl_works],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <math.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-long double ldexpl (long double, int);
-int main()
-{
-  int result = 0;
-  {
-    volatile long double x = 1.0;
-    volatile long double y = ldexpl (x, -1);
-    if (y != 0.5L)
-      result |= 1;
-  }
-  {
-    volatile long double x = 1.73205L;
-    volatile long double y = ldexpl (x, 0);
-    if (y != x)
-      result |= 2;
-  }
-  return result;
-}]])],
-        [gl_cv_func_ldexpl_works=yes],
-        [gl_cv_func_ldexpl_works=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-           aix | aix[3-6]*) gl_cv_func_ldexpl_works="guessing no" ;;
-                            # Guess yes on native Windows.
-           mingw*)          gl_cv_func_ldexpl_works="guessing yes" ;;
-           *)               gl_cv_func_ldexpl_works="guessing yes" ;;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
diff --git a/m4/math_h.m4 b/m4/math_h.m4
deleted file mode 100644
index d2e90ff1eb6..00000000000
--- a/m4/math_h.m4
+++ /dev/null
@@ -1,391 +0,0 @@
-# math_h.m4 serial 125
-dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN_ONCE([gl_MATH_H],
-[
-  AC_REQUIRE([gl_MATH_H_DEFAULTS])
-  gl_CHECK_NEXT_HEADERS([math.h])
-
-  AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works],
-    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
-      [[/* Solaris 10 has a broken definition of NAN.  Other platforms
-        fail to provide NAN, or provide it only in C99 mode; this
-        test only needs to fail when NAN is provided but wrong.  */
-         float f = 1.0f;
-#ifdef NAN
-         f = NAN;
-#endif
-         return f == 0;]])],
-      [gl_cv_header_math_nan_works=yes],
-      [gl_cv_header_math_nan_works=no])])
-  if test $gl_cv_header_math_nan_works = no; then
-    REPLACE_NAN=1
-  fi
-  AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works],
-    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
-      [[/* Solaris 10 has a broken definition of HUGE_VAL.  */
-         double d = HUGE_VAL;
-         return d == 0;]])],
-      [gl_cv_header_math_huge_val_works=yes],
-      [gl_cv_header_math_huge_val_works=no])])
-  if test $gl_cv_header_math_huge_val_works = no; then
-    REPLACE_HUGE_VAL=1
-  fi
-
-  dnl Check for declarations of anything we want to poison if the
-  dnl corresponding gnulib module is not in use.
-  gl_WARN_ON_USE_PREPARE([[#include <math.h>]],
-    [acosf acosl asinf asinl atanf atanl
-     cbrt cbrtf cbrtl ceilf ceill copysign copysignf copysignl cosf cosl coshf
-     expf expl exp2 exp2f exp2l expm1 expm1f expm1l
-     fabsf fabsl floorf floorl fma fmaf fmal
-     fmod fmodf fmodl frexpf frexpl hypotf hypotl
-     ilogb ilogbf ilogbl
-     ldexpf ldexpl
-     log logf logl log10 log10f log10l log1p log1pf log1pl log2 log2f log2l
-     logb logbf logbl
-     modf modff modfl powf
-     remainder remainderf remainderl
-     rint rintf rintl round roundf roundl sinf sinl sinhf sqrtf sqrtl
-     tanf tanl tanhf trunc truncf truncl])
-])
-
-# gl_MATH_MODULE_INDICATOR([modulename])
-# sets the shell variable that indicates the presence of the given module
-# to a C preprocessor expression that will evaluate to 1.
-# This macro invocation must not occur in macros that are AC_REQUIREd.
-AC_DEFUN([gl_MATH_MODULE_INDICATOR],
-[
-  dnl Ensure to expand the default settings once only.
-  gl_MATH_H_REQUIRE_DEFAULTS
-  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-  dnl Define it also as a C macro, for the benefit of the unit tests.
-  gl_MODULE_INDICATOR_FOR_TESTS([$1])
-])
-
-# Initializes the default values for AC_SUBSTed shell variables.
-# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-# outside of macros or in macros that are not AC_REQUIREd.
-AC_DEFUN([gl_MATH_H_REQUIRE_DEFAULTS],
-[
-  m4_defun(GL_MODULE_INDICATOR_PREFIX[_MATH_H_MODULE_INDICATOR_DEFAULTS], [
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACOSF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACOSL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ASINF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ASINL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATANF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATANL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATAN2F])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRT])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRTF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRTL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEIL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEILF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEILL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGN])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGNF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGNL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSHF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2F])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2L])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1F])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1L])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FABSF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FABSL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOOR])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOORF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOORL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMA])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMAF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMAL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMOD])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMODF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMODL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXPF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXP])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXPL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOT])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOTF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOTL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGB])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGBF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGBL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISFINITE])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISINF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNAN])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNANF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNAND])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNANL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXPF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXPL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10F])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10L])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1P])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1PF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1PL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2F])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2L])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGB])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGBF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGBL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODFF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODFL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POWF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDER])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDERF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDERL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINT])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINTF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINTL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUND])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUNDF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUNDL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGNBIT])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINHF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SQRTF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SQRTL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANL])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANHF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNC])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCF])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCL])
-    dnl Support Microsoft deprecated alias function names by default.
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_J0], [1])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_J1], [1])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_JN], [1])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_Y0], [1])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_Y1], [1])
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_YN], [1])
-  ])
-  m4_require(GL_MODULE_INDICATOR_PREFIX[_MATH_H_MODULE_INDICATOR_DEFAULTS])
-  AC_REQUIRE([gl_MATH_H_DEFAULTS])
-])
-
-AC_DEFUN([gl_MATH_H_DEFAULTS],
-[
-  dnl Assume proper GNU behavior unless another module says otherwise.
-  HAVE_ACOSF=1;                     AC_SUBST([HAVE_ACOSF])
-  HAVE_ACOSL=1;                     AC_SUBST([HAVE_ACOSL])
-  HAVE_ASINF=1;                     AC_SUBST([HAVE_ASINF])
-  HAVE_ASINL=1;                     AC_SUBST([HAVE_ASINL])
-  HAVE_ATANF=1;                     AC_SUBST([HAVE_ATANF])
-  HAVE_ATANL=1;                     AC_SUBST([HAVE_ATANL])
-  HAVE_ATAN2F=1;                    AC_SUBST([HAVE_ATAN2F])
-  HAVE_CBRT=1;                      AC_SUBST([HAVE_CBRT])
-  HAVE_CBRTF=1;                     AC_SUBST([HAVE_CBRTF])
-  HAVE_CBRTL=1;                     AC_SUBST([HAVE_CBRTL])
-  HAVE_COPYSIGN=1;                  AC_SUBST([HAVE_COPYSIGN])
-  HAVE_COPYSIGNL=1;                 AC_SUBST([HAVE_COPYSIGNL])
-  HAVE_COSF=1;                      AC_SUBST([HAVE_COSF])
-  HAVE_COSL=1;                      AC_SUBST([HAVE_COSL])
-  HAVE_COSHF=1;                     AC_SUBST([HAVE_COSHF])
-  HAVE_EXPF=1;                      AC_SUBST([HAVE_EXPF])
-  HAVE_EXPL=1;                      AC_SUBST([HAVE_EXPL])
-  HAVE_EXPM1=1;                     AC_SUBST([HAVE_EXPM1])
-  HAVE_EXPM1F=1;                    AC_SUBST([HAVE_EXPM1F])
-  HAVE_FABSF=1;                     AC_SUBST([HAVE_FABSF])
-  HAVE_FABSL=1;                     AC_SUBST([HAVE_FABSL])
-  HAVE_FMA=1;                       AC_SUBST([HAVE_FMA])
-  HAVE_FMAF=1;                      AC_SUBST([HAVE_FMAF])
-  HAVE_FMAL=1;                      AC_SUBST([HAVE_FMAL])
-  HAVE_FMODF=1;                     AC_SUBST([HAVE_FMODF])
-  HAVE_FMODL=1;                     AC_SUBST([HAVE_FMODL])
-  HAVE_FREXPF=1;                    AC_SUBST([HAVE_FREXPF])
-  HAVE_HYPOTF=1;                    AC_SUBST([HAVE_HYPOTF])
-  HAVE_HYPOTL=1;                    AC_SUBST([HAVE_HYPOTL])
-  HAVE_ILOGB=1;                     AC_SUBST([HAVE_ILOGB])
-  HAVE_ILOGBF=1;                    AC_SUBST([HAVE_ILOGBF])
-  HAVE_ILOGBL=1;                    AC_SUBST([HAVE_ILOGBL])
-  HAVE_ISNANF=1;                    AC_SUBST([HAVE_ISNANF])
-  HAVE_ISNAND=1;                    AC_SUBST([HAVE_ISNAND])
-  HAVE_ISNANL=1;                    AC_SUBST([HAVE_ISNANL])
-  HAVE_LDEXPF=1;                    AC_SUBST([HAVE_LDEXPF])
-  HAVE_LOGF=1;                      AC_SUBST([HAVE_LOGF])
-  HAVE_LOGL=1;                      AC_SUBST([HAVE_LOGL])
-  HAVE_LOG10F=1;                    AC_SUBST([HAVE_LOG10F])
-  HAVE_LOG10L=1;                    AC_SUBST([HAVE_LOG10L])
-  HAVE_LOG1P=1;                     AC_SUBST([HAVE_LOG1P])
-  HAVE_LOG1PF=1;                    AC_SUBST([HAVE_LOG1PF])
-  HAVE_LOG1PL=1;                    AC_SUBST([HAVE_LOG1PL])
-  HAVE_LOGBF=1;                     AC_SUBST([HAVE_LOGBF])
-  HAVE_LOGBL=1;                     AC_SUBST([HAVE_LOGBL])
-  HAVE_MODFF=1;                     AC_SUBST([HAVE_MODFF])
-  HAVE_MODFL=1;                     AC_SUBST([HAVE_MODFL])
-  HAVE_POWF=1;                      AC_SUBST([HAVE_POWF])
-  HAVE_REMAINDER=1;                 AC_SUBST([HAVE_REMAINDER])
-  HAVE_REMAINDERF=1;                AC_SUBST([HAVE_REMAINDERF])
-  HAVE_RINT=1;                      AC_SUBST([HAVE_RINT])
-  HAVE_RINTL=1;                     AC_SUBST([HAVE_RINTL])
-  HAVE_SINF=1;                      AC_SUBST([HAVE_SINF])
-  HAVE_SINL=1;                      AC_SUBST([HAVE_SINL])
-  HAVE_SINHF=1;                     AC_SUBST([HAVE_SINHF])
-  HAVE_SQRTF=1;                     AC_SUBST([HAVE_SQRTF])
-  HAVE_SQRTL=1;                     AC_SUBST([HAVE_SQRTL])
-  HAVE_TANF=1;                      AC_SUBST([HAVE_TANF])
-  HAVE_TANL=1;                      AC_SUBST([HAVE_TANL])
-  HAVE_TANHF=1;                     AC_SUBST([HAVE_TANHF])
-  HAVE_DECL_ACOSL=1;                AC_SUBST([HAVE_DECL_ACOSL])
-  HAVE_DECL_ASINL=1;                AC_SUBST([HAVE_DECL_ASINL])
-  HAVE_DECL_ATANL=1;                AC_SUBST([HAVE_DECL_ATANL])
-  HAVE_DECL_CBRTF=1;                AC_SUBST([HAVE_DECL_CBRTF])
-  HAVE_DECL_CBRTL=1;                AC_SUBST([HAVE_DECL_CBRTL])
-  HAVE_DECL_CEILF=1;                AC_SUBST([HAVE_DECL_CEILF])
-  HAVE_DECL_CEILL=1;                AC_SUBST([HAVE_DECL_CEILL])
-  HAVE_DECL_COPYSIGNF=1;            AC_SUBST([HAVE_DECL_COPYSIGNF])
-  HAVE_DECL_COSL=1;                 AC_SUBST([HAVE_DECL_COSL])
-  HAVE_DECL_EXPL=1;                 AC_SUBST([HAVE_DECL_EXPL])
-  HAVE_DECL_EXP2=1;                 AC_SUBST([HAVE_DECL_EXP2])
-  HAVE_DECL_EXP2F=1;                AC_SUBST([HAVE_DECL_EXP2F])
-  HAVE_DECL_EXP2L=1;                AC_SUBST([HAVE_DECL_EXP2L])
-  HAVE_DECL_EXPM1L=1;               AC_SUBST([HAVE_DECL_EXPM1L])
-  HAVE_DECL_FLOORF=1;               AC_SUBST([HAVE_DECL_FLOORF])
-  HAVE_DECL_FLOORL=1;               AC_SUBST([HAVE_DECL_FLOORL])
-  HAVE_DECL_FREXPL=1;               AC_SUBST([HAVE_DECL_FREXPL])
-  HAVE_DECL_LDEXPL=1;               AC_SUBST([HAVE_DECL_LDEXPL])
-  HAVE_DECL_LOGL=1;                 AC_SUBST([HAVE_DECL_LOGL])
-  HAVE_DECL_LOG10L=1;               AC_SUBST([HAVE_DECL_LOG10L])
-  HAVE_DECL_LOG2=1;                 AC_SUBST([HAVE_DECL_LOG2])
-  HAVE_DECL_LOG2F=1;                AC_SUBST([HAVE_DECL_LOG2F])
-  HAVE_DECL_LOG2L=1;                AC_SUBST([HAVE_DECL_LOG2L])
-  HAVE_DECL_LOGB=1;                 AC_SUBST([HAVE_DECL_LOGB])
-  HAVE_DECL_REMAINDER=1;            AC_SUBST([HAVE_DECL_REMAINDER])
-  HAVE_DECL_REMAINDERL=1;           AC_SUBST([HAVE_DECL_REMAINDERL])
-  HAVE_DECL_RINTF=1;                AC_SUBST([HAVE_DECL_RINTF])
-  HAVE_DECL_ROUND=1;                AC_SUBST([HAVE_DECL_ROUND])
-  HAVE_DECL_ROUNDF=1;               AC_SUBST([HAVE_DECL_ROUNDF])
-  HAVE_DECL_ROUNDL=1;               AC_SUBST([HAVE_DECL_ROUNDL])
-  HAVE_DECL_SINL=1;                 AC_SUBST([HAVE_DECL_SINL])
-  HAVE_DECL_SQRTL=1;                AC_SUBST([HAVE_DECL_SQRTL])
-  HAVE_DECL_TANL=1;                 AC_SUBST([HAVE_DECL_TANL])
-  HAVE_DECL_TRUNC=1;                AC_SUBST([HAVE_DECL_TRUNC])
-  HAVE_DECL_TRUNCF=1;               AC_SUBST([HAVE_DECL_TRUNCF])
-  HAVE_DECL_TRUNCL=1;               AC_SUBST([HAVE_DECL_TRUNCL])
-  REPLACE_ACOSF=0;                  AC_SUBST([REPLACE_ACOSF])
-  REPLACE_ASINF=0;                  AC_SUBST([REPLACE_ASINF])
-  REPLACE_ATANF=0;                  AC_SUBST([REPLACE_ATANF])
-  REPLACE_ATAN2F=0;                 AC_SUBST([REPLACE_ATAN2F])
-  REPLACE_CBRTF=0;                  AC_SUBST([REPLACE_CBRTF])
-  REPLACE_CBRTL=0;                  AC_SUBST([REPLACE_CBRTL])
-  REPLACE_CEIL=0;                   AC_SUBST([REPLACE_CEIL])
-  REPLACE_CEILF=0;                  AC_SUBST([REPLACE_CEILF])
-  REPLACE_CEILL=0;                  AC_SUBST([REPLACE_CEILL])
-  REPLACE_COSF=0;                   AC_SUBST([REPLACE_COSF])
-  REPLACE_COSHF=0;                  AC_SUBST([REPLACE_COSHF])
-  REPLACE_EXPF=0;                   AC_SUBST([REPLACE_EXPF])
-  REPLACE_EXPL=0;                   AC_SUBST([REPLACE_EXPL])
-  REPLACE_EXPM1=0;                  AC_SUBST([REPLACE_EXPM1])
-  REPLACE_EXPM1F=0;                 AC_SUBST([REPLACE_EXPM1F])
-  REPLACE_EXPM1L=0;                 AC_SUBST([REPLACE_EXPM1L])
-  REPLACE_EXP2=0;                   AC_SUBST([REPLACE_EXP2])
-  REPLACE_EXP2L=0;                  AC_SUBST([REPLACE_EXP2L])
-  REPLACE_FABSL=0;                  AC_SUBST([REPLACE_FABSL])
-  REPLACE_FLOOR=0;                  AC_SUBST([REPLACE_FLOOR])
-  REPLACE_FLOORF=0;                 AC_SUBST([REPLACE_FLOORF])
-  REPLACE_FLOORL=0;                 AC_SUBST([REPLACE_FLOORL])
-  REPLACE_FMA=0;                    AC_SUBST([REPLACE_FMA])
-  REPLACE_FMAF=0;                   AC_SUBST([REPLACE_FMAF])
-  REPLACE_FMAL=0;                   AC_SUBST([REPLACE_FMAL])
-  REPLACE_FMOD=0;                   AC_SUBST([REPLACE_FMOD])
-  REPLACE_FMODF=0;                  AC_SUBST([REPLACE_FMODF])
-  REPLACE_FMODL=0;                  AC_SUBST([REPLACE_FMODL])
-  REPLACE_FREXPF=0;                 AC_SUBST([REPLACE_FREXPF])
-  REPLACE_FREXP=0;                  AC_SUBST([REPLACE_FREXP])
-  REPLACE_FREXPL=0;                 AC_SUBST([REPLACE_FREXPL])
-  REPLACE_HUGE_VAL=0;               AC_SUBST([REPLACE_HUGE_VAL])
-  REPLACE_HYPOT=0;                  AC_SUBST([REPLACE_HYPOT])
-  REPLACE_HYPOTF=0;                 AC_SUBST([REPLACE_HYPOTF])
-  REPLACE_HYPOTL=0;                 AC_SUBST([REPLACE_HYPOTL])
-  REPLACE_ILOGB=0;                  AC_SUBST([REPLACE_ILOGB])
-  REPLACE_ILOGBF=0;                 AC_SUBST([REPLACE_ILOGBF])
-  REPLACE_ILOGBL=0;                 AC_SUBST([REPLACE_ILOGBL])
-  REPLACE_ISFINITE=0;               AC_SUBST([REPLACE_ISFINITE])
-  REPLACE_ISINF=0;                  AC_SUBST([REPLACE_ISINF])
-  REPLACE_ISNAN=0;                  AC_SUBST([REPLACE_ISNAN])
-  REPLACE_LDEXPL=0;                 AC_SUBST([REPLACE_LDEXPL])
-  REPLACE_LOG=0;                    AC_SUBST([REPLACE_LOG])
-  REPLACE_LOGF=0;                   AC_SUBST([REPLACE_LOGF])
-  REPLACE_LOGL=0;                   AC_SUBST([REPLACE_LOGL])
-  REPLACE_LOG10=0;                  AC_SUBST([REPLACE_LOG10])
-  REPLACE_LOG10F=0;                 AC_SUBST([REPLACE_LOG10F])
-  REPLACE_LOG10L=0;                 AC_SUBST([REPLACE_LOG10L])
-  REPLACE_LOG1P=0;                  AC_SUBST([REPLACE_LOG1P])
-  REPLACE_LOG1PF=0;                 AC_SUBST([REPLACE_LOG1PF])
-  REPLACE_LOG1PL=0;                 AC_SUBST([REPLACE_LOG1PL])
-  REPLACE_LOG2=0;                   AC_SUBST([REPLACE_LOG2])
-  REPLACE_LOG2F=0;                  AC_SUBST([REPLACE_LOG2F])
-  REPLACE_LOG2L=0;                  AC_SUBST([REPLACE_LOG2L])
-  REPLACE_LOGB=0;                   AC_SUBST([REPLACE_LOGB])
-  REPLACE_LOGBF=0;                  AC_SUBST([REPLACE_LOGBF])
-  REPLACE_LOGBL=0;                  AC_SUBST([REPLACE_LOGBL])
-  REPLACE_MODF=0;                   AC_SUBST([REPLACE_MODF])
-  REPLACE_MODFF=0;                  AC_SUBST([REPLACE_MODFF])
-  REPLACE_MODFL=0;                  AC_SUBST([REPLACE_MODFL])
-  REPLACE_NAN=0;                    AC_SUBST([REPLACE_NAN])
-  REPLACE_REMAINDER=0;              AC_SUBST([REPLACE_REMAINDER])
-  REPLACE_REMAINDERF=0;             AC_SUBST([REPLACE_REMAINDERF])
-  REPLACE_REMAINDERL=0;             AC_SUBST([REPLACE_REMAINDERL])
-  REPLACE_RINTL=0;                  AC_SUBST([REPLACE_RINTL])
-  REPLACE_ROUND=0;                  AC_SUBST([REPLACE_ROUND])
-  REPLACE_ROUNDF=0;                 AC_SUBST([REPLACE_ROUNDF])
-  REPLACE_ROUNDL=0;                 AC_SUBST([REPLACE_ROUNDL])
-  REPLACE_SIGNBIT=0;                AC_SUBST([REPLACE_SIGNBIT])
-  REPLACE_SIGNBIT_USING_BUILTINS=0; AC_SUBST([REPLACE_SIGNBIT_USING_BUILTINS])
-  REPLACE_SINF=0;                   AC_SUBST([REPLACE_SINF])
-  REPLACE_SINHF=0;                  AC_SUBST([REPLACE_SINHF])
-  REPLACE_SQRTF=0;                  AC_SUBST([REPLACE_SQRTF])
-  REPLACE_SQRTL=0;                  AC_SUBST([REPLACE_SQRTL])
-  REPLACE_TANF=0;                   AC_SUBST([REPLACE_TANF])
-  REPLACE_TANHF=0;                  AC_SUBST([REPLACE_TANHF])
-  REPLACE_TRUNC=0;                  AC_SUBST([REPLACE_TRUNC])
-  REPLACE_TRUNCF=0;                 AC_SUBST([REPLACE_TRUNCF])
-  REPLACE_TRUNCL=0;                 AC_SUBST([REPLACE_TRUNCL])
-])
-
-# gl_LONG_DOUBLE_VS_DOUBLE
-# determines whether 'long double' and 'double' have the same representation.
-# Sets variable HAVE_SAME_LONG_DOUBLE_AS_DOUBLE to 0 or 1, and defines
-# HAVE_SAME_LONG_DOUBLE_AS_DOUBLE accordingly.
-# The currently known platforms where this is the case are:
-# Linux/HPPA, Minix 3.1.8, AIX 5, AIX 6 and 7 with xlc, MSVC 9.
-AC_DEFUN([gl_LONG_DOUBLE_VS_DOUBLE],
-[
-  AC_CACHE_CHECK([whether long double and double are the same],
-    [gl_cv_long_double_equals_double],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM([[#include <float.h>]],
-          [[typedef int check[sizeof (long double) == sizeof (double)
-                              && LDBL_MANT_DIG == DBL_MANT_DIG
-                              && LDBL_MAX_EXP == DBL_MAX_EXP
-                              && LDBL_MIN_EXP == DBL_MIN_EXP
-                              ? 1 : -1];
-          ]])],
-       [gl_cv_long_double_equals_double=yes],
-       [gl_cv_long_double_equals_double=no])
-    ])
-  if test $gl_cv_long_double_equals_double = yes; then
-    AC_DEFINE([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE], [1],
-      [Define to 1 if 'long double' and 'double' have the same 
representation.])
-    HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=1
-  else
-    HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=0
-  fi
-  AC_SUBST([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE])
-])
diff --git a/m4/printf-frexp.m4 b/m4/printf-frexp.m4
deleted file mode 100644
index 8f5844a2c1c..00000000000
--- a/m4/printf-frexp.m4
+++ /dev/null
@@ -1,38 +0,0 @@
-# printf-frexp.m4 serial 5
-dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl Check how to define printf_frexp() without linking with libm.
-
-AC_DEFUN([gl_FUNC_PRINTF_FREXP],
-[
-  AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM])
-  if test $gl_cv_func_frexp_no_libm = yes; then
-    gl_FUNC_FREXP_WORKS
-    case "$gl_cv_func_frexp_works" in
-      *yes)
-        AC_DEFINE([HAVE_FREXP_IN_LIBC], [1],
-          [Define if the frexp function is available in libc.])
-        ;;
-    esac
-  fi
-
-  AC_CACHE_CHECK([whether ldexp can be used without linking with libm],
-    [gl_cv_func_ldexp_no_libm],
-    [
-      AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[#include <math.h>
-             double x;
-             int y;]],
-           [[return ldexp (x, y) < 1;]])],
-        [gl_cv_func_ldexp_no_libm=yes],
-        [gl_cv_func_ldexp_no_libm=no])
-    ])
-  if test $gl_cv_func_ldexp_no_libm = yes; then
-    AC_DEFINE([HAVE_LDEXP_IN_LIBC], [1],
-      [Define if the ldexp function is available in libc.])
-  fi
-])
diff --git a/m4/printf-frexpl.m4 b/m4/printf-frexpl.m4
deleted file mode 100644
index aee170ffd39..00000000000
--- a/m4/printf-frexpl.m4
+++ /dev/null
@@ -1,48 +0,0 @@
-# printf-frexpl.m4 serial 10
-dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl Check how to define printf_frexpl() without linking with libm.
-
-AC_DEFUN([gl_FUNC_PRINTF_FREXPL],
-[
-  AC_REQUIRE([gl_MATH_H_DEFAULTS])
-  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
-
-  dnl Subset of gl_FUNC_FREXPL_NO_LIBM.
-  gl_CHECK_FREXPL_NO_LIBM
-  if test $gl_cv_func_frexpl_no_libm = yes; then
-    gl_FUNC_FREXPL_WORKS
-    case "$gl_cv_func_frexpl_works" in
-      *yes) gl_func_frexpl_no_libm=yes ;;
-      *)    gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;;
-    esac
-  else
-    gl_func_frexpl_no_libm=no
-    dnl Set REPLACE_FREXPL here because the system may have frexpl in libm.
-    REPLACE_FREXPL=1
-  fi
-  if test $gl_func_frexpl_no_libm = yes; then
-    AC_DEFINE([HAVE_FREXPL_IN_LIBC], [1],
-      [Define if the frexpl function is available in libc.])
-    dnl Also check whether it's declared.
-    dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
-    AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]])
-  fi
-
-  gl_CHECK_LDEXPL_NO_LIBM
-  if test $gl_cv_func_ldexpl_no_libm = yes; then
-    gl_FUNC_LDEXPL_WORKS
-    case "$gl_cv_func_ldexpl_works" in
-      *yes)
-        AC_DEFINE([HAVE_LDEXPL_IN_LIBC], [1],
-          [Define if the ldexpl function is available in libc.])
-        dnl Also check whether it's declared.
-        dnl Mac OS X 10.3 has ldexpl() in libc but doesn't declare it in 
<math.h>.
-        AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [[#include <math.h>]])
-        ;;
-    esac
-  fi
-])
diff --git a/m4/printf-posix.m4 b/m4/printf-posix.m4
deleted file mode 100644
index 9aebf4002d6..00000000000
--- a/m4/printf-posix.m4
+++ /dev/null
@@ -1,36 +0,0 @@
-# printf-posix.m4 serial 5
-dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_PRINTF_POSIX],
-[
-  AC_REQUIRE([gl_FUNC_PRINTF_IS_POSIX])
-  if test $gl_cv_func_printf_posix = no; then
-    gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
-    gl_REPLACE_VASNPRINTF
-    gl_REPLACE_PRINTF
-  fi
-])
-
-dnl Test whether printf is POSIX compliant.
-dnl Result is gl_cv_func_printf_posix.
-AC_DEFUN([gl_FUNC_PRINTF_IS_POSIX],
-[
-  AC_REQUIRE([gl_FUNC_VFPRINTF_IS_POSIX])
-  gl_cv_func_printf_posix="$gl_cv_func_vfprintf_posix"
-])
-
-AC_DEFUN([gl_REPLACE_PRINTF],
-[
-  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-  AC_REQUIRE([gl_ASM_SYMBOL_PREFIX])
-  AC_LIBOBJ([printf])
-  REPLACE_PRINTF=1
-  AC_DEFINE([REPLACE_PRINTF_POSIX], [1],
-    [Define if printf is overridden by a POSIX compliant gnulib 
implementation.])
-  gl_PREREQ_PRINTF
-])
-
-AC_DEFUN([gl_PREREQ_PRINTF], [:])
diff --git a/m4/printf.m4 b/m4/printf.m4
deleted file mode 100644
index 8b8f01067fc..00000000000
--- a/m4/printf.m4
+++ /dev/null
@@ -1,2158 +0,0 @@
-# printf.m4 serial 84
-dnl Copyright (C) 2003, 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl Test whether the *printf family of functions supports the 'j', 'z', 't',
-dnl 'L' size specifiers. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_sizes_c99.
-
-AC_DEFUN([gl_PRINTF_SIZES_C99],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports size specifiers as in C99],
-    [gl_cv_func_printf_sizes_c99],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#if HAVE_STDINT_H_WITH_UINTMAX
-# include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-# include <inttypes.h>
-#endif
-static char buf[100];
-int main ()
-{
-  int result = 0;
-#if HAVE_STDINT_H_WITH_UINTMAX || HAVE_INTTYPES_H_WITH_UINTMAX
-  buf[0] = '\0';
-  if (sprintf (buf, "%ju %d", (uintmax_t) 12345671, 33, 44, 55) < 0
-      || strcmp (buf, "12345671 33") != 0)
-    result |= 1;
-#else
-  result |= 1;
-#endif
-  buf[0] = '\0';
-  if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0
-      || strcmp (buf, "12345672 33") != 0)
-    result |= 2;
-  buf[0] = '\0';
-  if (sprintf (buf, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55) < 0
-      || strcmp (buf, "12345673 33") != 0)
-    result |= 4;
-  buf[0] = '\0';
-  if (sprintf (buf, "%Lg %d", (long double) 1.5, 33, 44, 55) < 0
-      || strcmp (buf, "1.5 33") != 0)
-    result |= 8;
-  return result;
-}]])],
-        [gl_cv_func_printf_sizes_c99=yes],
-        [gl_cv_func_printf_sizes_c99=no],
-        [
-         case "$host_os" in
-changequote(,)dnl
-                                 # Guess yes on glibc systems.
-           *-gnu* | gnu*)        gl_cv_func_printf_sizes_c99="guessing yes";;
-                                 # Guess yes on musl systems.
-           *-musl* | midipix*)   gl_cv_func_printf_sizes_c99="guessing yes";;
-                                 # Guess yes on FreeBSD >= 5.
-           freebsd[1-4].*)       gl_cv_func_printf_sizes_c99="guessing no";;
-           freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
-           midnightbsd*)         gl_cv_func_printf_sizes_c99="guessing yes";;
-                                 # Guess yes on Mac OS X >= 10.3.
-           darwin[1-6].*)        gl_cv_func_printf_sizes_c99="guessing no";;
-           darwin*)              gl_cv_func_printf_sizes_c99="guessing yes";;
-                                 # Guess yes on OpenBSD >= 3.9.
-           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
-                                 gl_cv_func_printf_sizes_c99="guessing no";;
-           openbsd*)             gl_cv_func_printf_sizes_c99="guessing yes";;
-                                 # Guess yes on Solaris >= 2.10.
-           solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";;
-           solaris*)             gl_cv_func_printf_sizes_c99="guessing no";;
-                                 # Guess yes on NetBSD >= 3.
-           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | 
netbsdcoff[1-2]*)
-                                 gl_cv_func_printf_sizes_c99="guessing no";;
-           netbsd*)              gl_cv_func_printf_sizes_c99="guessing yes";;
-                                 # Guess yes on Android.
-           linux*-android*)      gl_cv_func_printf_sizes_c99="guessing yes";;
-changequote([,])dnl
-                                 # Guess yes on MSVC, no on mingw.
-           mingw*)               AC_EGREP_CPP([Known], [
-#ifdef _MSC_VER
- Known
-#endif
-                                   ],
-                                   [gl_cv_func_printf_sizes_c99="guessing 
yes"],
-                                   [gl_cv_func_printf_sizes_c99="guessing no"])
-                                 ;;
-                                 # If we don't know, obey 
--enable-cross-guesses.
-           *)                    
gl_cv_func_printf_sizes_c99="$gl_cross_guess_normal";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports the 'w8', 'w16',
-dnl 'w32', 'w64', 'wf8', 'wf16', 'wf32', 'wf64' size specifiers. (ISO C23)
-dnl Result is gl_cv_func_printf_sizes_c23.
-
-AC_DEFUN([gl_PRINTF_SIZES_C23],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports size specifiers as in C23],
-    [gl_cv_func_printf_sizes_c23],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#if HAVE_STDINT_H_WITH_UINTMAX
-# include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-# include <inttypes.h>
-#endif
-static char buf[100];
-int main ()
-{
-  int result = 0;
-  buf[0] = '\0';
-  if (sprintf (buf, "%w8u %d", (uint8_t) 123, 33, 44, 55) < 0
-      || strcmp (buf, "123 33") != 0)
-    result |= 1;
-  buf[0] = '\0';
-  if (sprintf (buf, "%wf8u %d", (uint_fast8_t) 123, 33, 44, 55) < 0
-      || strcmp (buf, "123 33") != 0)
-    result |= 1;
-  buf[0] = '\0';
-  if (sprintf (buf, "%w16u %d", (uint16_t) 12345, 33, 44, 55) < 0
-      || strcmp (buf, "12345 33") != 0)
-    result |= 2;
-  buf[0] = '\0';
-  if (sprintf (buf, "%wf16u %d", (uint_fast16_t) 12345, 33, 44, 55) < 0
-      || strcmp (buf, "12345 33") != 0)
-    result |= 2;
-  buf[0] = '\0';
-  if (sprintf (buf, "%w32u %d", (uint32_t) 12345671, 33, 44, 55) < 0
-      || strcmp (buf, "12345671 33") != 0)
-    result |= 4;
-  buf[0] = '\0';
-  if (sprintf (buf, "%wf32u %d", (uint_fast32_t) 12345671, 33, 44, 55) < 0
-      || strcmp (buf, "12345671 33") != 0)
-    result |= 4;
-#if HAVE_STDINT_H_WITH_UINTMAX || HAVE_INTTYPES_H_WITH_UINTMAX
-  buf[0] = '\0';
-  if (sprintf (buf, "%w64u %d", (uint64_t) 12345671, 33, 44, 55) < 0
-      || strcmp (buf, "12345671 33") != 0)
-    result |= 8;
-  buf[0] = '\0';
-  if (sprintf (buf, "%wf64u %d", (uint_fast64_t) 12345671, 33, 44, 55) < 0
-      || strcmp (buf, "12345671 33") != 0)
-    result |= 8;
-#else
-  result |= 8;
-#endif
-  return result;
-}]])],
-        [gl_cv_func_printf_sizes_c23=yes],
-        [gl_cv_func_printf_sizes_c23=no],
-        [
-         case "$host_os" in
-                               # Guess no on glibc systems.
-           *-gnu* | gnu*)      gl_cv_func_printf_sizes_c23="guessing no";;
-                               # Guess no on musl systems.
-           *-musl* | midipix*) gl_cv_func_printf_sizes_c23="guessing no";;
-                               # Guess no on Android.
-           linux*-android*)    gl_cv_func_printf_sizes_c23="guessing no";;
-                               # Guess no on native Windows.
-           mingw*)             gl_cv_func_printf_sizes_c23="guessing no";;
-                               # If we don't know, obey --enable-cross-guesses.
-           *)                  
gl_cv_func_printf_sizes_c23="$gl_cross_guess_normal";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports 'long double'
-dnl arguments together with the 'L' size specifier. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_long_double.
-
-AC_DEFUN([gl_PRINTF_LONG_DOUBLE],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports 'long double' arguments],
-    [gl_cv_func_printf_long_double],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static char buf[10000];
-int main ()
-{
-  int result = 0;
-  buf[0] = '\0';
-  if (sprintf (buf, "%Lf %d", 1.75L, 33, 44, 55) < 0
-      || strcmp (buf, "1.750000 33") != 0)
-    result |= 1;
-  buf[0] = '\0';
-  if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0
-      || strcmp (buf, "1.750000e+00 33") != 0)
-    result |= 2;
-  buf[0] = '\0';
-  if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0
-      || strcmp (buf, "1.75 33") != 0)
-    result |= 4;
-  return result;
-}]])],
-        [gl_cv_func_printf_long_double=yes],
-        [gl_cv_func_printf_long_double=no],
-        [case "$host_os" in
-                            # Guess no on BeOS.
-           beos*)           gl_cv_func_printf_long_double="guessing no";;
-                            # Guess yes on Android.
-           linux*-android*) gl_cv_func_printf_long_double="guessing yes";;
-                            # Guess yes on MSVC, no on mingw.
-           mingw*)          AC_EGREP_CPP([Known], [
-#ifdef _MSC_VER
- Known
-#endif
-                              ],
-                              [gl_cv_func_printf_long_double="guessing yes"],
-                              [gl_cv_func_printf_long_double="guessing no"])
-                            ;;
-           *)               gl_cv_func_printf_long_double="guessing yes";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports infinite and NaN
-dnl 'double' arguments and negative zero arguments in the %f, %e, %g
-dnl directives. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_infinite.
-
-AC_DEFUN([gl_PRINTF_INFINITE],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports infinite 'double' arguments],
-    [gl_cv_func_printf_infinite],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static int
-strisnan (const char *string, size_t start_index, size_t end_index)
-{
-  if (start_index < end_index)
-    {
-      if (string[start_index] == '-')
-        start_index++;
-      if (start_index + 3 <= end_index
-          && memcmp (string + start_index, "nan", 3) == 0)
-        {
-          start_index += 3;
-          if (start_index == end_index
-              || (string[start_index] == '(' && string[end_index - 1] == ')'))
-            return 1;
-        }
-    }
-  return 0;
-}
-static int
-have_minus_zero ()
-{
-  static double plus_zero = 0.0;
-  double minus_zero = - plus_zero;
-  return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
-}
-static char buf[10000];
-static double zero = 0.0;
-int main ()
-{
-  int result = 0;
-  if (sprintf (buf, "%f", 1.0 / zero) < 0
-      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%f", -1.0 / zero) < 0
-      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%f", zero / zero) < 0
-      || !strisnan (buf, 0, strlen (buf)))
-    result |= 2;
-  if (sprintf (buf, "%e", 1.0 / zero) < 0
-      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
-    result |= 4;
-  if (sprintf (buf, "%e", -1.0 / zero) < 0
-      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
-    result |= 4;
-  if (sprintf (buf, "%e", zero / zero) < 0
-      || !strisnan (buf, 0, strlen (buf)))
-    result |= 8;
-  if (sprintf (buf, "%g", 1.0 / zero) < 0
-      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
-    result |= 16;
-  if (sprintf (buf, "%g", -1.0 / zero) < 0
-      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
-    result |= 16;
-  if (sprintf (buf, "%g", zero / zero) < 0
-      || !strisnan (buf, 0, strlen (buf)))
-    result |= 32;
-  /* This test fails on HP-UX 10.20.  */
-  if (have_minus_zero ())
-    if (sprintf (buf, "%g", - zero) < 0
-        || strcmp (buf, "-0") != 0)
-    result |= 64;
-  return result;
-}]])],
-        [gl_cv_func_printf_infinite=yes],
-        [gl_cv_func_printf_infinite=no],
-        [
-         case "$host_os" in
-changequote(,)dnl
-                                 # Guess yes on glibc systems.
-           *-gnu* | gnu*)        gl_cv_func_printf_infinite="guessing yes";;
-                                 # Guess yes on musl systems.
-           *-musl* | midipix*)   gl_cv_func_printf_infinite="guessing yes";;
-                                 # Guess yes on FreeBSD >= 6.
-           freebsd[1-5].*)       gl_cv_func_printf_infinite="guessing no";;
-           freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";;
-           midnightbsd*)         gl_cv_func_printf_infinite="guessing yes";;
-                                 # Guess yes on Mac OS X >= 10.3.
-           darwin[1-6].*)        gl_cv_func_printf_infinite="guessing no";;
-           darwin*)              gl_cv_func_printf_infinite="guessing yes";;
-                                 # Guess yes on HP-UX >= 11.
-           hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite="guessing no";;
-           hpux*)                gl_cv_func_printf_infinite="guessing yes";;
-                                 # Guess yes on NetBSD >= 3.
-           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | 
netbsdcoff[1-2]*)
-                                 gl_cv_func_printf_infinite="guessing no";;
-           netbsd*)              gl_cv_func_printf_infinite="guessing yes";;
-                                 # Guess yes on OpenBSD >= 6.0.
-           openbsd[1-5].*)       gl_cv_func_printf_infinite="guessing no";;
-           openbsd*)             gl_cv_func_printf_infinite="guessing yes";;
-                                 # Guess yes on BeOS.
-           beos*)                gl_cv_func_printf_infinite="guessing yes";;
-                                 # Guess no on Android.
-           linux*-android*)      gl_cv_func_printf_infinite="guessing no";;
-changequote([,])dnl
-                                 # Guess yes on MSVC, no on mingw.
-           mingw*)               AC_EGREP_CPP([Known], [
-#ifdef _MSC_VER
- Known
-#endif
-                                   ],
-                                   [gl_cv_func_printf_infinite="guessing yes"],
-                                   [gl_cv_func_printf_infinite="guessing no"])
-                                 ;;
-                                 # If we don't know, obey 
--enable-cross-guesses.
-           *)                    
gl_cv_func_printf_infinite="$gl_cross_guess_normal";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports infinite and NaN
-dnl 'long double' arguments in the %f, %e, %g directives. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_infinite_long_double.
-
-AC_DEFUN([gl_PRINTF_INFINITE_LONG_DOUBLE],
-[
-  AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gl_BIGENDIAN])
-  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  dnl The user can set or unset the variable gl_printf_safe to indicate
-  dnl that he wishes a safe handling of non-IEEE-754 'long double' values.
-  if test -n "$gl_printf_safe"; then
-    AC_DEFINE([CHECK_PRINTF_SAFE], [1],
-      [Define if you wish *printf() functions that have a safe handling of
-       non-IEEE-754 'long double' values.])
-  fi
-  case "$gl_cv_func_printf_long_double" in
-    *yes)
-      AC_CACHE_CHECK([whether printf supports infinite 'long double' 
arguments],
-        [gl_cv_func_printf_infinite_long_double],
-        [
-          AC_RUN_IFELSE(
-            [AC_LANG_SOURCE([[
-]GL_NOCRASH[
-#include <float.h>
-#include <stdio.h>
-#include <string.h>
-static int
-strisnan (const char *string, size_t start_index, size_t end_index)
-{
-  if (start_index < end_index)
-    {
-      if (string[start_index] == '-')
-        start_index++;
-      if (start_index + 3 <= end_index
-          && memcmp (string + start_index, "nan", 3) == 0)
-        {
-          start_index += 3;
-          if (start_index == end_index
-              || (string[start_index] == '(' && string[end_index - 1] == ')'))
-            return 1;
-        }
-    }
-  return 0;
-}
-static char buf[10000];
-static long double zeroL = 0.0L;
-int main ()
-{
-  int result = 0;
-  nocrash_init();
-  if (sprintf (buf, "%Lf", 1.0L / zeroL) < 0
-      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%Lf", -1.0L / zeroL) < 0
-      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%Lf", zeroL / zeroL) < 0
-      || !strisnan (buf, 0, strlen (buf)))
-    result |= 1;
-  if (sprintf (buf, "%Le", 1.0L / zeroL) < 0
-      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%Le", -1.0L / zeroL) < 0
-      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%Le", zeroL / zeroL) < 0
-      || !strisnan (buf, 0, strlen (buf)))
-    result |= 1;
-  if (sprintf (buf, "%Lg", 1.0L / zeroL) < 0
-      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%Lg", -1.0L / zeroL) < 0
-      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%Lg", zeroL / zeroL) < 0
-      || !strisnan (buf, 0, strlen (buf)))
-    result |= 1;
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined 
__x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || 
defined _I386 || defined _M_IX86 || defined _X86_)) && 
!HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
-/* Representation of an 80-bit 'long double' as an initializer for a sequence
-   of 'unsigned int' words.  */
-# ifdef WORDS_BIGENDIAN
-#  define LDBL80_WORDS(exponent,manthi,mantlo) \
-     { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
-       ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16),   \
-       (unsigned int) (mantlo) << 16                                        \
-     }
-# else
-#  define LDBL80_WORDS(exponent,manthi,mantlo) \
-     { mantlo, manthi, exponent }
-# endif
-  { /* Quiet NaN.  */
-    static union { unsigned int word[4]; long double value; } x =
-      { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
-    if (sprintf (buf, "%Lf", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 2;
-    if (sprintf (buf, "%Le", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 2;
-    if (sprintf (buf, "%Lg", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 2;
-  }
-  {
-    /* Signalling NaN.  */
-    static union { unsigned int word[4]; long double value; } x =
-      { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
-    if (sprintf (buf, "%Lf", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 2;
-    if (sprintf (buf, "%Le", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 2;
-    if (sprintf (buf, "%Lg", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 2;
-  }
-  { /* Pseudo-NaN.  */
-    static union { unsigned int word[4]; long double value; } x =
-      { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
-    if (sprintf (buf, "%Lf", x.value) <= 0)
-      result |= 4;
-    if (sprintf (buf, "%Le", x.value) <= 0)
-      result |= 4;
-    if (sprintf (buf, "%Lg", x.value) <= 0)
-      result |= 4;
-  }
-  { /* Pseudo-Infinity.  */
-    static union { unsigned int word[4]; long double value; } x =
-      { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
-    if (sprintf (buf, "%Lf", x.value) <= 0)
-      result |= 8;
-    if (sprintf (buf, "%Le", x.value) <= 0)
-      result |= 8;
-    if (sprintf (buf, "%Lg", x.value) <= 0)
-      result |= 8;
-  }
-  { /* Pseudo-Zero.  */
-    static union { unsigned int word[4]; long double value; } x =
-      { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
-    if (sprintf (buf, "%Lf", x.value) <= 0)
-      result |= 16;
-    if (sprintf (buf, "%Le", x.value) <= 0)
-      result |= 16;
-    if (sprintf (buf, "%Lg", x.value) <= 0)
-      result |= 16;
-  }
-  { /* Unnormalized number.  */
-    static union { unsigned int word[4]; long double value; } x =
-      { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
-    if (sprintf (buf, "%Lf", x.value) <= 0)
-      result |= 32;
-    if (sprintf (buf, "%Le", x.value) <= 0)
-      result |= 32;
-    if (sprintf (buf, "%Lg", x.value) <= 0)
-      result |= 32;
-  }
-  { /* Pseudo-Denormal.  */
-    static union { unsigned int word[4]; long double value; } x =
-      { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
-    if (sprintf (buf, "%Lf", x.value) <= 0)
-      result |= 64;
-    if (sprintf (buf, "%Le", x.value) <= 0)
-      result |= 64;
-    if (sprintf (buf, "%Lg", x.value) <= 0)
-      result |= 64;
-  }
-#endif
-  return result;
-}]])],
-            [gl_cv_func_printf_infinite_long_double=yes],
-            [gl_cv_func_printf_infinite_long_double=no],
-            [case "$host_cpu" in
-                                     # Guess no on ia64, x86_64, i386.
-               ia64 | x86_64 | i*86) 
gl_cv_func_printf_infinite_long_double="guessing no";;
-               *)
-                 case "$host_os" in
-changequote(,)dnl
-                                         # Guess yes on glibc systems.
-                   *-gnu* | gnu*)        
gl_cv_func_printf_infinite_long_double="guessing yes";;
-                                         # Guess yes on musl systems.
-                   *-musl* | midipix*)   
gl_cv_func_printf_infinite_long_double="guessing yes";;
-                                         # Guess yes on FreeBSD >= 6.
-                   freebsd[1-5].*)       
gl_cv_func_printf_infinite_long_double="guessing no";;
-                   freebsd* | kfreebsd*) 
gl_cv_func_printf_infinite_long_double="guessing yes";;
-                   midnightbsd*)         
gl_cv_func_printf_infinite_long_double="guessing yes";;
-                                         # Guess yes on HP-UX >= 11.
-                   hpux[7-9]* | hpux10*) 
gl_cv_func_printf_infinite_long_double="guessing no";;
-                   hpux*)                
gl_cv_func_printf_infinite_long_double="guessing yes";;
-                                         # Guess yes on OpenBSD >= 6.0.
-                   openbsd[1-5].*)       
gl_cv_func_printf_infinite_long_double="guessing no";;
-                   openbsd*)             
gl_cv_func_printf_infinite_long_double="guessing yes";;
-                                         # Guess no on Android.
-                   linux*-android*)      
gl_cv_func_printf_infinite_long_double="guessing no";;
-changequote([,])dnl
-                                         # Guess yes on MSVC, no on mingw.
-                   mingw*)               AC_EGREP_CPP([Known], [
-#ifdef _MSC_VER
- Known
-#endif
-                                           ],
-                                           
[gl_cv_func_printf_infinite_long_double="guessing yes"],
-                                           
[gl_cv_func_printf_infinite_long_double="guessing no"])
-                                         ;;
-                                         # If we don't know, obey 
--enable-cross-guesses.
-                   *)                    
gl_cv_func_printf_infinite_long_double="$gl_cross_guess_normal";;
-                 esac
-                 ;;
-             esac
-            ])
-        ])
-      ;;
-    *)
-      gl_cv_func_printf_infinite_long_double="irrelevant"
-      ;;
-  esac
-])
-
-dnl Test whether the *printf family of functions supports the 'a' and 'A'
-dnl conversion specifier for hexadecimal output of floating-point numbers.
-dnl (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_directive_a.
-
-AC_DEFUN([gl_PRINTF_DIRECTIVE_A],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the 'a' and 'A' directives],
-    [gl_cv_func_printf_directive_a],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static char buf[100];
-static double zero = 0.0;
-int main ()
-{
-  int result = 0;
-  if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0
-      || (strcmp (buf, "0x1.922p+1 33") != 0
-          && strcmp (buf, "0x3.244p+0 33") != 0
-          && strcmp (buf, "0x6.488p-1 33") != 0
-          && strcmp (buf, "0xc.91p-2 33") != 0))
-    result |= 1;
-  if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0
-      || (strcmp (buf, "-0X1.922P+1 33") != 0
-          && strcmp (buf, "-0X3.244P+0 33") != 0
-          && strcmp (buf, "-0X6.488P-1 33") != 0
-          && strcmp (buf, "-0XC.91P-2 33") != 0))
-    result |= 2;
-  /* This catches a FreeBSD 13.0 bug: it doesn't round.  */
-  if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
-      || (strcmp (buf, "0x1.83p+0 33") != 0
-          && strcmp (buf, "0x3.05p-1 33") != 0
-          && strcmp (buf, "0x6.0ap-2 33") != 0
-          && strcmp (buf, "0xc.14p-3 33") != 0))
-    result |= 4;
-  /* This catches a Mac OS X 10.12.4 (Darwin 16.5) bug: it doesn't round.  */
-  if (sprintf (buf, "%.0a %d", 1.51, 33, 44, 55) < 0
-      || (strcmp (buf, "0x2p+0 33") != 0
-          && strcmp (buf, "0x3p-1 33") != 0
-          && strcmp (buf, "0x6p-2 33") != 0
-          && strcmp (buf, "0xcp-3 33") != 0))
-    result |= 4;
-  /* This catches a FreeBSD 6.1 bug.  See
-     <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html> */
-  if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0
-      || buf[0] == '0')
-    result |= 8;
-  /* This catches a Mac OS X 10.3.9 (Darwin 7.9) bug.  */
-  if (sprintf (buf, "%.1a", 1.999) < 0
-      || (strcmp (buf, "0x1.0p+1") != 0
-          && strcmp (buf, "0x2.0p+0") != 0
-          && strcmp (buf, "0x4.0p-1") != 0
-          && strcmp (buf, "0x8.0p-2") != 0))
-    result |= 16;
-  /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a
-     glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
-  if (sprintf (buf, "%.1La", 1.999L) < 0
-      || (strcmp (buf, "0x1.0p+1") != 0
-          && strcmp (buf, "0x2.0p+0") != 0
-          && strcmp (buf, "0x4.0p-1") != 0
-          && strcmp (buf, "0x8.0p-2") != 0))
-    result |= 32;
-  return result;
-}]])],
-        [gl_cv_func_printf_directive_a=yes],
-        [gl_cv_func_printf_directive_a=no],
-        [
-         case "$host_os" in
-                                 # Guess yes on glibc >= 2.5 systems.
-           *-gnu* | gnu*)
-             AC_EGREP_CPP([BZ2908], [
-               #include <features.h>
-               #ifdef __GNU_LIBRARY__
-                #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 
2)) && !defined __UCLIBC__
-                 BZ2908
-                #endif
-               #endif
-               ],
-               [gl_cv_func_printf_directive_a="guessing yes"],
-               [gl_cv_func_printf_directive_a="guessing no"])
-             ;;
-                                 # Guess yes on musl systems.
-           *-musl* | midipix*)   gl_cv_func_printf_directive_a="guessing yes";;
-                                 # Guess no on Android.
-           linux*-android*)      gl_cv_func_printf_directive_a="guessing no";;
-                                 # Guess no on native Windows.
-           mingw*)               gl_cv_func_printf_directive_a="guessing no";;
-                                 # If we don't know, obey 
--enable-cross-guesses.
-           *)                    
gl_cv_func_printf_directive_a="$gl_cross_guess_normal";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports the 'b' conversion
-dnl specifier for binary output of integers.
-dnl (ISO C23)
-dnl Result is gl_cv_func_printf_directive_b.
-
-AC_DEFUN([gl_PRINTF_DIRECTIVE_B],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the 'b' directive],
-    [gl_cv_func_printf_directive_b],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static char buf[100];
-int main ()
-{
-  int result = 0;
-  if (sprintf (buf, "%b %d", 12345, 33, 44, 55) < 0
-      || strcmp (buf, "11000000111001 33") != 0)
-    result |= 1;
-  return result;
-}]])],
-        [gl_cv_func_printf_directive_b=yes],
-        [gl_cv_func_printf_directive_b=no],
-        [
-         case "$host_os" in
-                               # Guess yes on glibc >= 2.35 systems.
-           *-gnu* | gnu*)
-             AC_EGREP_CPP([Lucky], [
-               #include <features.h>
-               #ifdef __GNU_LIBRARY__
-                #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 35) || (__GLIBC__ > 
2)
-                 Lucky user
-                #endif
-               #endif
-               ],
-               [gl_cv_func_printf_directive_uppercase_b="guessing yes"],
-               [gl_cv_func_printf_directive_uppercase_b="guessing no"])
-             ;;
-                               # Guess no on musl systems.
-           *-musl* | midipix*) gl_cv_func_printf_directive_b="guessing no";;
-                               # Guess no on Android.
-           linux*-android*)    gl_cv_func_printf_directive_b="guessing no";;
-                               # Guess no on native Windows.
-           mingw*)             gl_cv_func_printf_directive_b="guessing no";;
-                               # If we don't know, obey --enable-cross-guesses.
-           *)                  
gl_cv_func_printf_directive_b="$gl_cross_guess_normal";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports the 'B' conversion
-dnl specifier for binary output of integers.
-dnl (GNU, encouraged by ISO C23 § 7.23.6.1)
-dnl Result is gl_cv_func_printf_directive_uppercase_b.
-
-AC_DEFUN([gl_PRINTF_DIRECTIVE_UPPERCASE_B],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the 'B' directive],
-    [gl_cv_func_printf_directive_uppercase_b],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static char buf[100];
-int main ()
-{
-  int result = 0;
-  if (sprintf (buf, "%#B %d", 12345, 33, 44, 55) < 0
-      || strcmp (buf, "0B11000000111001 33") != 0)
-    result |= 1;
-  return result;
-}]])],
-        [gl_cv_func_printf_directive_uppercase_b=yes],
-        [gl_cv_func_printf_directive_uppercase_b=no],
-        [
-         case "$host_os" in
-                               # Guess yes on glibc >= 2.35 systems.
-           *-gnu* | gnu*)
-             AC_EGREP_CPP([Lucky], [
-               #include <features.h>
-               #ifdef __GNU_LIBRARY__
-                #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 35) || (__GLIBC__ > 
2)
-                 Lucky user
-                #endif
-               #endif
-               ],
-               [gl_cv_func_printf_directive_uppercase_b="guessing yes"],
-               [gl_cv_func_printf_directive_uppercase_b="guessing no"])
-             ;;
-                               # Guess no on musl systems.
-           *-musl* | midipix*) 
gl_cv_func_printf_directive_uppercase_b="guessing no";;
-                               # Guess no on Android.
-           linux*-android*)    
gl_cv_func_printf_directive_uppercase_b="guessing no";;
-                               # Guess no on native Windows.
-           mingw*)             
gl_cv_func_printf_directive_uppercase_b="guessing no";;
-                               # If we don't know, obey --enable-cross-guesses.
-           *)                  
gl_cv_func_printf_directive_uppercase_b="$gl_cross_guess_normal";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports the %F format
-dnl directive. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_directive_f.
-
-AC_DEFUN([gl_PRINTF_DIRECTIVE_F],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the 'F' directive],
-    [gl_cv_func_printf_directive_f],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static char buf[100];
-static double zero = 0.0;
-int main ()
-{
-  int result = 0;
-  if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0
-      || strcmp (buf, "1234567.000000 33") != 0)
-    result |= 1;
-  if (sprintf (buf, "%F", 1.0 / zero) < 0
-      || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
-    result |= 2;
-  /* This catches a Cygwin 1.5.x bug.  */
-  if (sprintf (buf, "%.F", 1234.0) < 0
-      || strcmp (buf, "1234") != 0)
-    result |= 4;
-  return result;
-}]])],
-        [gl_cv_func_printf_directive_f=yes],
-        [gl_cv_func_printf_directive_f=no],
-        [
-         case "$host_os" in
-changequote(,)dnl
-                                 # Guess yes on glibc systems.
-           *-gnu* | gnu*)        gl_cv_func_printf_directive_f="guessing yes";;
-                                 # Guess yes on musl systems.
-           *-musl* | midipix*)   gl_cv_func_printf_directive_f="guessing yes";;
-                                 # Guess yes on FreeBSD >= 6.
-           freebsd[1-5].*)       gl_cv_func_printf_directive_f="guessing no";;
-           freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";;
-           midnightbsd*)         gl_cv_func_printf_directive_f="guessing yes";;
-                                 # Guess yes on Mac OS X >= 10.3.
-           darwin[1-6].*)        gl_cv_func_printf_directive_f="guessing no";;
-           darwin*)              gl_cv_func_printf_directive_f="guessing yes";;
-                                 # Guess yes on OpenBSD >= 6.0.
-           openbsd[1-5].*)       gl_cv_func_printf_directive_f="guessing no";;
-           openbsd*)             gl_cv_func_printf_directive_f="guessing yes";;
-                                 # Guess yes on Solaris >= 2.10.
-           solaris2.[1-9][0-9]*) gl_cv_func_printf_directive_f="guessing yes";;
-           solaris*)             gl_cv_func_printf_directive_f="guessing no";;
-                                 # Guess no on Android.
-           linux*-android*)      gl_cv_func_printf_directive_f="guessing no";;
-changequote([,])dnl
-                                 # Guess yes on MSVC, no on mingw.
-           mingw*)               AC_EGREP_CPP([Known], [
-#ifdef _MSC_VER
- Known
-#endif
-                                   ],
-                                   [gl_cv_func_printf_directive_f="guessing 
yes"],
-                                   [gl_cv_func_printf_directive_f="guessing 
no"])
-                                 ;;
-                                 # If we don't know, obey 
--enable-cross-guesses.
-           *)                    
gl_cv_func_printf_directive_f="$gl_cross_guess_normal";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports the %n format
-dnl directive. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_directive_n.
-
-AC_DEFUN([gl_PRINTF_DIRECTIVE_N],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the 'n' directive],
-    [gl_cv_func_printf_directive_n],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifdef _MSC_VER
-#include <inttypes.h>
-/* See page about "Parameter Validation" on msdn.microsoft.com.
-   
<https://docs.microsoft.com/en-us/cpp/c-runtime-library/parameter-validation>
-   
<https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/set-invalid-parameter-handler-set-thread-local-invalid-parameter-handler>
  */
-static void cdecl
-invalid_parameter_handler (const wchar_t *expression,
-                           const wchar_t *function,
-                           const wchar_t *file, unsigned int line,
-                           uintptr_t dummy)
-{
-  exit (1);
-}
-#endif
-static char fmtstring[10];
-static char buf[100];
-int main ()
-{
-  int count = -1;
-#ifdef _MSC_VER
-  _set_invalid_parameter_handler (invalid_parameter_handler);
-#endif
-  /* Copy the format string.  Some systems (glibc with _FORTIFY_SOURCE=2)
-     support %n in format strings in read-only memory but not in writable
-     memory.  */
-  strcpy (fmtstring, "%d %n");
-  if (sprintf (buf, fmtstring, 123, &count, 33, 44, 55) < 0
-      || strcmp (buf, "123 ") != 0
-      || count != 4)
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_printf_directive_n=yes],
-        [gl_cv_func_printf_directive_n=no],
-        [case "$host_os" in
-                            # Guess no on glibc when _FORTIFY_SOURCE >= 2.
-           *-gnu* | gnu*)   AC_COMPILE_IFELSE(
-                              [AC_LANG_SOURCE(
-                                 [[#if _FORTIFY_SOURCE >= 2
-                                    error fail
-                                   #endif
-                                 ]])],
-                              [gl_cv_func_printf_directive_n="guessing yes"],
-                              [gl_cv_func_printf_directive_n="guessing no"])
-                            ;;
-                            # Guess no on Android.
-           linux*-android*) gl_cv_func_printf_directive_n="guessing no";;
-                            # Guess no on native Windows.
-           mingw*)          gl_cv_func_printf_directive_n="guessing no";;
-           *)               gl_cv_func_printf_directive_n="guessing yes";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports the %ls format
-dnl directive and in particular, when a precision is specified, whether
-dnl the functions stop converting the wide string argument when the number
-dnl of bytes that have been produced by this conversion equals or exceeds
-dnl the precision.
-dnl Result is gl_cv_func_printf_directive_ls.
-
-AC_DEFUN([gl_PRINTF_DIRECTIVE_LS],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the 'ls' directive],
-    [gl_cv_func_printf_directive_ls],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <wchar.h>
-#include <string.h>
-int main ()
-{
-  int result = 0;
-  char buf[100];
-  /* Test whether %ls works at all.
-     This test fails on OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Haiku, but not on
-     Cygwin 1.5.  */
-  {
-    static const wchar_t wstring[] = { 'a', 'b', 'c', 0 };
-    buf[0] = '\0';
-    if (sprintf (buf, "%ls", wstring) < 0
-        || strcmp (buf, "abc") != 0)
-      result |= 1;
-  }
-  /* This test fails on IRIX 6.5, Solaris 2.6, Cygwin 1.5, Haiku (with an
-     assertion failure inside libc), but not on OpenBSD 4.0.  */
-  {
-    static const wchar_t wstring[] = { 'a', 0 };
-    buf[0] = '\0';
-    if (sprintf (buf, "%ls", wstring) < 0
-        || strcmp (buf, "a") != 0)
-      result |= 2;
-  }
-  /* Test whether precisions in %ls are supported as specified in ISO C 99
-     section 7.19.6.1:
-       "If a precision is specified, no more than that many bytes are written
-        (including shift sequences, if any), and the array shall contain a
-        null wide character if, to equal the multibyte character sequence
-        length given by the precision, the function would need to access a
-        wide character one past the end of the array."
-     This test fails on Solaris 10.  */
-  {
-    static const wchar_t wstring[] = { 'a', 'b', (wchar_t) 0xfdfdfdfd, 0 };
-    buf[0] = '\0';
-    if (sprintf (buf, "%.2ls", wstring) < 0
-        || strcmp (buf, "ab") != 0)
-      result |= 8;
-  }
-  return result;
-}]])],
-        [gl_cv_func_printf_directive_ls=yes],
-        [gl_cv_func_printf_directive_ls=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                            # Guess yes on OpenBSD >= 6.0.
-           openbsd[1-5].*)  gl_cv_func_printf_directive_ls="guessing no";;
-           openbsd*)        gl_cv_func_printf_directive_ls="guessing yes";;
-           irix*)           gl_cv_func_printf_directive_ls="guessing no";;
-           solaris*)        gl_cv_func_printf_directive_ls="guessing no";;
-           cygwin*)         gl_cv_func_printf_directive_ls="guessing no";;
-           beos* | haiku*)  gl_cv_func_printf_directive_ls="guessing no";;
-                            # Guess no on Android.
-           linux*-android*) gl_cv_func_printf_directive_ls="guessing no";;
-                            # Guess yes on native Windows.
-           mingw*)          gl_cv_func_printf_directive_ls="guessing yes";;
-           *)               gl_cv_func_printf_directive_ls="guessing yes";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports the %lc format
-dnl directive and in particular, when the argument is a null wide character,
-dnl whether the functions don't produce a NUL byte.
-dnl Result is gl_cv_func_printf_directive_lc.
-
-AC_DEFUN([gl_PRINTF_DIRECTIVE_LC],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the 'lc' directive correctly],
-    [gl_cv_func_printf_directive_lc],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <wchar.h>
-#include <string.h>
-int main ()
-{
-  int result = 0;
-  char buf[100];
-  /* This test fails on glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2,
-     macOS 12.5, AIX 7.2, Solaris 11.4.
-     glibc 2.35 bug: <https://sourceware.org/bugzilla/show_bug.cgi?id=30257>  
*/
-  {
-    buf[0] = '\0';
-    if (sprintf (buf, "%lc%lc%lc", (wint_t) 'a', (wint_t) 0, (wint_t) 'z') < 0
-        || strcmp (buf, "az") != 0)
-      result |= 1;
-  }
-  return result;
-}]])],
-        [gl_cv_func_printf_directive_lc=yes],
-        [gl_cv_func_printf_directive_lc=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                               # Guess yes on musl libc.
-           *-musl* | midipix*) gl_cv_func_printf_directive_lc="guessing yes";;
-                               # Guess no otherwise.
-           *)                  gl_cv_func_printf_directive_lc="guessing no";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports POSIX/XSI format
-dnl strings with positions. (POSIX:2001)
-dnl Result is gl_cv_func_printf_positions.
-
-AC_DEFUN_ONCE([gl_PRINTF_POSITIONS],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports POSIX/XSI format strings with 
positions],
-    [gl_cv_func_printf_positions],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-/* The string "%2$d %1$d", with dollar characters protected from the shell's
-   dollar expansion (possibly an autoconf bug).  */
-static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
-static char buf[100];
-int main ()
-{
-  sprintf (buf, format, 33, 55);
-  return (strcmp (buf, "55 33") != 0);
-}]])],
-        [gl_cv_func_printf_positions=yes],
-        [gl_cv_func_printf_positions=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-           netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | 
netbsdcoff[1-3]*)
-                            gl_cv_func_printf_positions="guessing no";;
-           beos*)           gl_cv_func_printf_positions="guessing no";;
-                            # Guess yes on Android.
-           linux*-android*) gl_cv_func_printf_positions="guessing yes";;
-                            # Guess no on native Windows.
-           mingw* | pw*)    gl_cv_func_printf_positions="guessing no";;
-           *)               gl_cv_func_printf_positions="guessing yes";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports POSIX/XSI format
-dnl strings with the ' flag for grouping of decimal digits. (POSIX:2001)
-dnl Result is gl_cv_func_printf_flag_grouping.
-
-AC_DEFUN([gl_PRINTF_FLAG_GROUPING],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the grouping flag],
-    [gl_cv_func_printf_flag_grouping],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static char buf[100];
-int main ()
-{
-  if (sprintf (buf, "%'d %d", 1234567, 99) < 0
-      || buf[strlen (buf) - 1] != '9')
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_printf_flag_grouping=yes],
-        [gl_cv_func_printf_flag_grouping=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-           cygwin*)         gl_cv_func_printf_flag_grouping="guessing no";;
-           netbsd*)         gl_cv_func_printf_flag_grouping="guessing no";;
-                            # Guess no on Android.
-           linux*-android*) gl_cv_func_printf_flag_grouping="guessing no";;
-                            # Guess no on native Windows.
-           mingw* | pw*)    gl_cv_func_printf_flag_grouping="guessing no";;
-           *)               gl_cv_func_printf_flag_grouping="guessing yes";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports the - flag correctly.
-dnl (ISO C99.) See
-dnl <https://lists.gnu.org/r/bug-coreutils/2008-02/msg00035.html>
-dnl Result is gl_cv_func_printf_flag_leftadjust.
-
-AC_DEFUN([gl_PRINTF_FLAG_LEFTADJUST],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the left-adjust flag correctly],
-    [gl_cv_func_printf_flag_leftadjust],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static char buf[100];
-int main ()
-{
-  /* Check that a '-' flag is not annihilated by a negative width.  */
-  if (sprintf (buf, "a%-*sc", -3, "b") < 0
-      || strcmp (buf, "ab  c") != 0)
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_printf_flag_leftadjust=yes],
-        [gl_cv_func_printf_flag_leftadjust=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                            # Guess yes on HP-UX 11.
-           hpux11*)         gl_cv_func_printf_flag_leftadjust="guessing yes";;
-                            # Guess no on HP-UX 10 and older.
-           hpux*)           gl_cv_func_printf_flag_leftadjust="guessing no";;
-                            # Guess yes on Android.
-           linux*-android*) gl_cv_func_printf_flag_leftadjust="guessing yes";;
-                            # Guess yes on native Windows.
-           mingw*)          gl_cv_func_printf_flag_leftadjust="guessing yes";;
-                            # Guess yes otherwise.
-           *)               gl_cv_func_printf_flag_leftadjust="guessing yes";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports padding of non-finite
-dnl values with the 0 flag correctly. (ISO C99 + TC1 + TC2.) See
-dnl <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html>
-dnl Result is gl_cv_func_printf_flag_zero.
-
-AC_DEFUN([gl_PRINTF_FLAG_ZERO],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the zero flag correctly],
-    [gl_cv_func_printf_flag_zero],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static char buf[100];
-static double zero = 0.0;
-int main ()
-{
-  if (sprintf (buf, "%010f", 1.0 / zero, 33, 44, 55) < 0
-      || (strcmp (buf, "       inf") != 0
-          && strcmp (buf, "  infinity") != 0))
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_printf_flag_zero=yes],
-        [gl_cv_func_printf_flag_zero=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                               # Guess yes on glibc systems.
-           *-gnu* | gnu*)      gl_cv_func_printf_flag_zero="guessing yes";;
-                               # Guess yes on musl systems.
-           *-musl* | midipix*) gl_cv_func_printf_flag_zero="guessing yes";;
-                               # Guess yes on BeOS.
-           beos*)              gl_cv_func_printf_flag_zero="guessing yes";;
-                               # Guess no on Android.
-           linux*-android*)    gl_cv_func_printf_flag_zero="guessing no";;
-                               # Guess no on native Windows.
-           mingw*)             gl_cv_func_printf_flag_zero="guessing no";;
-                               # If we don't know, obey --enable-cross-guesses.
-           *)                  
gl_cv_func_printf_flag_zero="$gl_cross_guess_normal";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports large precisions.
-dnl On mingw, precisions larger than 512 are treated like 512, in integer,
-dnl floating-point or pointer output. On Solaris 10/x86, precisions larger
-dnl than 510 in floating-point output crash the program. On Solaris 10/SPARC,
-dnl precisions larger than 510 in floating-point output yield wrong results.
-dnl On AIX 7.1, precisions larger than 998 in floating-point output yield
-dnl wrong results. On BeOS, precisions larger than 1044 crash the program.
-dnl Result is gl_cv_func_printf_precision.
-
-AC_DEFUN([gl_PRINTF_PRECISION],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports large precisions],
-    [gl_cv_func_printf_precision],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static char buf[5000];
-int main ()
-{
-  int result = 0;
-#ifdef __BEOS__
-  /* On BeOS, this would crash and show a dialog box.  Avoid the crash.  */
-  return 1;
-#endif
-  if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3)
-    result |= 1;
-  if (sprintf (buf, "%.4000f %d", 1.0, 33, 44) < 4000 + 5)
-    result |= 2;
-  if (sprintf (buf, "%.511f %d", 1.0, 33, 44) < 511 + 5
-      || buf[0] != '1')
-    result |= 4;
-  if (sprintf (buf, "%.999f %d", 1.0, 33, 44) < 999 + 5
-      || buf[0] != '1')
-    result |= 4;
-  return result;
-}]])],
-        [gl_cv_func_printf_precision=yes],
-        [gl_cv_func_printf_precision=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-           # Guess no only on Solaris, native Windows, and BeOS systems.
-           solaris*)        gl_cv_func_printf_precision="guessing no" ;;
-           mingw* | pw*)    gl_cv_func_printf_precision="guessing no" ;;
-           beos*)           gl_cv_func_printf_precision="guessing no" ;;
-                            # Guess yes on Android.
-           linux*-android*) gl_cv_func_printf_precision="guessing yes" ;;
-           *)               gl_cv_func_printf_precision="guessing yes" ;;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions recovers gracefully in case
-dnl of an out-of-memory condition, or whether it crashes the entire program.
-dnl Result is gl_cv_func_printf_enomem.
-
-AC_DEFUN([gl_PRINTF_ENOMEM],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gl_MULTIARCH])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf survives out-of-memory conditions],
-    [gl_cv_func_printf_enomem],
-    [
-      gl_cv_func_printf_enomem="guessing no"
-      if test "$cross_compiling" = no; then
-        if test $APPLE_UNIVERSAL_BUILD = 0; then
-          AC_LANG_CONFTEST([AC_LANG_SOURCE([[
-]GL_NOCRASH[
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <errno.h>
-int main()
-{
-  struct rlimit limit;
-  int ret;
-  nocrash_init ();
-  /* Some printf implementations allocate temporary space with malloc.  */
-  /* On BSD systems, malloc() is limited by RLIMIT_DATA.  */
-#ifdef RLIMIT_DATA
-  if (getrlimit (RLIMIT_DATA, &limit) < 0)
-    return 77;
-  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
-    limit.rlim_max = 5000000;
-  limit.rlim_cur = limit.rlim_max;
-  if (setrlimit (RLIMIT_DATA, &limit) < 0)
-    return 77;
-#endif
-  /* On Linux systems, malloc() is limited by RLIMIT_AS.  */
-#ifdef RLIMIT_AS
-  if (getrlimit (RLIMIT_AS, &limit) < 0)
-    return 77;
-  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
-    limit.rlim_max = 5000000;
-  limit.rlim_cur = limit.rlim_max;
-  if (setrlimit (RLIMIT_AS, &limit) < 0)
-    return 77;
-#endif
-  /* Some printf implementations allocate temporary space on the stack.  */
-#ifdef RLIMIT_STACK
-  if (getrlimit (RLIMIT_STACK, &limit) < 0)
-    return 77;
-  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
-    limit.rlim_max = 5000000;
-  limit.rlim_cur = limit.rlim_max;
-  if (setrlimit (RLIMIT_STACK, &limit) < 0)
-    return 77;
-#endif
-  ret = printf ("%.5000000f", 1.0);
-  return !(ret == 5000002 || (ret < 0 && errno == ENOMEM));
-}
-          ]])])
-          if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
-            (./conftest 2>&AS_MESSAGE_LOG_FD
-             result=$?
-             _AS_ECHO_LOG([\$? = $result])
-             if test $result != 0 && test $result != 77; then result=1; fi
-             exit $result
-            ) >/dev/null 2>/dev/null
-            case $? in
-              0) gl_cv_func_printf_enomem="yes" ;;
-              77) gl_cv_func_printf_enomem="guessing no" ;;
-              *) gl_cv_func_printf_enomem="no" ;;
-            esac
-          else
-            gl_cv_func_printf_enomem="guessing no"
-          fi
-          rm -fr conftest*
-        else
-          dnl A universal build on Apple Mac OS X platforms.
-          dnl The result would be 'no' in 32-bit mode and 'yes' in 64-bit mode.
-          dnl But we need a configuration result that is valid in both modes.
-          gl_cv_func_printf_enomem="guessing no"
-        fi
-      fi
-      if test "$gl_cv_func_printf_enomem" = "guessing no"; then
-changequote(,)dnl
-        case "$host_os" in
-                           # Guess yes on glibc systems.
-          *-gnu* | gnu*)   gl_cv_func_printf_enomem="guessing yes";;
-                           # Guess yes on Solaris.
-          solaris*)        gl_cv_func_printf_enomem="guessing yes";;
-                           # Guess yes on AIX.
-          aix*)            gl_cv_func_printf_enomem="guessing yes";;
-                           # Guess yes on HP-UX/hppa.
-          hpux*)           case "$host_cpu" in
-                             hppa*) gl_cv_func_printf_enomem="guessing yes";;
-                             *)     gl_cv_func_printf_enomem="guessing no";;
-                           esac
-                           ;;
-                           # Guess yes on IRIX.
-          irix*)           gl_cv_func_printf_enomem="guessing yes";;
-                           # Guess yes on OSF/1.
-          osf*)            gl_cv_func_printf_enomem="guessing yes";;
-                           # Guess yes on BeOS.
-          beos*)           gl_cv_func_printf_enomem="guessing yes";;
-                           # Guess yes on Haiku.
-          haiku*)          gl_cv_func_printf_enomem="guessing yes";;
-                           # Guess no on Android.
-          linux*-android*) gl_cv_func_printf_enomem="guessing no";;
-                           # If we don't know, obey --enable-cross-guesses.
-          *)               gl_cv_func_printf_enomem="$gl_cross_guess_normal";;
-        esac
-changequote([,])dnl
-      fi
-    ])
-])
-
-dnl Test whether the snprintf function exists. (ISO C99, POSIX:2001)
-dnl Result is ac_cv_func_snprintf.
-
-AC_DEFUN([gl_SNPRINTF_PRESENCE],
-[
-  AC_CHECK_FUNCS_ONCE([snprintf])
-])
-
-dnl Test whether the string produced by the snprintf function is always NUL
-dnl terminated. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_snprintf_truncation_c99.
-
-AC_DEFUN_ONCE([gl_SNPRINTF_TRUNCATION_C99],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_REQUIRE([gl_SNPRINTF_PRESENCE])
-  AC_CACHE_CHECK([whether snprintf truncates the result as in C99],
-    [gl_cv_func_snprintf_truncation_c99],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-#if HAVE_SNPRINTF
-# define my_snprintf snprintf
-#else
-# include <stdarg.h>
-static int my_snprintf (char *buf, int size, const char *format, ...)
-{
-  va_list args;
-  int ret;
-  va_start (args, format);
-  ret = vsnprintf (buf, size, format, args);
-  va_end (args);
-  return ret;
-}
-#endif
-static char buf[100];
-int main ()
-{
-  strcpy (buf, "ABCDEF");
-  my_snprintf (buf, 3, "%d %d", 4567, 89);
-  if (memcmp (buf, "45\0DEF", 6) != 0)
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_snprintf_truncation_c99=yes],
-        [gl_cv_func_snprintf_truncation_c99=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                                 # Guess yes on glibc systems.
-           *-gnu* | gnu*)        gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on musl systems.
-           *-musl* | midipix*)   gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on FreeBSD >= 5.
-           freebsd[1-4].*)       gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-           freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-           midnightbsd*)         gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on Mac OS X >= 10.3.
-           darwin[1-6].*)        gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-           darwin*)              gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on OpenBSD >= 3.9.
-           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
-                                 gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-           openbsd*)             gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on Solaris >= 2.6.
-           solaris2.[0-5] | solaris2.[0-5].*)
-                                 gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-           solaris*)             gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on AIX >= 4.
-           aix[1-3]*)            gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-           aix*)                 gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on HP-UX >= 11.
-           hpux[7-9]* | hpux10*) gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-           hpux*)                gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on IRIX >= 6.5.
-           irix6.5)              gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on OSF/1 >= 5.
-           osf[3-4]*)            gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-           osf*)                 gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on NetBSD >= 3.
-           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | 
netbsdcoff[1-2]*)
-                                 gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-           netbsd*)              gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on BeOS.
-           beos*)                gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on Android.
-           linux*-android*)      gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess no on native Windows.
-           mingw*)               gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-                                 # If we don't know, obey 
--enable-cross-guesses.
-           *)                    
gl_cv_func_snprintf_truncation_c99="$gl_cross_guess_normal";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the return value of the snprintf function is the number
-dnl of bytes (excluding the terminating NUL) that would have been produced
-dnl if the buffer had been large enough. (ISO C99, POSIX:2001)
-dnl For example, this test program fails on IRIX 6.5:
-dnl     ---------------------------------------------------------------------
-dnl     #include <stdio.h>
-dnl     int main()
-dnl     {
-dnl       static char buf[8];
-dnl       int retval = snprintf (buf, 3, "%d", 12345);
-dnl       return retval >= 0 && retval < 3;
-dnl     }
-dnl     ---------------------------------------------------------------------
-dnl Result is gl_cv_func_snprintf_retval_c99.
-
-AC_DEFUN_ONCE([gl_SNPRINTF_RETVAL_C99],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_REQUIRE([gl_SNPRINTF_PRESENCE])
-  AC_CACHE_CHECK([whether snprintf returns a byte count as in C99],
-    [gl_cv_func_snprintf_retval_c99],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-#if HAVE_SNPRINTF
-# define my_snprintf snprintf
-#else
-# include <stdarg.h>
-static int my_snprintf (char *buf, int size, const char *format, ...)
-{
-  va_list args;
-  int ret;
-  va_start (args, format);
-  ret = vsnprintf (buf, size, format, args);
-  va_end (args);
-  return ret;
-}
-#endif
-static char buf[100];
-int main ()
-{
-  strcpy (buf, "ABCDEF");
-  if (my_snprintf (buf, 3, "%d %d", 4567, 89) != 7)
-    return 1;
-  if (my_snprintf (buf, 0, "%d %d", 4567, 89) != 7)
-    return 2;
-  if (my_snprintf (NULL, 0, "%d %d", 4567, 89) != 7)
-    return 3;
-  return 0;
-}]])],
-        [gl_cv_func_snprintf_retval_c99=yes],
-        [gl_cv_func_snprintf_retval_c99=no],
-        [case "$host_os" in
-changequote(,)dnl
-                                 # Guess yes on glibc systems.
-           *-gnu* | gnu*)        gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-                                 # Guess yes on musl systems.
-           *-musl* | midipix*)   gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-                                 # Guess yes on FreeBSD >= 5.
-           freebsd[1-4].*)       gl_cv_func_snprintf_retval_c99="guessing no";;
-           freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-           midnightbsd*)         gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-                                 # Guess yes on Mac OS X >= 10.3.
-           darwin[1-6].*)        gl_cv_func_snprintf_retval_c99="guessing no";;
-           darwin*)              gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-                                 # Guess yes on OpenBSD >= 3.9.
-           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
-                                 gl_cv_func_snprintf_retval_c99="guessing no";;
-           openbsd*)             gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-                                 # Guess yes on Solaris >= 2.10.
-           solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";;
-           solaris*)             gl_cv_func_printf_sizes_c99="guessing no";;
-                                 # Guess yes on AIX >= 4.
-           aix[1-3]*)            gl_cv_func_snprintf_retval_c99="guessing no";;
-           aix*)                 gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-                                 # Guess yes on NetBSD >= 3.
-           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | 
netbsdcoff[1-2]*)
-                                 gl_cv_func_snprintf_retval_c99="guessing no";;
-           netbsd*)              gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-                                 # Guess yes on BeOS.
-           beos*)                gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-                                 # Guess yes on Android.
-           linux*-android*)      gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-changequote([,])dnl
-                                 # Guess yes on MSVC, no on mingw.
-           mingw*)               AC_EGREP_CPP([Known], [
-#ifdef _MSC_VER
- Known
-#endif
-                                   ],
-                                   [gl_cv_func_snprintf_retval_c99="guessing 
yes"],
-                                   [gl_cv_func_snprintf_retval_c99="guessing 
no"])
-                                 ;;
-                                 # If we don't know, obey 
--enable-cross-guesses.
-           *)                    
gl_cv_func_snprintf_retval_c99="$gl_cross_guess_normal";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the snprintf function supports the %n format directive
-dnl also in truncated portions of the format string. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_snprintf_directive_n.
-
-AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_REQUIRE([gl_SNPRINTF_PRESENCE])
-  AC_CACHE_CHECK([whether snprintf fully supports the 'n' directive],
-    [gl_cv_func_snprintf_directive_n],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-#if HAVE_SNPRINTF
-# define my_snprintf snprintf
-#else
-# include <stdarg.h>
-static int my_snprintf (char *buf, int size, const char *format, ...)
-{
-  va_list args;
-  int ret;
-  va_start (args, format);
-  ret = vsnprintf (buf, size, format, args);
-  va_end (args);
-  return ret;
-}
-#endif
-static char fmtstring[10];
-static char buf[100];
-int main ()
-{
-  int count = -1;
-  /* Copy the format string.  Some systems (glibc with _FORTIFY_SOURCE=2)
-     support %n in format strings in read-only memory but not in writable
-     memory.  */
-  strcpy (fmtstring, "%d %n");
-  my_snprintf (buf, 4, fmtstring, 12345, &count, 33, 44, 55);
-  if (count != 6)
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_snprintf_directive_n=yes],
-        [gl_cv_func_snprintf_directive_n=no],
-        [
-         case "$host_os" in
-                                 # Guess no on glibc when _FORTIFY_SOURCE >= 2.
-           *-gnu* | gnu*)        AC_COMPILE_IFELSE(
-                                   [AC_LANG_SOURCE(
-                                      [[#if _FORTIFY_SOURCE >= 2
-                                         error fail
-                                        #endif
-                                      ]])],
-                                   [gl_cv_func_snprintf_directive_n="guessing 
yes"],
-                                   [gl_cv_func_snprintf_directive_n="guessing 
no"])
-                                 ;;
-changequote(,)dnl
-                                 # Guess yes on musl systems.
-           *-musl* | midipix*)   gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess yes on FreeBSD >= 5.
-           freebsd[1-4].*)       gl_cv_func_snprintf_directive_n="guessing 
no";;
-           freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing 
yes";;
-           midnightbsd*)         gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess yes on Mac OS X >= 10.3.
-           darwin[1-6].*)        gl_cv_func_snprintf_directive_n="guessing 
no";;
-           darwin*)              gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess yes on Solaris >= 2.6.
-           solaris2.[0-5] | solaris2.[0-5].*)
-                                 gl_cv_func_snprintf_directive_n="guessing 
no";;
-           solaris*)             gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess yes on AIX >= 4.
-           aix[1-3]*)            gl_cv_func_snprintf_directive_n="guessing 
no";;
-           aix*)                 gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess yes on IRIX >= 6.5.
-           irix6.5)              gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess yes on OSF/1 >= 5.
-           osf[3-4]*)            gl_cv_func_snprintf_directive_n="guessing 
no";;
-           osf*)                 gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess yes on NetBSD >= 3.
-           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | 
netbsdcoff[1-2]*)
-                                 gl_cv_func_snprintf_directive_n="guessing 
no";;
-           netbsd*)              gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess yes on BeOS.
-           beos*)                gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess no on Android.
-           linux*-android*)      gl_cv_func_snprintf_directive_n="guessing 
no";;
-                                 # Guess no on native Windows.
-           mingw*)               gl_cv_func_snprintf_directive_n="guessing 
no";;
-                                 # If we don't know, obey 
--enable-cross-guesses.
-           *)                    
gl_cv_func_snprintf_directive_n="$gl_cross_guess_normal";;
-changequote([,])dnl
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the snprintf function, when passed a size = 1, writes any
-dnl output without bounds in this case, behaving like sprintf. This is the
-dnl case on Linux libc5.
-dnl Result is gl_cv_func_snprintf_size1.
-
-AC_DEFUN([gl_SNPRINTF_SIZE1],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_REQUIRE([gl_SNPRINTF_PRESENCE])
-  AC_CACHE_CHECK([whether snprintf respects a size of 1],
-    [gl_cv_func_snprintf_size1],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#if HAVE_SNPRINTF
-# define my_snprintf snprintf
-#else
-# include <stdarg.h>
-static int my_snprintf (char *buf, int size, const char *format, ...)
-{
-  va_list args;
-  int ret;
-  va_start (args, format);
-  ret = vsnprintf (buf, size, format, args);
-  va_end (args);
-  return ret;
-}
-#endif
-int main()
-{
-  static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
-  my_snprintf (buf, 1, "%d", 12345);
-  return buf[1] != 'E';
-}]])],
-        [gl_cv_func_snprintf_size1=yes],
-        [gl_cv_func_snprintf_size1=no],
-        [case "$host_os" in
-                            # Guess yes on Android.
-           linux*-android*) gl_cv_func_snprintf_size1="guessing yes" ;;
-                            # Guess yes on native Windows.
-           mingw*)          gl_cv_func_snprintf_size1="guessing yes" ;;
-           *)               gl_cv_func_snprintf_size1="guessing yes" ;;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the vsnprintf function, when passed a zero size, produces no
-dnl output. (ISO C99, POSIX:2001)
-dnl For example, snprintf nevertheless writes a NUL byte in this case
-dnl on OSF/1 5.1:
-dnl     ---------------------------------------------------------------------
-dnl     #include <stdio.h>
-dnl     int main()
-dnl     {
-dnl       static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
-dnl       snprintf (buf, 0, "%d", 12345);
-dnl       return buf[0] != 'D';
-dnl     }
-dnl     ---------------------------------------------------------------------
-dnl And vsnprintf writes any output without bounds in this case, behaving like
-dnl vsprintf, on HP-UX 11 and OSF/1 5.1:
-dnl     ---------------------------------------------------------------------
-dnl     #include <stdarg.h>
-dnl     #include <stdio.h>
-dnl     static int my_snprintf (char *buf, int size, const char *format, ...)
-dnl     {
-dnl       va_list args;
-dnl       int ret;
-dnl       va_start (args, format);
-dnl       ret = vsnprintf (buf, size, format, args);
-dnl       va_end (args);
-dnl       return ret;
-dnl     }
-dnl     int main()
-dnl     {
-dnl       static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
-dnl       my_snprintf (buf, 0, "%d", 12345);
-dnl       return buf[0] != 'D';
-dnl     }
-dnl     ---------------------------------------------------------------------
-dnl Result is gl_cv_func_vsnprintf_zerosize_c99.
-
-AC_DEFUN([gl_VSNPRINTF_ZEROSIZE_C99],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether vsnprintf respects a zero size as in C99],
-    [gl_cv_func_vsnprintf_zerosize_c99],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdarg.h>
-#include <stdio.h>
-static int my_snprintf (char *buf, int size, const char *format, ...)
-{
-  va_list args;
-  int ret;
-  va_start (args, format);
-  ret = vsnprintf (buf, size, format, args);
-  va_end (args);
-  return ret;
-}
-int main()
-{
-  static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
-  my_snprintf (buf, 0, "%d", 12345);
-  return buf[0] != 'D';
-}]])],
-        [gl_cv_func_vsnprintf_zerosize_c99=yes],
-        [gl_cv_func_vsnprintf_zerosize_c99=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                                 # Guess yes on glibc systems.
-           *-gnu* | gnu*)        gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on musl systems.
-           *-musl* | midipix*)   gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on FreeBSD >= 5.
-           freebsd[1-4].*)       gl_cv_func_vsnprintf_zerosize_c99="guessing 
no";;
-           freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-           midnightbsd*)         gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on Mac OS X >= 10.3.
-           darwin[1-6].*)        gl_cv_func_vsnprintf_zerosize_c99="guessing 
no";;
-           darwin*)              gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on Cygwin.
-           cygwin*)              gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on Solaris >= 2.6.
-           solaris2.[0-5] | solaris2.[0-5].*)
-                                 gl_cv_func_vsnprintf_zerosize_c99="guessing 
no";;
-           solaris*)             gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on AIX >= 4.
-           aix[1-3]*)            gl_cv_func_vsnprintf_zerosize_c99="guessing 
no";;
-           aix*)                 gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on IRIX >= 6.5.
-           irix6.5)              gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on NetBSD >= 3.
-           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | 
netbsdcoff[1-2]*)
-                                 gl_cv_func_vsnprintf_zerosize_c99="guessing 
no";;
-           netbsd*)              gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on BeOS.
-           beos*)                gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on Android.
-           linux*-android*)      gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on native Windows.
-           mingw* | pw*)         gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # If we don't know, obey 
--enable-cross-guesses.
-           *)                    
gl_cv_func_vsnprintf_zerosize_c99="$gl_cross_guess_normal";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the swprintf function works correctly when it produces output
-dnl that contains null wide characters.
-dnl Result is gl_cv_func_swprintf_works.
-
-AC_DEFUN([gl_SWPRINTF_WORKS],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CHECK_FUNCS_ONCE([swprintf])
-  AC_CACHE_CHECK([whether swprintf works],
-    [gl_cv_func_swprintf_works],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#ifndef __USE_MINGW_ANSI_STDIO
-# define __USE_MINGW_ANSI_STDIO 1
-#endif
-#include <stdio.h>
-#include <wchar.h>
-int main()
-{
-  int result = 0;
-  { /* This test fails on musl libc 1.2.3, FreeBSD, NetBSD, OpenBSD, macOS, 
AIX.  */
-    wchar_t buf[5] = { 0xBEEF, 0xBEEF, 0xBEEF, 0xBEEF, 0xBEEF };
-    int ret = swprintf (buf, 4, L"%cz", '\0');
-    /* Expected result:
-         ret = 2, buf[0] = 0x0, buf[1] = 0x7a, buf[2] = 0x0, buf[3] = 0xbeef
-       musl libc 1.2.3:
-         ret = 2, buf[0] = 0x0, buf[1] = 0x0, buf[2] = 0x0, buf[3] = 0x0
-         Reported at <https://www.openwall.com/lists/musl/2023/03/22/9>.
-       FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2:
-         ret = 2, buf[0] = 0x0, buf[1] = 0xbeef, buf[2] = 0xbeef, buf[3] = 
0xbeef
-     */
-    if (ret < 0 || buf[1] != 'z')
-      result |= 1;
-  }
-  { /* This test fails on mingw.  */
-    wchar_t buf[2];
-    int ret = swprintf (buf, 2, L"%lc", (wint_t)0);
-    /* Expected: ret = 1
-       mingw:    ret = 0
-     */
-    if (ret != 1)
-      result |= 2;
-  }
-  return result;
-}]])],
-        [gl_cv_func_swprintf_works=yes],
-        [gl_cv_func_swprintf_works=no],
-        [case "$host_os" in
-                               # Guess yes on glibc systems.
-           *-gnu* | gnu*)      gl_cv_func_swprintf_works="guessing yes";;
-                               # Guess no on musl systems.
-           *-musl* | midipix*) gl_cv_func_swprintf_works="guessing no";;
-                               # Guess no on FreeBSD, NetBSD, OpenBSD, macOS, 
AIX.
-           freebsd* | midnightbsd* | netbsd* | openbsd* | darwin* | aix*)
-                               gl_cv_func_swprintf_works="guessing no";;
-                               # Guess no on native Windows.
-           mingw* | pw*)       gl_cv_func_swprintf_works="guessing no";;
-                               # If we don't know, obey --enable-cross-guesses.
-           *)                  
gl_cv_func_swprintf_works="$gl_cross_guess_normal";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the *wprintf family of functions supports the 'a' and 'A'
-dnl conversion specifier for hexadecimal output of 'long double' numbers.
-dnl (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_swprintf_directive_la.
-
-AC_DEFUN([gl_SWPRINTF_DIRECTIVE_LA],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether swprintf supports the 'La' and 'LA' directives],
-    [gl_cv_func_swprintf_directive_la],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <wchar.h>
-static wchar_t buf[100];
-int main ()
-{
-  int result = 0;
-  /* This catches a glibc 2.15 and Haiku 2022 bug.  */
-  if (swprintf (buf, sizeof (buf) / sizeof (wchar_t),
-                L"%La %d", 3.1416015625L, 33, 44, 55) < 0
-      || (wcscmp (buf, L"0x1.922p+1 33") != 0
-          && wcscmp (buf, L"0x3.244p+0 33") != 0
-          && wcscmp (buf, L"0x6.488p-1 33") != 0
-          && wcscmp (buf, L"0xc.91p-2 33") != 0))
-    result |= 1;
-  return result;
-}]])],
-        [gl_cv_func_swprintf_directive_la=yes],
-        [gl_cv_func_swprintf_directive_la=no],
-        [case "$host_os" in
-                                 # Guess yes on glibc >= 2.17 systems.
-           *-gnu* | gnu*)
-             AC_EGREP_CPP([Unlucky], [
-               #include <features.h>
-               #ifdef __GNU_LIBRARY__
-                #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16) || (__GLIBC__ > 
2)) && !defined __UCLIBC__
-                 Unlucky
-                #endif
-               #endif
-               ],
-               [gl_cv_func_swprintf_directive_la="guessing yes"],
-               [gl_cv_func_swprintf_directive_la="guessing no"])
-             ;;
-                                 # Guess yes on musl systems.
-           *-musl* | midipix*)   gl_cv_func_swprintf_directive_la="guessing 
yes";;
-                                 # Guess yes on Android.
-           linux*-android*)      gl_cv_func_swprintf_directive_la="guessing 
yes";;
-                                 # Guess no on native Windows.
-           mingw*)               gl_cv_func_swprintf_directive_la="guessing 
no";;
-                                 # If we don't know, obey 
--enable-cross-guesses.
-           *)                    
gl_cv_func_swprintf_directive_la="$gl_cross_guess_normal";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the *wprintf family of functions supports the 'lc' conversion
-dnl specifier for all wide characters.
-dnl (ISO C11, POSIX:2001)
-dnl Result is gl_cv_func_swprintf_directive_lc.
-
-AC_DEFUN([gl_SWPRINTF_DIRECTIVE_LC],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether swprintf supports the 'lc' directive],
-    [gl_cv_func_swprintf_directive_lc],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <wchar.h>
-static wchar_t buf[100];
-static wint_t L_invalid = (wchar_t) 0x76543210;
-int main ()
-{
-  int result = 0;
-  /* This catches a musl libc 1.2.4, Android bug.
-     Reported at <https://www.openwall.com/lists/musl/2023/06/12/3>. */
-  if (swprintf (buf, sizeof (buf) / sizeof (wchar_t),
-                L"%lc %d", L_invalid, 33, 44, 55) < 0)
-    result |= 1;
-  return result;
-}]])],
-        [gl_cv_func_swprintf_directive_lc=yes],
-        [gl_cv_func_swprintf_directive_lc=no],
-        [case "$host_os" in
-                                 # Guess yes on glibc systems.
-           *-gnu* | gnu*)        gl_cv_func_swprintf_directive_lc="guessing 
yes";;
-                                 # Guess no on musl systems.
-           *-musl* | midipix*)   gl_cv_func_swprintf_directive_lc="guessing 
no";;
-                                 # Guess no on Android.
-           linux*-android*)      gl_cv_func_swprintf_directive_lc="guessing 
no";;
-                                 # Guess yes on native Windows.
-           mingw*)               gl_cv_func_swprintf_directive_lc="guessing 
yes";;
-                                 # If we don't know, obey 
--enable-cross-guesses.
-           *)                    
gl_cv_func_swprintf_directive_lc="$gl_cross_guess_normal";;
-         esac
-        ])
-    ])
-])
-
-dnl The results of these tests on various platforms are:
-dnl
-dnl 1 = gl_PRINTF_SIZES_C99
-dnl 2 = gl_PRINTF_SIZES_C23
-dnl 3 = gl_PRINTF_LONG_DOUBLE
-dnl 4 = gl_PRINTF_INFINITE
-dnl 5 = gl_PRINTF_INFINITE_LONG_DOUBLE
-dnl 6 = gl_PRINTF_DIRECTIVE_A
-dnl 7 = gl_PRINTF_DIRECTIVE_B
-dnl 8 = gl_PRINTF_DIRECTIVE_UPPERCASE_B
-dnl 9 = gl_PRINTF_DIRECTIVE_F
-dnl 10 = gl_PRINTF_DIRECTIVE_N
-dnl 11 = gl_PRINTF_DIRECTIVE_LS
-dnl 12 = gl_PRINTF_DIRECTIVE_LC
-dnl 13 = gl_PRINTF_POSITIONS
-dnl 14 = gl_PRINTF_FLAG_GROUPING
-dnl 15 = gl_PRINTF_FLAG_LEFTADJUST
-dnl 16 = gl_PRINTF_FLAG_ZERO
-dnl 17 = gl_PRINTF_PRECISION
-dnl 18 = gl_PRINTF_ENOMEM
-dnl 19 = gl_SNPRINTF_PRESENCE
-dnl 20 = gl_SNPRINTF_TRUNCATION_C99
-dnl 21 = gl_SNPRINTF_RETVAL_C99
-dnl 22 = gl_SNPRINTF_DIRECTIVE_N
-dnl 23 = gl_SNPRINTF_SIZE1
-dnl 24 = gl_VSNPRINTF_ZEROSIZE_C99
-dnl 25 = gl_SWPRINTF_WORKS
-dnl 26 = gl_SWPRINTF_DIRECTIVE_LA
-dnl 27 = gl_SWPRINTF_DIRECTIVE_LC
-dnl
-dnl 1 = checking whether printf supports size specifiers as in C99...
-dnl 2 = checking whether printf supports size specifiers as in C23...
-dnl 3 = checking whether printf supports 'long double' arguments...
-dnl 4 = checking whether printf supports infinite 'double' arguments...
-dnl 5 = checking whether printf supports infinite 'long double' arguments...
-dnl 6 = checking whether printf supports the 'a' and 'A' directives...
-dnl 7 = checking whether printf supports the 'b' directive...
-dnl 8 = checking whether printf supports the 'B' directive...
-dnl 9 = checking whether printf supports the 'F' directive...
-dnl 10 = checking whether printf supports the 'n' directive...
-dnl 11 = checking whether printf supports the 'ls' directive...
-dnl 12 = checking whether printf supports the 'lc' directive correctly...
-dnl 13 = checking whether printf supports POSIX/XSI format strings with 
positions...
-dnl 14 = checking whether printf supports the grouping flag...
-dnl 15 = checking whether printf supports the left-adjust flag correctly...
-dnl 16 = checking whether printf supports the zero flag correctly...
-dnl 17 = checking whether printf supports large precisions...
-dnl 18 = checking whether printf survives out-of-memory conditions...
-dnl 19 = checking for snprintf...
-dnl 20 = checking whether snprintf truncates the result as in C99...
-dnl 21 = checking whether snprintf returns a byte count as in C99...
-dnl 22 = checking whether snprintf fully supports the 'n' directive...
-dnl 23 = checking whether snprintf respects a size of 1...
-dnl 24 = checking whether vsnprintf respects a zero size as in C99...
-dnl 25 = checking whether swprintf works...
-dnl 26 = checking whether swprintf supports the 'La' and 'LA' directives...
-dnl 27 = checking whether swprintf supports the 'lc' directive...
-dnl
-dnl . = yes, # = no.
-dnl
-dnl                                  1  2  3  4  5  6  7  8  9 10 11 12 13 14 
15 16 17 18 19 20 21 22 23 24 25 26 27
-dnl   musl libc 1.2.3                .  #  .  .  .  .  #  #  .  .  .  .  .  .  
.  .  .  .  .  .  .  .  .  .  #  .  #
-dnl   glibc 2.35                     .  #  .  .  .  .  .  .  .  .  .  #  .  .  
.  .  .  .  .  .  .  .  .  .  .  .  .
-dnl   glibc 2.5                      .  #  .  .  .  .  #  #  .  .  .  #  .  .  
.  .  .  .  .  .  .  .  .  .  .  #  .
-dnl   glibc 2.3.6                    .  #  .  .  .  #  #  #  .  .  .  #  .  .  
.  .  .  .  .  .  .  .  .  .  .  #  .
-dnl   FreeBSD 13.0                   .  #  .  .  .  #  #  #  .  .  .  #  .  .  
.  .  .  #  .  .  .  .  .  .  #  .  #
-dnl   FreeBSD 5.4, 6.1               .  #  .  .  .  #  #  #  .  .  .  #  .  .  
.  #  .  #  .  .  .  .  .  .  #  ?  ?
-dnl   Mac OS X 10.13.5               .  #  .  .  #  #  #  #  .  #  .  #  .  .  
.  .  .  .  .  .  .  #  .  .  #  ?  ?
-dnl   Mac OS X 10.5.8                .  #  .  .  #  #  #  #  .  .  .  #  .  .  
.  #  .  .  .  .  .  .  .  .  #  ?  ?
-dnl   Mac OS X 10.3.9                .  #  .  .  .  #  #  #  .  .  .  #  .  .  
.  #  .  #  .  .  .  .  .  .  #  ?  ?
-dnl   OpenBSD 6.0, 6.7               .  #  .  .  .  #  #  #  .  .  .  #  .  .  
.  .  .  #  .  .  .  .  .  .  #  .  #
-dnl   OpenBSD 3.9, 4.0               .  #  .  #  #  #  #  #  #  .  #  #  .  #  
.  #  .  #  .  .  .  .  .  .  #  ?  ?
-dnl   Cygwin 1.7.0 (2009)            .  #  .  .  #  .  #  #  .  .  ?  ?  .  .  
.  .  .  ?  .  .  .  .  .  .  ?  ?  ?
-dnl   Cygwin 1.5.25 (2008)           .  #  .  .  #  #  #  #  .  .  #  ?  .  .  
.  .  .  #  .  .  .  .  .  .  ?  ?  ?
-dnl   Cygwin 1.5.19 (2006)           #  #  .  .  #  #  #  #  #  .  #  ?  .  #  
.  #  #  #  .  .  .  .  .  .  ?  ?  ?
-dnl   Solaris 11.4                   .  #  .  #  #  #  #  #  .  .  #  #  .  .  
.  #  .  .  .  .  .  .  .  .  .  #  .
-dnl   Solaris 11.3                   .  #  .  .  .  #  #  #  .  .  #  #  .  .  
.  .  .  .  .  .  .  .  .  .  .  #  .
-dnl   Solaris 11.0                   .  #  .  #  #  #  #  #  .  .  #  #  .  .  
.  #  .  .  .  .  .  .  .  .  ?  ?  ?
-dnl   Solaris 10                     .  #  .  #  #  #  #  #  .  .  #  #  .  .  
.  #  #  .  .  .  .  .  .  .  .  #  .
-dnl   Solaris 2.6 ... 9              #  #  .  #  #  #  #  #  #  .  #  #  .  .  
.  #  #  .  .  .  #  .  .  .  ?  ?  ?
-dnl   Solaris 2.5.1                  #  #  .  #  #  #  #  #  #  .  #  #  .  .  
.  #  .  .  #  #  #  #  #  #  ?  ?  ?
-dnl   AIX 7.1                        .  #  .  #  #  #  #  #  .  .  .  #  .  .  
.  #  #  .  .  .  .  .  .  .  #  .  .
-dnl   AIX 5.2                        .  #  .  #  #  #  #  #  .  .  .  #  .  .  
.  #  .  .  .  .  .  .  .  .  #  ?  ?
-dnl   AIX 4.3.2, 5.1                 #  #  .  #  #  #  #  #  #  .  .  #  .  .  
.  #  .  .  .  .  #  .  .  .  #  ?  ?
-dnl   HP-UX 11.31                    .  #  .  .  .  #  #  #  .  .  .  ?  .  .  
.  #  .  .  .  .  #  #  .  .  ?  ?  ?
-dnl   HP-UX 11.{00,11,23}            #  #  .  .  .  #  #  #  #  .  .  ?  .  .  
.  #  .  .  .  .  #  #  .  #  ?  ?  ?
-dnl   HP-UX 10.20                    #  #  .  #  .  #  #  #  #  .  ?  ?  .  .  
#  #  .  .  .  .  #  #  ?  #  ?  ?  ?
-dnl   IRIX 6.5                       #  #  .  #  #  #  #  #  #  .  #  #  .  .  
.  #  .  .  .  .  #  .  .  .  #  ?  ?
-dnl   OSF/1 5.1                      #  #  .  #  #  #  #  #  #  .  .  ?  .  .  
.  #  .  .  .  .  #  .  .  #  ?  ?  ?
-dnl   OSF/1 4.0d                     #  #  .  #  #  #  #  #  #  .  .  ?  .  .  
.  #  .  .  #  #  #  #  #  #  ?  ?  ?
-dnl   NetBSD 9.0                     .  #  .  .  .  #  #  #  .  .  .  #  .  .  
.  .  .  .  .  .  .  .  .  .  #  .  #
-dnl   NetBSD 5.0                     .  #  .  .  #  #  #  #  .  .  .  #  .  .  
.  #  .  #  .  .  .  .  .  .  #  ?  ?
-dnl   NetBSD 4.0                     .  #  ?  ?  ?  ?  #  #  ?  .  ?  #  .  ?  
?  ?  ?  ?  .  .  .  ?  ?  ?  #  ?  ?
-dnl   NetBSD 3.0                     .  #  .  .  .  #  #  #  #  .  ?  #  #  #  
?  #  .  #  .  .  .  .  .  .  #  ?  ?
-dnl   Haiku                          .  #  .  .  #  #  #  #  #  .  #  ?  .  .  
.  .  .  ?  .  .  ?  .  .  .  .  #  .
-dnl   BeOS                           #  #  #  .  #  #  #  #  #  .  ?  ?  #  .  
?  .  #  ?  .  .  ?  .  .  .  ?  ?  ?
-dnl   Android 4.3                    .  #  .  #  #  #  #  #  #  #  #  ?  .  #  
.  #  .  #  .  .  .  #  .  .  ?  ?  ?
-dnl   old mingw / msvcrt             #  #  #  #  #  #  #  #  #  .  .  ?  #  #  
.  #  #  ?  .  #  #  #  .  .  #  ?  ?
-dnl   MSVC 9                         #  #  #  #  #  #  #  #  #  #  .  ?  #  #  
.  #  #  ?  #  #  #  #  .  .  #  ?  ?
-dnl   mingw 2009-2011                .  #  #  .  #  .  #  #  .  .  .  ?  #  #  
.  .  .  ?  .  .  .  .  .  .  #  ?  ?
-dnl   mingw-w64 2011                 #  #  #  #  #  #  #  #  #  .  .  ?  #  #  
.  #  #  ?  .  #  #  #  .  .  #  ?  ?
diff --git a/m4/signbit.m4 b/m4/signbit.m4
deleted file mode 100644
index 2fea73f854c..00000000000
--- a/m4/signbit.m4
+++ /dev/null
@@ -1,393 +0,0 @@
-# signbit.m4 serial 21
-dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_SIGNBIT],
-[
-  AC_REQUIRE([gl_MATH_H_DEFAULTS])
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_CACHE_CHECK([for signbit macro], [gl_cv_func_signbit],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <math.h>
-/* If signbit is defined as a function, don't use it, since calling it for
-   'float' or 'long double' arguments would involve conversions.
-   If signbit is not declared at all but exists as a library function, don't
-   use it, since the prototype may not match.
-   If signbit is not declared at all but exists as a compiler built-in, don't
-   use it, since it's preferable to use __builtin_signbit* (no warnings,
-   no conversions).  */
-#ifndef signbit
-# error "signbit should be a macro"
-#endif
-#include <string.h>
-]gl_SIGNBIT_TEST_PROGRAM
-])],
-        [gl_cv_func_signbit=yes],
-        [gl_cv_func_signbit=no],
-        [case "$host_os" in
-                               # Guess yes on glibc systems.
-           *-gnu* | gnu*)      gl_cv_func_signbit="guessing yes" ;;
-                               # Guess yes on musl systems.
-           *-musl* | midipix*) gl_cv_func_signbit="guessing yes" ;;
-                               # Guess yes on native Windows.
-           mingw*)             gl_cv_func_signbit="guessing yes" ;;
-                               # If we don't know, obey --enable-cross-guesses.
-           *)                  gl_cv_func_signbit="$gl_cross_guess_normal" ;;
-         esac
-        ])
-    ])
-  dnl GCC >= 4.0 and clang provide three built-ins for signbit.
-  dnl They can be used without warnings, also in C++, regardless of <math.h>.
-  dnl But they may expand to calls to functions, which may or may not be in
-  dnl libc.
-  AC_CACHE_CHECK([for signbit compiler built-ins],
-    [gl_cv_func_signbit_builtins],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#if (__GNUC__ >= 4) || (__clang_major__ >= 4)
-# define signbit(x) \
-   (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
-    sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
-    __builtin_signbitf (x))
-#else
-# error "signbit should be three compiler built-ins"
-#endif
-#include <string.h>
-]gl_SIGNBIT_TEST_PROGRAM
-])],
-        [gl_cv_func_signbit_builtins=yes],
-        [gl_cv_func_signbit_builtins=no],
-        [case "$host_os" in
-                               # Guess yes on glibc systems.
-           *-gnu* | gnu*)      gl_cv_func_signbit_builtins="guessing yes" ;;
-                               # Guess yes on musl systems.
-           *-musl* | midipix*) gl_cv_func_signbit_builtins="guessing yes" ;;
-                               # Guess yes on mingw, no on MSVC.
-           mingw*)             if test -n "$GCC"; then
-                                 gl_cv_func_signbit_builtins="guessing yes"
-                               else
-                                 gl_cv_func_signbit_builtins="guessing no"
-                               fi
-                               ;;
-                               # If we don't know, obey --enable-cross-guesses.
-           *)                  
gl_cv_func_signbit_builtins="$gl_cross_guess_normal" ;;
-         esac
-        ])
-    ])
-  dnl Use the compiler built-ins whenever possible, because they are more
-  dnl efficient than the system library functions (if they exist).
-  case "$gl_cv_func_signbit_builtins" in
-    *yes)
-      REPLACE_SIGNBIT_USING_BUILTINS=1
-      ;;
-    *)
-      case "$gl_cv_func_signbit" in
-        *yes) ;;
-        *)
-          dnl REPLACE_SIGNBIT=1 makes sure the signbit[fdl] functions get 
built.
-          REPLACE_SIGNBIT=1
-          ;;
-      esac
-      ;;
-  esac
-  dnl On Solaris 10, with CC in C++ mode, signbit is not available although
-  dnl is with cc in C mode. This cannot be worked around by defining
-  dnl _XOPEN_SOURCE=600, because the latter does not work in C++ mode on
-  dnl Solaris 11.0. Therefore use the replacement functions on Solaris.
-  case "$host_os" in
-    solaris*)
-      REPLACE_SIGNBIT=1
-      ;;
-  esac
-  if test $REPLACE_SIGNBIT = 1; then
-    gl_FLOAT_SIGN_LOCATION
-    gl_DOUBLE_SIGN_LOCATION
-    gl_LONG_DOUBLE_SIGN_LOCATION
-    if test "$gl_cv_cc_float_signbit" = unknown; then
-      dnl Test whether copysignf() is declared.
-      AC_CHECK_DECLS([copysignf], , , [[#include <math.h>]])
-      if test "$ac_cv_have_decl_copysignf" = yes; then
-        dnl Test whether copysignf() can be used without libm.
-        AC_CACHE_CHECK([whether copysignf can be used without linking with 
libm],
-          [gl_cv_func_copysignf_no_libm],
-          [
-            AC_LINK_IFELSE(
-              [AC_LANG_PROGRAM(
-                 [[#include <math.h>
-                   float x, y;]],
-                 [[return copysignf (x, y) < 0;]])],
-              [gl_cv_func_copysignf_no_libm=yes],
-              [gl_cv_func_copysignf_no_libm=no])
-          ])
-        if test $gl_cv_func_copysignf_no_libm = yes; then
-          AC_DEFINE([HAVE_COPYSIGNF_IN_LIBC], [1],
-            [Define if the copysignf function is declared in <math.h> and 
available in libc.])
-        fi
-      fi
-    fi
-    if test "$gl_cv_cc_double_signbit" = unknown; then
-      dnl Test whether copysign() is declared.
-      AC_CHECK_DECLS([copysign], , , [[#include <math.h>]])
-      if test "$ac_cv_have_decl_copysign" = yes; then
-        dnl Test whether copysign() can be used without libm.
-        AC_CACHE_CHECK([whether copysign can be used without linking with 
libm],
-          [gl_cv_func_copysign_no_libm],
-          [
-            AC_LINK_IFELSE(
-              [AC_LANG_PROGRAM(
-                 [[#include <math.h>
-                   double x, y;]],
-                 [[return copysign (x, y) < 0;]])],
-              [gl_cv_func_copysign_no_libm=yes],
-              [gl_cv_func_copysign_no_libm=no])
-          ])
-        if test $gl_cv_func_copysign_no_libm = yes; then
-          AC_DEFINE([HAVE_COPYSIGN_IN_LIBC], [1],
-            [Define if the copysign function is declared in <math.h> and 
available in libc.])
-        fi
-      fi
-    fi
-    if test "$gl_cv_cc_long_double_signbit" = unknown; then
-      dnl Test whether copysignl() is declared.
-      AC_CHECK_DECLS([copysignl], , , [[#include <math.h>]])
-      if test "$ac_cv_have_decl_copysignl" = yes; then
-        dnl Test whether copysignl() can be used without libm.
-        AC_CACHE_CHECK([whether copysignl can be used without linking with 
libm],
-          [gl_cv_func_copysignl_no_libm],
-          [
-            AC_LINK_IFELSE(
-              [AC_LANG_PROGRAM(
-                 [[#include <math.h>
-                   long double x, y;]],
-                 [[return copysignl (x, y) < 0;]])],
-              [gl_cv_func_copysignl_no_libm=yes],
-              [gl_cv_func_copysignl_no_libm=no])
-          ])
-        if test $gl_cv_func_copysignl_no_libm = yes; then
-          AC_DEFINE([HAVE_COPYSIGNL_IN_LIBC], [1],
-            [Define if the copysignl function is declared in <math.h> and 
available in libc.])
-        fi
-      fi
-    fi
-  fi
-])
-
-AC_DEFUN([gl_SIGNBIT_TEST_PROGRAM], [[
-/* Global variables.
-   Needed because GCC 4 constant-folds __builtin_signbitl (literal)
-   but cannot constant-fold            __builtin_signbitl (variable).  */
-float vf;
-double vd;
-long double vl;
-int main ()
-{
-/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
-   So we use -p0f and -p0d instead.  */
-float p0f = 0.0f;
-float m0f = -p0f;
-double p0d = 0.0;
-double m0d = -p0d;
-/* On HP-UX 10.20, negating 0.0L does not yield -0.0L.
-   So we use another constant expression instead.
-   But that expression does not work on other platforms, such as when
-   cross-compiling to PowerPC on Mac OS X 10.5.  */
-long double p0l = 0.0L;
-#if defined __hpux || defined __sgi
-long double m0l = -LDBL_MIN * LDBL_MIN;
-#else
-long double m0l = -p0l;
-#endif
-  int result = 0;
-  if (signbit (vf)) /* link check */
-    vf++;
-  {
-    float plus_inf = 1.0f / p0f;
-    float minus_inf = -1.0f / p0f;
-    if (!(!signbit (255.0f)
-          && signbit (-255.0f)
-          && !signbit (p0f)
-          && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f))
-          && !signbit (plus_inf)
-          && signbit (minus_inf)))
-      result |= 1;
-  }
-  if (signbit (vd)) /* link check */
-    vd++;
-  {
-    double plus_inf = 1.0 / p0d;
-    double minus_inf = -1.0 / p0d;
-    if (!(!signbit (255.0)
-          && signbit (-255.0)
-          && !signbit (p0d)
-          && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d))
-          && !signbit (plus_inf)
-          && signbit (minus_inf)))
-      result |= 2;
-  }
-  if (signbit (vl)) /* link check */
-    vl++;
-  {
-    long double plus_inf = 1.0L / p0l;
-    long double minus_inf = -1.0L / p0l;
-    if (signbit (255.0L))
-      result |= 4;
-    if (!signbit (-255.0L))
-      result |= 4;
-    if (signbit (p0l))
-      result |= 8;
-    if (!(memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l)))
-      result |= 16;
-    if (signbit (plus_inf))
-      result |= 32;
-    if (!signbit (minus_inf))
-      result |= 64;
-  }
-  return result;
-}
-]])
-
-AC_DEFUN([gl_FLOAT_SIGN_LOCATION],
-[
-  gl_FLOATTYPE_SIGN_LOCATION([float], [gl_cv_cc_float_signbit], [f], [FLT])
-])
-
-AC_DEFUN([gl_DOUBLE_SIGN_LOCATION],
-[
-  gl_FLOATTYPE_SIGN_LOCATION([double], [gl_cv_cc_double_signbit], [], [DBL])
-])
-
-AC_DEFUN([gl_LONG_DOUBLE_SIGN_LOCATION],
-[
-  gl_FLOATTYPE_SIGN_LOCATION([long double], [gl_cv_cc_long_double_signbit], 
[L], [LDBL])
-])
-
-AC_DEFUN([gl_FLOATTYPE_SIGN_LOCATION],
-[
-  AC_CACHE_CHECK([where to find the sign bit in a '$1'],
-    [$2],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stddef.h>
-#include <stdio.h>
-#define NWORDS \
-  ((sizeof ($1) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-typedef union { $1 value; unsigned int word[NWORDS]; }
-        memory_float;
-static memory_float plus = { 1.0$3 };
-static memory_float minus = { -1.0$3 };
-int main ()
-{
-  size_t j, k, i;
-  unsigned int m;
-  FILE *fp = fopen ("conftest.out", "w");
-  if (fp == NULL)
-    return 1;
-  /* Find the different bit.  */
-  k = 0; m = 0;
-  for (j = 0; j < NWORDS; j++)
-    {
-      unsigned int x = plus.word[j] ^ minus.word[j];
-      if ((x & (x - 1)) || (x && m))
-        {
-          /* More than one bit difference.  */
-          fprintf (fp, "unknown");
-          fclose (fp);
-          return 2;
-        }
-      if (x)
-        {
-          k = j;
-          m = x;
-        }
-    }
-  if (m == 0)
-    {
-      /* No difference.  */
-      fprintf (fp, "unknown");
-      fclose (fp);
-      return 3;
-    }
-  /* Now m = plus.word[k] ^ ~minus.word[k].  */
-  if (plus.word[k] & ~minus.word[k])
-    {
-      /* Oh? The sign bit is set in the positive and cleared in the negative
-         numbers?  */
-      fprintf (fp, "unknown");
-      fclose (fp);
-      return 4;
-    }
-  for (i = 0; ; i++)
-    if ((m >> i) & 1)
-      break;
-  fprintf (fp, "word %d bit %d", (int) k, (int) i);
-  if (fclose (fp) != 0)
-    return 5;
-  return 0;
-}
-        ]])],
-        [$2=`cat conftest.out`],
-        [$2="unknown"],
-        [
-          dnl When cross-compiling, we don't know. It depends on the
-          dnl ABI and compiler version. There are too many cases.
-          $2="unknown"
-        ])
-      rm -f conftest.out
-    ])
-  case "$]$2[" in
-    word*bit*)
-      word=`echo "$]$2[" | sed -e 's/word //' -e 's/ bit.*//'`
-      bit=`echo "$]$2[" | sed -e 's/word.*bit //'`
-      AC_DEFINE_UNQUOTED([$4][_SIGNBIT_WORD], [$word],
-        [Define as the word index where to find the sign of '$1'.])
-      AC_DEFINE_UNQUOTED([$4][_SIGNBIT_BIT], [$bit],
-        [Define as the bit index in the word where to find the sign of '$1'.])
-      ;;
-  esac
-])
-
-# Expands to code that defines a function signbitf(float).
-# It extracts the sign bit of a non-NaN value.
-AC_DEFUN([gl_FLOAT_SIGNBIT_CODE],
-[
-  gl_FLOATTYPE_SIGNBIT_CODE([float], [f], [f])
-])
-
-# Expands to code that defines a function signbitd(double).
-# It extracts the sign bit of a non-NaN value.
-AC_DEFUN([gl_DOUBLE_SIGNBIT_CODE],
-[
-  gl_FLOATTYPE_SIGNBIT_CODE([double], [d], [])
-])
-
-# Expands to code that defines a function signbitl(long double).
-# It extracts the sign bit of a non-NaN value.
-AC_DEFUN([gl_LONG_DOUBLE_SIGNBIT_CODE],
-[
-  gl_FLOATTYPE_SIGNBIT_CODE([long double], [l], [L])
-])
-
-AC_DEFUN([gl_FLOATTYPE_SIGNBIT_CODE],
-[[
-static int
-signbit$2 ($1 value)
-{
-  typedef union { $1 f; unsigned char b[sizeof ($1)]; } float_union;
-  static float_union plus_one = { 1.0$3 };   /* unused bits are zero here */
-  static float_union minus_one = { -1.0$3 }; /* unused bits are zero here */
-  /* Compute the sign bit mask as the XOR of plus_one and minus_one.  */
-  float_union u;
-  unsigned int i;
-  u.f = value;
-  for (i = 0; i < sizeof ($1); i++)
-    if (u.b[i] & (plus_one.b[i] ^ minus_one.b[i]))
-      return 1;
-  return 0;
-}
-]])
diff --git a/m4/size_max.m4 b/m4/size_max.m4
deleted file mode 100644
index 0763366dfc3..00000000000
--- a/m4/size_max.m4
+++ /dev/null
@@ -1,75 +0,0 @@
-# size_max.m4 serial 12
-dnl Copyright (C) 2003, 2005-2006, 2008-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_PREREQ([2.61])
-
-AC_DEFUN([gl_SIZE_MAX],
-[
-  AC_CHECK_HEADERS([stdint.h])
-  dnl First test whether the system already has SIZE_MAX.
-  AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
-    gl_cv_size_max=no
-    AC_EGREP_CPP([Found it], [
-#include <limits.h>
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#ifdef SIZE_MAX
-Found it
-#endif
-], [gl_cv_size_max=yes])
-    if test $gl_cv_size_max != yes; then
-      dnl Define it ourselves. Here we assume that the type 'size_t' is not 
wider
-      dnl than the type 'unsigned long'. Try hard to find a definition that can
-      dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
-      AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
-        [#include <stddef.h>
-#include <limits.h>], [size_t_bits_minus_1=])
-      AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned 
int)],
-        [#include <stddef.h>], [fits_in_uint=])
-      if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
-        if test $fits_in_uint = 1; then
-          dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
-          dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned 
long'.
-          AC_COMPILE_IFELSE(
-            [AC_LANG_PROGRAM(
-               [[#include <stddef.h>
-                 extern size_t foo;
-                 extern unsigned long foo;
-               ]],
-               [[]])],
-            [fits_in_uint=0])
-        fi
-        dnl We cannot use 'expr' to simplify this expression, because 'expr'
-        dnl works only with 'long' integers in the host environment, while we
-        dnl might be cross-compiling from a 32-bit platform to a 64-bit 
platform.
-        if test $fits_in_uint = 1; then
-          gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
-        else
-          gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
-        fi
-      else
-        dnl Shouldn't happen, but who knows...
-        gl_cv_size_max='((size_t)~(size_t)0)'
-      fi
-    fi
-  ])
-  if test "$gl_cv_size_max" != yes; then
-    AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
-      [Define as the maximum value of type 'size_t', if the system doesn't 
define it.])
-  fi
-  dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
-  dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
-  dnl #define by AC_DEFINE_UNQUOTED.
-  AH_VERBATIM([SIZE_MAX],
-[/* Define as the maximum value of type 'size_t', if the system doesn't define
-   it. */
-#ifndef SIZE_MAX
-# undef SIZE_MAX
-#endif])
-])
diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4
deleted file mode 100644
index 70349f6cb21..00000000000
--- a/m4/stdint_h.m4
+++ /dev/null
@@ -1,27 +0,0 @@
-# stdint_h.m4 serial 9
-dnl Copyright (C) 1997-2004, 2006, 2008-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Paul Eggert.
-
-# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
-# doesn't clash with <sys/types.h>, and declares uintmax_t.
-
-AC_DEFUN([gl_AC_HEADER_STDINT_H],
-[
-  AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[#include <sys/types.h>
-            #include <stdint.h>]],
-          [[uintmax_t i = (uintmax_t) -1; return !i;]])],
-       [gl_cv_header_stdint_h=yes],
-       [gl_cv_header_stdint_h=no])])
-  if test $gl_cv_header_stdint_h = yes; then
-    AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
-      [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
-       and declares uintmax_t. ])
-  fi
-])
diff --git a/m4/vasnprintf.m4 b/m4/vasnprintf.m4
deleted file mode 100644
index df87b9e7986..00000000000
--- a/m4/vasnprintf.m4
+++ /dev/null
@@ -1,462 +0,0 @@
-# vasnprintf.m4 serial 50
-dnl Copyright (C) 2002-2004, 2006-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_VASNPRINTF],
-[
-  AC_CHECK_FUNCS_ONCE([vasnprintf])
-  if test $ac_cv_func_vasnprintf = no; then
-    gl_REPLACE_VASNPRINTF
-  fi
-])
-
-AC_DEFUN([gl_REPLACE_VASNPRINTF],
-[
-  AC_CHECK_FUNCS_ONCE([vasnprintf])
-  AC_LIBOBJ([vasnprintf])
-  AC_LIBOBJ([printf-args])
-  AC_LIBOBJ([printf-parse])
-  AC_LIBOBJ([asnprintf])
-  if test $ac_cv_func_vasnprintf = yes; then
-    AC_DEFINE([REPLACE_VASNPRINTF], [1],
-      [Define if vasnprintf exists but is overridden by gnulib.])
-  fi
-  gl_PREREQ_PRINTF_ARGS
-  gl_PREREQ_PRINTF_PARSE
-  gl_PREREQ_VASNPRINTF
-  gl_PREREQ_ASNPRINTF
-])
-
-AC_DEFUN([gl_FUNC_VASNWPRINTF],
-[
-  AC_LIBOBJ([printf-args])
-  gl_PREREQ_PRINTF_ARGS
-  gl_PREREQ_PRINTF_PARSE
-  gl_PREREQ_VASNWPRINTF
-  gl_PREREQ_ASNPRINTF
-])
-
-# Prerequisites of lib/printf-args.h, lib/printf-args.c.
-AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
-[
-  AC_REQUIRE([gt_TYPE_WCHAR_T])
-  AC_REQUIRE([gt_TYPE_WINT_T])
-])
-
-# Prerequisites of lib/printf-parse.h, lib/printf-parse.c.
-# Prerequisites of lib/wprintf-parse.h, lib/wprintf-parse.c.
-AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
-[
-  AC_REQUIRE([gl_FEATURES_H])
-  AC_REQUIRE([gt_TYPE_WCHAR_T])
-  AC_REQUIRE([gt_TYPE_WINT_T])
-  AC_REQUIRE([AC_TYPE_SIZE_T])
-  AC_CHECK_TYPE([ptrdiff_t], ,
-    [AC_DEFINE([ptrdiff_t], [long],
-       [Define as the type of the result of subtracting two pointers, if the 
system doesn't define it.])
-    ])
-  AC_REQUIRE([gt_AC_TYPE_INTMAX_T])
-])
-
-# Prerequisites of lib/vasnprintf.c if !WIDE_CHAR_VERSION.
-AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
-[
-  AC_CHECK_FUNCS([snprintf strnlen wcrtomb])
-  dnl Use the _snprintf function only if it is declared (because on NetBSD it
-  dnl is defined as a weak alias of snprintf; we prefer to use the latter).
-  AC_CHECK_DECLS([_snprintf], , , [[#include <stdio.h>]])
-  dnl We can avoid a lot of code by assuming that snprintf's return value
-  dnl conforms to ISO C99. So check that.
-  AC_REQUIRE([gl_SNPRINTF_RETVAL_C99])
-  case "$gl_cv_func_snprintf_retval_c99" in
-    *yes)
-      AC_DEFINE([HAVE_SNPRINTF_RETVAL_C99], [1],
-        [Define if the return value of the snprintf function is the number of
-         of bytes (excluding the terminating NUL) that would have been produced
-         if the buffer had been large enough.])
-      ;;
-  esac
-  dnl Additionally, the use of %n can be eliminated by assuming that snprintf
-  dnl always produces NUL-terminated strings (no truncation).
-  AC_REQUIRE([gl_SNPRINTF_TRUNCATION_C99])
-  case "$gl_cv_func_snprintf_truncation_c99" in
-    *yes)
-      AC_DEFINE([HAVE_SNPRINTF_TRUNCATION_C99], [1],
-        [Define if the string produced by the snprintf function is always NUL
-         terminated.])
-      ;;
-  esac
-  gl_PREREQ_VASNXPRINTF
-])
-
-# Prerequisites of lib/vasnwprintf.c.
-AC_DEFUN_ONCE([gl_PREREQ_VASNWPRINTF],
-[
-  AC_CHECK_FUNCS_ONCE([swprintf wcsnlen mbrtowc])
-  AC_CHECK_DECLS([_snwprintf], , , [[#include <stdio.h>]])
-  AC_CHECK_DECLS([wcsnlen], , , [[#include <wchar.h>]])
-  gl_SWPRINTF_WORKS
-  case "$gl_cv_func_swprintf_works" in
-    *yes)
-      AC_DEFINE([HAVE_WORKING_SWPRINTF], [1],
-        [Define if the swprintf function works correctly when it produces 
output
-         that contains null wide characters.])
-      ;;
-  esac
-  gl_MBRTOWC_C_LOCALE
-  case "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" in
-    *yes)
-      AC_CACHE_CHECK([whether swprintf in the C locale is free of encoding 
errors],
-        [gl_cv_func_swprintf_C_locale_sans_EILSEQ],
-        [
-          AC_RUN_IFELSE(
-            [AC_LANG_SOURCE([[
-#ifndef __USE_MINGW_ANSI_STDIO
-# define __USE_MINGW_ANSI_STDIO 1
-#endif
-#include <stdio.h>
-#include <wchar.h>
-int main()
-{
-  int result = 0;
-  { /* This test fails on glibc 2.35, musl libc 1.2.4, FreeBSD 13.2, NetBSD 
9.3,
-       OpenBSD 7.2, Cygwin 2.9.0.
-       Reported at <https://www.openwall.com/lists/musl/2023/06/12/2>.  */
-    wchar_t buf[12];
-    int ret = swprintf (buf, 12, L"%c", '\377');
-    if (ret < 0)
-      result |= 1;
-  }
-  return result;
-}]])],
-            [gl_cv_func_swprintf_C_locale_sans_EILSEQ=yes],
-            [gl_cv_func_swprintf_C_locale_sans_EILSEQ=no],
-            [case "$host_os" in
-                                   # Guess no on glibc systems.
-               *-gnu* | gnu*)      
gl_cv_func_swprintf_C_locale_sans_EILSEQ="guessing yes";;
-                                   # Guess no on musl systems.
-               *-musl* | midipix*) 
gl_cv_func_swprintf_C_locale_sans_EILSEQ="guessing no";;
-                                   # If we don't know, obey 
--enable-cross-guesses.
-               *)                  
gl_cv_func_swprintf_C_locale_sans_EILSEQ="$gl_cross_guess_normal";;
-             esac
-            ])
-        ])
-      ;;
-  esac
-  if case "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" in
-       *yes) false ;;
-       *) true ;;
-     esac \
-     || case "$gl_cv_func_swprintf_C_locale_sans_EILSEQ" in
-          *yes) false ;;
-          *) true ;;
-        esac; then
-    AC_DEFINE([NEED_WPRINTF_DIRECTIVE_C], [1],
-      [Define if the vasnwprintf implementation needs special code for
-       the 'c' directive.])
-  fi
-  gl_SWPRINTF_DIRECTIVE_LA
-  case "$gl_cv_func_swprintf_directive_la" in
-    *yes) ;;
-    *)
-      AC_DEFINE([NEED_WPRINTF_DIRECTIVE_LA], [1],
-        [Define if the vasnwprintf implementation needs special code for
-         the 'a' directive with 'long double' arguments.])
-      ;;
-  esac
-  gl_SWPRINTF_DIRECTIVE_LC
-  case "$gl_cv_func_swprintf_directive_lc" in
-    *yes) ;;
-    *)
-      AC_DEFINE([NEED_WPRINTF_DIRECTIVE_LC], [1],
-        [Define if the vasnwprintf implementation needs special code for
-         the 'lc' directive.])
-      ;;
-  esac
-  gl_MUSL_LIBC
-  gl_PREREQ_VASNXPRINTF
-])
-
-# Common prerequisites of lib/vasnprintf.c and lib/vasnwprintf.c.
-AC_DEFUN_ONCE([gl_PREREQ_VASNXPRINTF],
-[
-  AC_REQUIRE([AC_FUNC_ALLOCA])
-  AC_REQUIRE([gt_TYPE_WCHAR_T])
-  AC_REQUIRE([gt_TYPE_WINT_T])
-  AC_CHECK_FUNCS([wcslen])
-  dnl Knowing DBL_EXPBIT0_WORD and DBL_EXPBIT0_BIT enables an optimization
-  dnl in the code for NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE.
-  AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting 'long double'
-# arguments.
-AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE],
-[
-  AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
-  case "$gl_cv_func_printf_long_double" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
-        [Define if the vasnprintf implementation needs special code for
-         'long double' arguments.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'double'
-# arguments.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE],
-[
-  AC_REQUIRE([gl_PRINTF_INFINITE])
-  case "$gl_cv_func_printf_infinite" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_INFINITE_DOUBLE], [1],
-        [Define if the vasnprintf implementation needs special code for
-         infinite 'double' arguments.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'long double'
-# arguments.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE],
-[
-  AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
-  dnl There is no need to set NEED_PRINTF_INFINITE_LONG_DOUBLE if
-  dnl NEED_PRINTF_LONG_DOUBLE is already set.
-  AC_REQUIRE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE])
-  case "$gl_cv_func_printf_long_double" in
-    *yes)
-      case "$gl_cv_func_printf_infinite_long_double" in
-        *yes)
-          ;;
-        *)
-          AC_DEFINE([NEED_PRINTF_INFINITE_LONG_DOUBLE], [1],
-            [Define if the vasnprintf implementation needs special code for
-             infinite 'long double' arguments.])
-          ;;
-      esac
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the 'a' directive.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_A],
-[
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
-  case "$gl_cv_func_printf_directive_a" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], [1],
-        [Define if the vasnprintf implementation needs special code for
-         the 'a' and 'A' directives.])
-      gl_CHECK_FUNCS_ANDROID([nl_langinfo], [[#include <langinfo.h>]])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the 'b' directive.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_B],
-[
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_B])
-  case "$gl_cv_func_printf_directive_b" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_DIRECTIVE_B], [1],
-        [Define if the vasnprintf implementation needs special code for
-         the 'b' directive.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the 'F' directive.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_F],
-[
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
-  case "$gl_cv_func_printf_directive_f" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_DIRECTIVE_F], [1],
-        [Define if the vasnprintf implementation needs special code for
-         the 'F' directive.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the 'ls' directive.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LS],
-[
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
-  case "$gl_cv_func_printf_directive_ls" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_DIRECTIVE_LS], [1],
-        [Define if the vasnprintf implementation needs special code for
-         the 'ls' directive.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the 'lc' directive.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LC],
-[
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_LC])
-  case "$gl_cv_func_printf_directive_lc" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_DIRECTIVE_LC], [1],
-        [Define if the vasnprintf implementation needs special code for
-         the 'lc' directive.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the ' flag.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_GROUPING],
-[
-  AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
-  case "$gl_cv_func_printf_flag_grouping" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_FLAG_GROUPING], [1],
-        [Define if the vasnprintf implementation needs special code for the
-         ' flag.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the '-' flag.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST],
-[
-  AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
-  case "$gl_cv_func_printf_flag_leftadjust" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_FLAG_LEFTADJUST], [1],
-        [Define if the vasnprintf implementation needs special code for the
-         '-' flag.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the 0 flag.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO],
-[
-  AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
-  case "$gl_cv_func_printf_flag_zero" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_FLAG_ZERO], [1],
-        [Define if the vasnprintf implementation needs special code for the
-         0 flag.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting large precisions.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_PRECISION],
-[
-  AC_REQUIRE([gl_PRINTF_PRECISION])
-  case "$gl_cv_func_printf_precision" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_UNBOUNDED_PRECISION], [1],
-        [Define if the vasnprintf implementation needs special code for
-         supporting large precisions without arbitrary bounds.])
-      AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
-        [Define if the vasnprintf implementation needs special code for
-         'double' arguments.])
-      AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
-        [Define if the vasnprintf implementation needs special code for
-         'long double' arguments.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for surviving out-of-memory
-# conditions.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_ENOMEM],
-[
-  AC_REQUIRE([gl_PRINTF_ENOMEM])
-  case "$gl_cv_func_printf_enomem" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_ENOMEM], [1],
-        [Define if the vasnprintf implementation needs special code for
-         surviving out-of-memory conditions.])
-      AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
-        [Define if the vasnprintf implementation needs special code for
-         'double' arguments.])
-      AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
-        [Define if the vasnprintf implementation needs special code for
-         'long double' arguments.])
-      ;;
-  esac
-])
-
-# Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS],
-[
-  AC_REQUIRE([gl_PREREQ_VASNPRINTF])
-  gl_PREREQ_VASNPRINTF_LONG_DOUBLE
-  gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
-  gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
-  gl_PREREQ_VASNPRINTF_DIRECTIVE_A
-  gl_PREREQ_VASNPRINTF_DIRECTIVE_B
-  gl_PREREQ_VASNPRINTF_DIRECTIVE_F
-  gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
-  gl_PREREQ_VASNPRINTF_DIRECTIVE_LC
-  gl_PREREQ_VASNPRINTF_FLAG_GROUPING
-  gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
-  gl_PREREQ_VASNPRINTF_FLAG_ZERO
-  gl_PREREQ_VASNPRINTF_PRECISION
-  gl_PREREQ_VASNPRINTF_ENOMEM
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the 'B' directive.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_UPPERCASE_B],
-[
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_UPPERCASE_B])
-  case "$gl_cv_func_printf_directive_uppercase_b" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_DIRECTIVE_UPPERCASE_B], [1],
-        [Define if the vasnprintf implementation needs special code for
-         the 'B' directive.])
-      ;;
-  esac
-])
-
-# Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance
-# and GNU compatibility.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_GNU_EXTRAS],
-[
-  gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
-  AC_DEFINE([SUPPORT_GNU_PRINTF_DIRECTIVES], [1],
-    [Define if the vasnprintf implementation should support GNU compatible
-     printf directives.])
-  gl_PREREQ_VASNPRINTF_DIRECTIVE_UPPERCASE_B
-])
-
-# Prerequisites of lib/asnprintf.c.
-# Prerequisites of lib/asnwprintf.c.
-AC_DEFUN([gl_PREREQ_ASNPRINTF],
-[
-])
diff --git a/m4/vasprintf-posix.m4 b/m4/vasprintf-posix.m4
deleted file mode 100644
index 3c7a6540bd1..00000000000
--- a/m4/vasprintf-posix.m4
+++ /dev/null
@@ -1,113 +0,0 @@
-# vasprintf-posix.m4 serial 17
-dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_VASPRINTF_POSIX],
-[
-  AC_REQUIRE([gl_FUNC_VASPRINTF_IS_POSIX])
-  if test $gl_cv_func_vasprintf_posix = no; then
-    gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
-    gl_REPLACE_VASNPRINTF
-    gl_REPLACE_VASPRINTF
-  fi
-])
-
-dnl Test whether vasprintf exists and is POSIX compliant.
-dnl Result is gl_cv_func_vasprintf_posix.
-AC_DEFUN([gl_FUNC_VASPRINTF_IS_POSIX],
-[
-  AC_REQUIRE([gl_PRINTF_SIZES_C99])
-  AC_REQUIRE([gl_PRINTF_SIZES_C23])
-  AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
-  AC_REQUIRE([gl_PRINTF_INFINITE])
-  AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_B])
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_LC])
-  AC_REQUIRE([gl_PRINTF_POSITIONS])
-  AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
-  AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
-  AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
-  AC_REQUIRE([gl_PRINTF_PRECISION])
-  AC_REQUIRE([gl_PRINTF_ENOMEM])
-  gl_cv_func_vasprintf_posix=no
-  AC_CHECK_FUNCS([vasprintf])
-  case "$gl_cv_func_printf_sizes_c99" in
-    *yes)
-      case "$gl_cv_func_printf_sizes_c23" in
-        *yes)
-          case "$gl_cv_func_printf_long_double" in
-            *yes)
-              case "$gl_cv_func_printf_infinite" in
-                *yes)
-                  case "$gl_cv_func_printf_infinite_long_double" in
-                    *yes)
-                      case "$gl_cv_func_printf_directive_a" in
-                        *yes)
-                          case "$gl_cv_func_printf_directive_b" in
-                            *yes)
-                              case "$gl_cv_func_printf_directive_f" in
-                                *yes)
-                                  case "$gl_cv_func_printf_directive_n" in
-                                    *yes)
-                                      case "$gl_cv_func_printf_directive_ls" in
-                                        *yes)
-                                          case 
"$gl_cv_func_printf_directive_lc" in
-                                            *yes)
-                                              case 
"$gl_cv_func_printf_positions" in
-                                                *yes)
-                                                  case 
"$gl_cv_func_printf_flag_grouping" in
-                                                    *yes)
-                                                      case 
"$gl_cv_func_printf_flag_leftadjust" in
-                                                        *yes)
-                                                          case 
"$gl_cv_func_printf_flag_zero" in
-                                                            *yes)
-                                                              case 
"$gl_cv_func_printf_precision" in
-                                                                *yes)
-                                                                  case 
"$gl_cv_func_printf_enomem" in
-                                                                    *yes)
-                                                                      if test 
$ac_cv_func_vasprintf = yes; then
-                                                                        # 
vasprintf exists and is
-                                                                        # 
already POSIX compliant.
-                                                                        
gl_cv_func_vasprintf_posix=yes
-                                                                      fi
-                                                                      ;;
-                                                                  esac
-                                                                  ;;
-                                                              esac
-                                                              ;;
-                                                          esac
-                                                          ;;
-                                                      esac
-                                                      ;;
-                                                  esac
-                                                  ;;
-                                              esac
-                                              ;;
-                                          esac
-                                          ;;
-                                      esac
-                                      ;;
-                                  esac
-                                  ;;
-                              esac
-                              ;;
-                          esac
-                          ;;
-                      esac
-                      ;;
-                  esac
-                  ;;
-              esac
-              ;;
-          esac
-          ;;
-      esac
-      ;;
-  esac
-])
diff --git a/m4/vasprintf.m4 b/m4/vasprintf.m4
deleted file mode 100644
index 6e6156a7549..00000000000
--- a/m4/vasprintf.m4
+++ /dev/null
@@ -1,46 +0,0 @@
-# vasprintf.m4 serial 6
-dnl Copyright (C) 2002-2003, 2006-2007, 2009-2023 Free Software Foundation,
-dnl Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_VASPRINTF],
-[
-  AC_CHECK_FUNCS([vasprintf])
-  if test $ac_cv_func_vasprintf = no; then
-    gl_REPLACE_VASPRINTF
-  fi
-])
-
-AC_DEFUN([gl_REPLACE_VASPRINTF],
-[
-  AC_LIBOBJ([vasprintf])
-  AC_LIBOBJ([asprintf])
-  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-  if test $ac_cv_func_vasprintf = yes; then
-    REPLACE_VASPRINTF=1
-  else
-    HAVE_VASPRINTF=0
-  fi
-  gl_PREREQ_VASPRINTF_H
-  gl_PREREQ_VASPRINTF
-  gl_PREREQ_ASPRINTF
-])
-
-# Prerequisites of the vasprintf portion of lib/stdio.h.
-AC_DEFUN([gl_PREREQ_VASPRINTF_H],
-[
-  dnl Persuade glibc <stdio.h> to declare asprintf() and vasprintf().
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-])
-
-# Prerequisites of lib/vasprintf.c.
-AC_DEFUN([gl_PREREQ_VASPRINTF],
-[
-])
-
-# Prerequisites of lib/asprintf.c.
-AC_DEFUN([gl_PREREQ_ASPRINTF],
-[
-])
diff --git a/m4/vfprintf-posix.m4 b/m4/vfprintf-posix.m4
deleted file mode 100644
index 6b51c50adab..00000000000
--- a/m4/vfprintf-posix.m4
+++ /dev/null
@@ -1,122 +0,0 @@
-# vfprintf-posix.m4 serial 18
-dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_VFPRINTF_POSIX],
-[
-  AC_REQUIRE([gl_FUNC_VFPRINTF_IS_POSIX])
-  if test $gl_cv_func_vfprintf_posix = no; then
-    gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
-    gl_REPLACE_VASNPRINTF
-    gl_REPLACE_VFPRINTF
-  fi
-])
-
-dnl Test whether vfprintf is POSIX compliant.
-dnl Result is gl_cv_func_vfprintf_posix.
-AC_DEFUN([gl_FUNC_VFPRINTF_IS_POSIX],
-[
-  AC_REQUIRE([gl_PRINTF_SIZES_C99])
-  AC_REQUIRE([gl_PRINTF_SIZES_C23])
-  AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
-  AC_REQUIRE([gl_PRINTF_INFINITE])
-  AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_B])
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_LC])
-  AC_REQUIRE([gl_PRINTF_POSITIONS])
-  AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
-  AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
-  AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
-  AC_REQUIRE([gl_PRINTF_PRECISION])
-  AC_REQUIRE([gl_PRINTF_ENOMEM])
-  gl_cv_func_vfprintf_posix=no
-  case "$gl_cv_func_printf_sizes_c99" in
-    *yes)
-      case "$gl_cv_func_printf_sizes_c23" in
-        *yes)
-          case "$gl_cv_func_printf_long_double" in
-            *yes)
-              case "$gl_cv_func_printf_infinite" in
-                *yes)
-                  case "$gl_cv_func_printf_infinite_long_double" in
-                    *yes)
-                      case "$gl_cv_func_printf_directive_a" in
-                        *yes)
-                          case "$gl_cv_func_printf_directive_b" in
-                            *yes)
-                              case "$gl_cv_func_printf_directive_f" in
-                                *yes)
-                                  case "$gl_cv_func_printf_directive_n" in
-                                    *yes)
-                                      case "$gl_cv_func_printf_directive_ls" in
-                                        *yes)
-                                          case 
"$gl_cv_func_printf_directive_lc" in
-                                            *yes)
-                                              case 
"$gl_cv_func_printf_positions" in
-                                                *yes)
-                                                  case 
"$gl_cv_func_printf_flag_grouping" in
-                                                    *yes)
-                                                      case 
"$gl_cv_func_printf_flag_leftadjust" in
-                                                        *yes)
-                                                          case 
"$gl_cv_func_printf_flag_zero" in
-                                                            *yes)
-                                                              case 
"$gl_cv_func_printf_precision" in
-                                                                *yes)
-                                                                  case 
"$gl_cv_func_printf_enomem" in
-                                                                    *yes)
-                                                                      # 
vfprintf exists and is
-                                                                      # 
already POSIX compliant.
-                                                                      
gl_cv_func_vfprintf_posix=yes
-                                                                      ;;
-                                                                  esac
-                                                                  ;;
-                                                              esac
-                                                              ;;
-                                                          esac
-                                                          ;;
-                                                      esac
-                                                      ;;
-                                                  esac
-                                                  ;;
-                                              esac
-                                              ;;
-                                          esac
-                                          ;;
-                                      esac
-                                      ;;
-                                  esac
-                                  ;;
-                              esac
-                              ;;
-                          esac
-                          ;;
-                      esac
-                      ;;
-                  esac
-                  ;;
-              esac
-              ;;
-          esac
-          ;;
-      esac
-      ;;
-  esac
-])
-
-AC_DEFUN([gl_REPLACE_VFPRINTF],
-[
-  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-  AC_LIBOBJ([vfprintf])
-  REPLACE_VFPRINTF=1
-  AC_DEFINE([REPLACE_VFPRINTF_POSIX], [1],
-    [Define if vfprintf is overridden by a POSIX compliant gnulib 
implementation.])
-  gl_PREREQ_VFPRINTF
-])
-
-AC_DEFUN([gl_PREREQ_VFPRINTF], [:])
diff --git a/m4/xsize.m4 b/m4/xsize.m4
deleted file mode 100644
index 649db9c5eab..00000000000
--- a/m4/xsize.m4
+++ /dev/null
@@ -1,12 +0,0 @@
-# xsize.m4 serial 5
-dnl Copyright (C) 2003-2004, 2008-2023 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_XSIZE],
-[
-  dnl Prerequisites of lib/xsize.h.
-  AC_REQUIRE([gl_SIZE_MAX])
-  AC_CHECK_HEADERS([stdint.h])
-])
diff --git a/msdos/sedlibmk.inp b/msdos/sedlibmk.inp
index 09f98f8e0a2..4300be47d0b 100644
--- a/msdos/sedlibmk.inp
+++ b/msdos/sedlibmk.inp
@@ -436,7 +436,6 @@ s/= @GL_GENERATE_STDDEF_H_CONDITION@/= 1/
 s/= @GL_GENERATE_STDINT_H_CONDITION@/= 1/
 s/= @GL_GENERATE_LIMITS_H_CONDITION@/= 1/
 s/= @GL_GENERATE_ERRNO_H_CONDITION@/= /
-s/= @GL_GENERATE_FLOAT_H_CONDITION@/= /
 s/= @GL_GENERATE_GETOPT_CDEFS_H_CONDITION@/= 1/
 s/= @GL_GENERATE_GETOPT_H_CONDITION@/= 1/
 s/= @GL_GENERATE_GMP_H_CONDITION@/= 1/
@@ -464,7 +463,6 @@ OMIT_GNULIB_MODULE_euidaccess = true\
 OMIT_GNULIB_MODULE_faccessat = true\
 OMIT_GNULIB_MODULE_fcntl = true\
 OMIT_GNULIB_MODULE_fdopendir = true\
-OMIT_GNULIB_MODULE_float = true\
 OMIT_GNULIB_MODULE_fstatat = true\
 OMIT_GNULIB_MODULE_fsync = true\
 OMIT_GNULIB_MODULE_getline = true\
@@ -480,8 +478,6 @@ OMIT_GNULIB_MODULE_math = true\
 OMIT_GNULIB_MODULE_nanosleep = true\
 OMIT_GNULIB_MODULE_open = true\
 OMIT_GNULIB_MODULE_pipe2 = true\
-OMIT_GNULIB_MODULE_printf-posix = true\
-OMIT_GNULIB_MODULE_printf-frexpl = true\
 OMIT_GNULIB_MODULE_pselect = true\
 OMIT_GNULIB_MODULE_putenv = true\
 OMIT_GNULIB_MODULE_qcopy-acl = true\
@@ -494,7 +490,6 @@ OMIT_GNULIB_MODULE_symlink = true\
 OMIT_GNULIB_MODULE_sys_select = true\
 OMIT_GNULIB_MODULE_sys_time = true\
 OMIT_GNULIB_MODULE_crypto\/md5 = true\
-OMIT_GNULIB_MODULE_vprintf-posix = true
 /^arg-nonnull\.h:/,/^[         ][      ]*mv /c\
 arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h\
        sed -n -e '/GL_ARG_NONNULL/,$$p' < 
$(top_srcdir)/build-aux/snippet/arg-nonnull.h > $@



reply via email to

[Prev in Thread] Current Thread [Next in Thread]